Thread (6 messages) flat view 6 messages, 3 authors, 2012-05-07
STALE5207d

[PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only

From: Raja, Govindraj <hidden>
Date: 2012-05-07 12:22:20
Also in: linux-omap

On Fri, May 4, 2012 at 11:48 PM, Tony Lindgren [off-list ref] wrote:
Hi,

Looking at this again..

* Govindraj.R [off-list ref] [120306 00:34]:
quoted
From: "Govindraj.R" <redacted>

All beagle boards rev > AX/BX have external usb hubs connected to ehci
interface, external hub/peripheral uses a nreset sequence for which
uart2_rx.gpio_147 pin in mux mode4(USB2HS_nRST) is used on all beagle
boards expect rev Ax/BX.
(Reference to all beagle boards rev schematics:
http://beagleboard.org/hardware/design)

Initialising uart2 will lead to serial init taking over uart2_rx pin
so init uart2_rx pin mux only for Beagle AX/BX rev boards.
Dont init uart2 for all other boards allowing usb_ehci functionality.
OK so the above got fixed for the muxing part with commit
bce492c04ba8fc66a4ea0a52b181ba255daaaf54.
quoted
To initialise individual uart port by id utilise and modify the existing
available func. omap_serial_board_init.
This makes sense as board specific fixes.
quoted
--- a/arch/arm/mach-omap2/board-omap3beagle.c
+++ b/arch/arm/mach-omap2/board-omap3beagle.c
@@ -126,6 +126,7 @@ static void __init omap3_beagle_init_rev(void)
? ? ? ? ? ? ? beagle_config.mmc1_gpio_wp = 29;
? ? ? ? ? ? ? beagle_config.reset_gpio = 170;
? ? ? ? ? ? ? beagle_config.usr_button_gpio = 7;
+ ? ? ? ? ? ? omap_serial_board_init(NULL, 1);
? ? ? ? ? ? ? break;
? ? ? case 6:
? ? ? ? ? ? ? printk(KERN_INFO "OMAP3 Beagle Rev: C1/C2/C3\n");
@@ -528,7 +529,10 @@ static void __init omap3_beagle_init(void)
? ? ? platform_add_devices(omap3_beagle_devices,
? ? ? ? ? ? ? ? ? ? ? ARRAY_SIZE(omap3_beagle_devices));
? ? ? omap_display_init(&beagle_dss_data);
- ? ? omap_serial_init();
+ ? ? omap_serial_board_init(NULL, 0);
+ ? ? omap_serial_board_init(NULL, 2);
+ ? ? omap_serial_board_init(NULL, 3);
+
? ? ? omap_sdrc_init(mt46h32m32lf6_sdrc_params,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mt46h32m32lf6_sdrc_params);
So this still looks valid, except now you also add the muxing for the
uart pins instead of NULL? Note that you could define OMAP3_UART1_DEFAULT_PINS
etc in some header.
quoted
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -393,30 +393,32 @@ void __init omap_serial_init_port(struct omap_board_data *bdata,
?/**
? * omap_serial_board_init() - initialize all supported serial ports
? * @info: platform specific data pointer
+ * @port_id: uart port number to be initialised
? *
- * Initializes all available UARTs as serial ports. Platforms
+ * Initializes individual UARTs as serial ports. Platforms
? * can call this function when they want to have default behaviour
- * for serial ports (e.g initialize them all as serial ports).
+ * for serial ports (e.g initialize individual serial ports based on port id).
? */
-void __init omap_serial_board_init(struct omap_uart_port_info *info)
+void __init omap_serial_board_init(struct omap_uart_port_info *info, u8 port_id)
?{
? ? ? struct omap_uart_state *uart;
? ? ? struct omap_board_data bdata;

- ? ? list_for_each_entry(uart, &uart_list, node) {
- ? ? ? ? ? ? bdata.id = uart->num;
- ? ? ? ? ? ? bdata.flags = 0;
- ? ? ? ? ? ? bdata.pads = NULL;
- ? ? ? ? ? ? bdata.pads_cnt = 0;
-
- ? ? ? ? ? ? if (cpu_is_omap44xx() || cpu_is_omap34xx())
- ? ? ? ? ? ? ? ? ? ? omap_serial_fill_default_pads(&bdata);
-
- ? ? ? ? ? ? if (!info)
- ? ? ? ? ? ? ? ? ? ? omap_serial_init_port(&bdata, NULL);
- ? ? ? ? ? ? else
- ? ? ? ? ? ? ? ? ? ? omap_serial_init_port(&bdata, &info[uart->num]);
- ? ? }
+ ? ? list_for_each_entry(uart, &uart_list, node)
+ ? ? ? ? ? ? if (uart->num == port_id) {
+ ? ? ? ? ? ? ? ? ? ? bdata.id = uart->num;
+ ? ? ? ? ? ? ? ? ? ? bdata.flags = 0;
+ ? ? ? ? ? ? ? ? ? ? bdata.pads = NULL;
+ ? ? ? ? ? ? ? ? ? ? bdata.pads_cnt = 0;
+
+ ? ? ? ? ? ? ? ? ? ? if (!cpu_is_omap24xx())
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? omap_serial_fill_default_pads(&bdata);
+
+ ? ? ? ? ? ? ? ? ? ? if (!info)
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? omap_serial_init_port(&bdata, NULL);
+ ? ? ? ? ? ? ? ? ? ? else
+ ? ? ? ? ? ? ? ? ? ? ? ? ? ? omap_serial_init_port(&bdata, info);
+ ? ? ? ? ? ? }
?}
@@ -428,5 +430,8 @@ void __init omap_serial_board_init(struct omap_uart_port_info *info)
? */
?void __init omap_serial_init(void)
?{
- ? ? omap_serial_board_init(NULL);
+ ? ? struct omap_uart_state *uart;
+
+ ? ? list_for_each_entry(uart, &uart_list, node)
+ ? ? ? ? ? ? omap_serial_board_init(NULL, uart->num);
?}
Is this fix still needed? If so, it should probably be a separate fix
with it's own description.
No this one is not needed anymore
since its fixed part of commit
bce492c04ba8fc66a4ea0a52b181ba255daaaf54

--
Thanks,
Govindraj.R
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help