diff options
author | Tony Lindgren <tony@atomide.com> | 2010-02-15 17:27:25 (GMT) |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2010-02-15 17:27:25 (GMT) |
commit | a3a9b36e6b1c420088460af8e83ba7b83330669f (patch) | |
tree | 31f7ef7755234bac2a3d8ffee1222bf756ae4949 /arch/arm/mach-omap2/serial.c | |
parent | 3f1686a9bfe74979c6ad538c78039730f665f77e (diff) | |
download | linux-a3a9b36e6b1c420088460af8e83ba7b83330669f.tar.xz |
omap2/3/4: Fix mach-omap2/serial.c for multiboot
Initialize UART4 only for 3630 and 44xx.
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/serial.c')
-rw-r--r-- | arch/arm/mach-omap2/serial.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index e657674..2b78400 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c @@ -114,7 +114,7 @@ static struct plat_serial8250_port serial_platform_data2[] = { } }; -#ifdef CONFIG_ARCH_OMAP4 +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) static struct plat_serial8250_port serial_platform_data3[] = { { .irq = 70, @@ -126,6 +126,15 @@ static struct plat_serial8250_port serial_platform_data3[] = { .flags = 0 } }; + +static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals) +{ + serial_platform_data3[0].mapbase = omap2_globals->uart4_phys; +} +#else +static inline void omap2_set_globals_uart4(struct omap_globals *omap2_globals) +{ +} #endif void __init omap2_set_globals_uart(struct omap_globals *omap2_globals) @@ -133,9 +142,8 @@ void __init omap2_set_globals_uart(struct omap_globals *omap2_globals) serial_platform_data0[0].mapbase = omap2_globals->uart1_phys; serial_platform_data1[0].mapbase = omap2_globals->uart2_phys; serial_platform_data2[0].mapbase = omap2_globals->uart3_phys; -#ifdef CONFIG_ARCH_OMAP4 - serial_platform_data3[0].mapbase = omap2_globals->uart4_phys; -#endif + if (cpu_is_omap3630() || cpu_is_omap44xx()) + omap2_set_globals_uart4(omap2_globals); } static inline unsigned int __serial_read_reg(struct uart_port *up, @@ -581,7 +589,7 @@ static struct omap_uart_state omap_uart[] = { }, }, }, -#ifdef CONFIG_ARCH_OMAP4 +#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4) { .pdev = { .name = "serial8250", @@ -728,8 +736,13 @@ void __init omap_serial_init_port(int port) */ void __init omap_serial_init(void) { - int i; + int i, nr_ports; + + if (!(cpu_is_omap3630() || cpu_is_omap4430())) + nr_ports = 3; + else + nr_ports = ARRAY_SIZE(omap_uart); - for (i = 0; i < ARRAY_SIZE(omap_uart); i++) + for (i = 0; i < nr_ports; i++) omap_serial_init_port(i); } |