Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
* Raja, Govindraj [120507 05:26]: > On Fri, May 4, 2012 at 11:48 PM, Tony Lindgren wrote: > > > 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 OK thanks for the update. Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
On Fri, May 4, 2012 at 11:48 PM, Tony Lindgren wrote: > Hi, > > Looking at this again.. > > * Govindraj.R [120306 00:34]: >> From: "Govindraj.R" >> >> 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. > >> 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. > >> --- 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. > >> --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info
Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
Hi, Looking at this again.. * Govindraj.R [120306 00:34]: > From: "Govindraj.R" > > 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. > 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. > --- 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. > --- 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. Regards, Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
On Tue, Mar 6, 2012 at 3:38 PM, Tony Lindgren wrote: > * Govindraj.R [120306 00:34]: >> From: "Govindraj.R" >> >> 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. >> >> To initialise individual uart port by id utilise and modify the existing >> available func. omap_serial_board_init. >> >> Cc: Tony Lindgren >> Cc: Kevin Hilman >> Cc: Koen Kooi >> Tested-by: Peter Ujfalusi >> Tested-by: Robert Nelson >> Signed-off-by: Govindraj.R > > Can somebody please test this on non-xm beagle too and > reply with a Tested-by? Here's an update for my: Tested-by: Robert Nelson Just tested with one of my Beagle C4's, (and re-verified the new patch on a xM B) using usb flash drives on the ehci port... beagle c4: v3.2.9 Bus 001 Device 002: ID 0457:0151 Silicon Integrated Systems Corp. Super Flash 1GB / GXT 64MB Flash Drive v3.3-rc6: ehci broken v3.3-rc6 + this patch: Bus 001 Device 002: ID 0457:0151 Silicon Integrated Systems Corp. Super Flash 1GB / GXT 64MB Flash Driv beagle xM B: v3.2.9 Bus 001 Device 004: ID 1977:0824 T-Logic v3.3-rc6: ehci broken v3.3-rc6 + this patch: Bus 001 Device 004: ID 1977:0824 T-Logic Regards, -- Robert Nelson http://www.rcn-ee.com/ -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
* Govindraj.R [120306 00:34]: > From: "Govindraj.R" > > 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. > > To initialise individual uart port by id utilise and modify the existing > available func. omap_serial_board_init. > > Cc: Tony Lindgren > Cc: Kevin Hilman > Cc: Koen Kooi > Tested-by: Peter Ujfalusi > Tested-by: Robert Nelson > Signed-off-by: Govindraj.R Can somebody please test this on non-xm beagle too and reply with a Tested-by? Thanks, Tony > --- > arch/arm/mach-omap2/board-omap3beagle.c |6 +++- > arch/arm/mach-omap2/serial.c | 41 - > arch/arm/plat-omap/include/plat/serial.h |3 +- > 3 files changed, 30 insertions(+), 20 deletions(-) > > diff --git a/arch/arm/mach-omap2/board-omap3beagle.c > b/arch/arm/mach-omap2/board-omap3beagle.c > index 7ffcd28..19d6fb5 100644 > --- 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); > > diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c > index f590afc..e7c0462 100644 > --- 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); > } > diff --git a/arch/arm/plat-omap/include/plat/serial.h > b/arch/arm/plat-omap/include/plat/serial.h > index 198d1e6..043b251 100644 > --- a/arch/arm/
[PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
From: "Govindraj.R" 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. To initialise individual uart port by id utilise and modify the existing available func. omap_serial_board_init. Cc: Tony Lindgren Cc: Kevin Hilman Cc: Koen Kooi Tested-by: Peter Ujfalusi Tested-by: Robert Nelson Signed-off-by: Govindraj.R --- arch/arm/mach-omap2/board-omap3beagle.c |6 +++- arch/arm/mach-omap2/serial.c | 41 - arch/arm/plat-omap/include/plat/serial.h |3 +- 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 7ffcd28..19d6fb5 100644 --- 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); diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index f590afc..e7c0462 100644 --- 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); } diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h index 198d1e6..043b251 100644 --- a/arch/arm/plat-omap/include/plat/serial.h +++ b/arch/arm/plat-omap/include/plat/serial.h @@ -111,7 +111,8 @@ struct omap_uart_port_info; extern void omap_serial_init(void); extern int omap_uart_can_sleep(void); -extern void omap_serial_board_init(struct omap_uart_port_info *platform_data);