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: Fri, 4 May 2012 11:18:08 -0700	[thread overview]
Message-ID: <20120504181808.GM5613@atomide.com> (raw)
In-Reply-To: <1331024711-23578-1-git-send-email-govindraj.raja@ti.com>

Hi,

Looking at this again..

* 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.

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

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: Fri, 4 May 2012 11:18:08 -0700	[thread overview]
Message-ID: <20120504181808.GM5613@atomide.com> (raw)
In-Reply-To: <1331024711-23578-1-git-send-email-govindraj.raja@ti.com>

Hi,

Looking at this again..

* 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.

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

  parent reply	other threads:[~2012-05-04 18:18 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
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 [this message]
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=20120504181808.GM5613@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.