[PATCH] omap2+: Fix omap_serial_early_init to work with init_early hook

Kevin Hilman khilman at ti.com
Thu Jan 27 13:01:08 EST 2011


Hi Tony,

Tony Lindgren <tony at atomide.com> writes:

> The new init_early hook happens at the end of setup_arch,
> which is too early for kzalloc. However, there's no need
> to call omap_serial_early_init that early, so fix this
> by setting it up as a core_initcall.
>
> Signed-off-by: Tony Lindgren <tony at atomide.com>
>

Tested-by: Kevin Hilman <khilman at ti.com>

I boot tested these on 3430/n900, 3630/Zoom3 and 4430ES1.0/PAB.

Kevin


> diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
> index 8f47609..5678c33 100644
> --- a/arch/arm/mach-omap2/io.c
> +++ b/arch/arm/mach-omap2/io.c
> @@ -400,8 +400,6 @@ void __init omap2_init_common_infrastructure(void)
>  void __init omap2_init_common_devices(struct omap_sdrc_params *sdrc_cs0,
>  				      struct omap_sdrc_params *sdrc_cs1)
>  {
> -	omap_serial_early_init();
> -
>  	if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
>  		omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
>  		_omap2_init_reprogram_sdrc();
> diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
> index 302da74..539ec9c 100644
> --- a/arch/arm/mach-omap2/serial.c
> +++ b/arch/arm/mach-omap2/serial.c
> @@ -655,7 +655,7 @@ static void serial_out_override(struct uart_port *up, int offset, int value)
>  }
>  #endif
>  
> -void __init omap_serial_early_init(void)
> +static int __init omap_serial_early_init(void)
>  {
>  	int i = 0;
>  
> @@ -672,7 +672,7 @@ void __init omap_serial_early_init(void)
>  
>  		uart = kzalloc(sizeof(struct omap_uart_state), GFP_KERNEL);
>  		if (WARN_ON(!uart))
> -			return;
> +			return -ENODEV;
>  
>  		uart->oh = oh;
>  		uart->num = i++;
> @@ -691,7 +691,10 @@ void __init omap_serial_early_init(void)
>  		 */
>  		uart->oh->flags |= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET;
>  	} while (1);
> +
> +	return 0;
>  }
> +core_initcall(omap_serial_early_init);
>  
>  /**
>   * omap_serial_init_port() - initialize single serial port
> diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h
> index cec5d56..a1a118d 100644
> --- a/arch/arm/plat-omap/include/plat/serial.h
> +++ b/arch/arm/plat-omap/include/plat/serial.h
> @@ -96,7 +96,6 @@
>  
>  struct omap_board_data;
>  
> -extern void __init omap_serial_early_init(void);
>  extern void omap_serial_init(void);
>  extern void omap_serial_init_port(struct omap_board_data *bdata);
>  extern int omap_uart_can_sleep(void);
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the linux-arm-kernel mailing list