All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: "Govindraj.R" <govindraj.raja@ti.com>
Cc: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Peter Ujfalusi <peter.ujfalusi@ti.com>,
	Robert Nelson <robertcnelson@gmail.com>,
	Kevin Hilman <khilman@ti.com>,
	Koen Kooi <koen@dominion.thruhere.net>
Subject: Re: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
Date: Tue, 6 Mar 2012 13:38:59 -0800	[thread overview]
Message-ID: <20120306213859.GA12083@atomide.com> (raw)
In-Reply-To: <1331024711-23578-1-git-send-email-govindraj.raja@ti.com>

* Govindraj.R <govindraj.raja@ti.com> [120306 00:34]:
> From: "Govindraj.R" <govindraj.raja@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 <tony@atomide.com>
> Cc: Kevin Hilman <khilman@ti.com>
> Cc: Koen Kooi <koen@dominion.thruhere.net>
> Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Tested-by: Robert Nelson <robertcnelson@gmail.com>
> Signed-off-by: Govindraj.R <govindraj.raja@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 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);
> +extern void omap_serial_board_init(struct omap_uart_port_info *platform_data,
> +		u8 port_id);
>  extern void omap_serial_init_port(struct omap_board_data *bdata,
>  		struct omap_uart_port_info *platform_data);
>  #endif
> -- 
> 1.7.5.4
> 

WARNING: multiple messages have this Message-ID (diff)
From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only
Date: Tue, 6 Mar 2012 13:38:59 -0800	[thread overview]
Message-ID: <20120306213859.GA12083@atomide.com> (raw)
In-Reply-To: <1331024711-23578-1-git-send-email-govindraj.raja@ti.com>

* Govindraj.R <govindraj.raja@ti.com> [120306 00:34]:
> From: "Govindraj.R" <govindraj.raja@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 <tony@atomide.com>
> Cc: Kevin Hilman <khilman@ti.com>
> Cc: Koen Kooi <koen@dominion.thruhere.net>
> Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Tested-by: Robert Nelson <robertcnelson@gmail.com>
> Signed-off-by: Govindraj.R <govindraj.raja@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 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);
> +extern void omap_serial_board_init(struct omap_uart_port_info *platform_data,
> +		u8 port_id);
>  extern void omap_serial_init_port(struct omap_board_data *bdata,
>  		struct omap_uart_port_info *platform_data);
>  #endif
> -- 
> 1.7.5.4
> 

  reply	other threads:[~2012-03-06 21:39 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-06  9:05 [PATCH] omap3_beagle: init uart2 for beagle rev AX/BX only Govindraj.R
2012-03-06  9:05 ` Govindraj.R
2012-03-06 21:38 ` Tony Lindgren [this message]
2012-03-06 21:38   ` Tony Lindgren
2012-03-07  0:39   ` Robert Nelson
2012-03-07  0:39     ` Robert Nelson
2012-05-04 18:18 ` Tony Lindgren
2012-05-04 18:18   ` Tony Lindgren
2012-05-07 12:22   ` Raja, Govindraj
2012-05-07 12:22     ` Raja, Govindraj
2012-05-07 17:50     ` Tony Lindgren
2012-05-07 17:50       ` Tony Lindgren

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120306213859.GA12083@atomide.com \
    --to=tony@atomide.com \
    --cc=govindraj.raja@ti.com \
    --cc=khilman@ti.com \
    --cc=koen@dominion.thruhere.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=peter.ujfalusi@ti.com \
    --cc=robertcnelson@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.