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

2012-05-07 Thread Raja, Govindraj
On Fri, May 4, 2012 at 11:48 PM, Tony Lindgren t...@atomide.com wrote:
 Hi,

 Looking at this again..

 * Govindraj.R govindraj.r...@ti.com [120306 00:34]:
 From: Govindraj.R govindraj.r...@ti.com

 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 at  http://vger.kernel.org/majordomo-info.html


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

2012-05-07 Thread Tony Lindgren
* Raja, Govindraj govindraj.r...@ti.com [120507 05:26]:
 On Fri, May 4, 2012 at 11:48 PM, Tony Lindgren t...@atomide.com 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

2012-05-04 Thread Tony Lindgren
Hi,

Looking at this again..

* Govindraj.R govindraj.r...@ti.com [120306 00:34]:
 From: Govindraj.R govindraj.r...@ti.com
 
 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


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

2012-03-06 Thread Govindraj.R
From: Govindraj.R govindraj.r...@ti.com

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 t...@atomide.com
Cc: Kevin Hilman khil...@ti.com
Cc: Koen Kooi k...@dominion.thruhere.net
Tested-by: Peter Ujfalusi peter.ujfal...@ti.com
Tested-by: Robert Nelson robertcnel...@gmail.com
Signed-off-by: Govindraj.R govindraj.r...@ti.com
---
 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 

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

2012-03-06 Thread Tony Lindgren
* Govindraj.R govindraj.r...@ti.com [120306 00:34]:
 From: Govindraj.R govindraj.r...@ti.com
 
 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 t...@atomide.com
 Cc: Kevin Hilman khil...@ti.com
 Cc: Koen Kooi k...@dominion.thruhere.net
 Tested-by: Peter Ujfalusi peter.ujfal...@ti.com
 Tested-by: Robert Nelson robertcnel...@gmail.com
 Signed-off-by: Govindraj.R govindraj.r...@ti.com

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 

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

2012-03-06 Thread Robert Nelson
On Tue, Mar 6, 2012 at 3:38 PM, Tony Lindgren t...@atomide.com wrote:
 * Govindraj.R govindraj.r...@ti.com [120306 00:34]:
 From: Govindraj.R govindraj.r...@ti.com

 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 t...@atomide.com
 Cc: Kevin Hilman khil...@ti.com
 Cc: Koen Kooi k...@dominion.thruhere.net
 Tested-by: Peter Ujfalusi peter.ujfal...@ti.com
 Tested-by: Robert Nelson robertcnel...@gmail.com
 Signed-off-by: Govindraj.R govindraj.r...@ti.com

 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 robertcnel...@gmail.com

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