omap: Clean the serial port defines
Subsystems (4)
Tony Lindgren
maintainerPATCH 1/1 omap: Clean the serial port defines
This way we don't have conflicts with the defines with compiling in multiple omaps. Set the addresses for uarts in struct omap_globals for the early serial init code.
Signed-off-by Tony Lindgren <[email protected]>
arch/arm/mach-omap1/include/mach/debug-macro.S +10 -6
@@ -11,6 +11,10 @@ * */ +#include <linux/serial_reg.h> + +#include <plat/serial.h> + .macro addruart,rx mrc p15, 0, \rx, c1, c0 tst \rx, #1 @ MMU enabled?
@@ -30,13 +34,13 @@ .endm .macro busyuart,rd,rx -1001: ldrb \rd, [\rx, #(0x5 << 2)] @ OMAP-1510 and friends - and \rd, \rd, #0x60 - teq \rd, #0x60 +1001: ldrb \rd, [\rx, #(UART_LSR << OMAP_PORT_SHIFT)] + and \rd, \rd, #(UART_LSR_TEMT | UART_LSR_THRE) + teq \rd, #(UART_LSR_TEMT | UART_LSR_THRE) beq 1002f - ldrb \rd, [\rx, #(0x5 << 0)] @ OMAP-730 only - and \rd, \rd, #0x60 - teq \rd, #0x60 + ldrb \rd, [\rx, #(UART_LSR << OMAP7XX_PORT_SHIFT)] + and \rd, \rd, #(UART_LSR_TEMT | UART_LSR_THRE) + teq \rd, #(UART_LSR_TEMT | UART_LSR_THRE) bne 1001b 1002: .endm
arch/arm/mach-omap1/serial.c +3 -3
@@ -64,7 +64,7 @@ static void __init omap_serial_reset(struct plat_serial8250_port *p)static struct plat_serial8250_port serial_platform_data[] = { { - .mapbase =OMAP_UART1_BASE , + .mapbase =OMAP1_UART1_BASE , .irq =INT_UART1 , .flags =UPF_BOOT_AUTOCONF , .iotype =UPIO_MEM ,
@@ -72,7 +72,7 @@ static struct plat_serial8250_port serial_platform_data[] = { .uartclk = OMAP16XX_BASE_BAUD * 16, }, { - .mapbase = OMAP_UART2_BASE, + .mapbase = OMAP1_UART2_BASE, .irq = INT_UART2, .flags = UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM,
@@ -80,7 +80,7 @@ static struct plat_serial8250_port serial_platform_data[] = { .uartclk = OMAP16XX_BASE_BAUD * 16, }, { - .mapbase = OMAP_UART3_BASE, + .mapbase = OMAP1_UART3_BASE, .irq = INT_UART3, .flags = UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM,
arch/arm/mach-omap2/board-3630sdp.c +1 -1
@@ -68,7 +68,7 @@ static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {static void __init omap_sdp_map_io (void ) { -omap2_set_globals_343x (); +omap2_set_globals_36xx ();omap2_map_common_io (); }
arch/arm/mach-omap2/board-zoom3.c +1 -1
@@ -27,7 +27,7 @@static void __init omap_zoom_map_io (void ) { -omap2_set_globals_343x (); +omap2_set_globals_36xx ();omap2_map_common_io (); }
arch/arm/mach-omap2/include/mach/debug-macro.S +7 -8
@@ -11,6 +11,10 @@ * */ +#include <linux/serial_reg.h> + +#include <plat/serial.h> + .macro addruart,rx mrc p15, 0, \rx, c1, c0 tst \rx, #1 @ MMU enabled?
@@ -44,15 +48,10 @@ .endm .macro busyuart,rd,rx -1001: ldrb \rd, [\rx, #(0x5 << 2)] @ OMAP-1510 and friends - and \rd, \rd, #0x60 - teq \rd, #0x60 - beq 1002f - ldrb \rd, [\rx, #(0x5 << 0)] @ OMAP-730 only - and \rd, \rd, #0x60 - teq \rd, #0x60 +1001: ldrb \rd, [\rx, #(UART_LSR << OMAP_PORT_SHIFT)] + and \rd, \rd, #(UART_LSR_TEMT | UART_LSR_THRE) + teq \rd, #(UART_LSR_TEMT | UART_LSR_THRE) bne 1001b -1002: .endm .macro waituart,rd,rx
arch/arm/mach-omap2/serial.c +11 -4
@@ -74,7 +74,6 @@ static LIST_HEAD(uart_list);static struct plat_serial8250_port serial_platform_data0[] = { { - .mapbase =OMAP_UART1_BASE , .irq =72 , .flags =UPF_BOOT_AUTOCONF , .iotype =UPIO_MEM ,
@@ -87,7 +86,6 @@ static struct plat_serial8250_port serial_platform_data0[] = {static struct plat_serial8250_port serial_platform_data1[] = { { - .mapbase =OMAP_UART2_BASE , .irq =73 , .flags =UPF_BOOT_AUTOCONF , .iotype =UPIO_MEM ,
@@ -100,7 +98,6 @@ static struct plat_serial8250_port serial_platform_data1[] = {static struct plat_serial8250_port serial_platform_data2[] = { { - .mapbase =OMAP_UART3_BASE , .irq =74 , .flags =UPF_BOOT_AUTOCONF , .iotype =UPIO_MEM ,
@@ -114,7 +111,6 @@ static struct plat_serial8250_port serial_platform_data2[] = { #ifdef CONFIG_ARCH_OMAP4 static struct plat_serial8250_port serial_platform_data3[] = { { - .mapbase = OMAP_UART4_BASE, .irq = 70, .flags = UPF_BOOT_AUTOCONF, .iotype = UPIO_MEM,
@@ -125,6 +121,17 @@ static struct plat_serial8250_port serial_platform_data3[] = { } };#endif + +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 +} +static inline unsigned int __serial_read_reg (struct uart_port *up,int offset) {
arch/arm/plat-omap/common.c +26 -3
@@ -34,6 +34,7 @@#include <plat/control.h> #include <plat/mux.h> #include <plat/fpga.h> +#include <plat/serial.h> #include <plat/clock.h>
@@ -219,6 +220,7 @@ static void __init __omap2_set_globals(struct omap_globals *omap2_globals)omap2_set_globals_sdrc (omap2_globals);omap2_set_globals_control (omap2_globals);omap2_set_globals_prcm (omap2_globals); + omap2_set_globals_uart(omap2_globals); }#endif
@@ -233,6 +235,9 @@ static struct omap_globals omap242x_globals = { .ctrl = OMAP2_L4_IO_ADDRESS(OMAP2420_CTRL_BASE), .prm = OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE), .cm = OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE), + .uart1_phys = OMAP2_UART1_BASE, + .uart2_phys = OMAP2_UART2_BASE, + .uart3_phys = OMAP2_UART3_BASE, };void __init omap2_set_globals_242x (void )
@@ -251,6 +256,9 @@ static struct omap_globals omap243x_globals = { .ctrl = OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE), .prm = OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE), .cm = OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE), + .uart1_phys = OMAP2_UART1_BASE, + .uart2_phys = OMAP2_UART2_BASE, + .uart3_phys = OMAP2_UART3_BASE, };void __init omap2_set_globals_243x (void )
@@ -259,9 +267,9 @@ void __init omap2_set_globals_243x(void) }#endif -#if defined(CONFIG_ARCH_OMAP3430 ) +#if defined(CONFIG_ARCH_OMAP3 ) -static struct omap_globals omap343x_globals = { +static struct omap_globals omap3_globals = { .class =OMAP343X_CLASS , .tap =OMAP2_L4_IO_ADDRESS (0x4830A000 ), .sdrc = OMAP2_L3_IO_ADDRESS(OMAP343X_SDRC_BASE),
@@ -269,11 +277,21 @@ static struct omap_globals omap343x_globals = { .ctrl = OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE), .prm = OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE), .cm = OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE), + .uart1_phys = OMAP3_UART1_BASE, + .uart2_phys = OMAP3_UART2_BASE, + .uart3_phys = OMAP3_UART3_BASE, };void __init omap2_set_globals_343x (void ) { -__omap2_set_globals (&omap343x_globals); +__omap2_set_globals (&omap3_globals); +} + +void __init omap2_set_globals_36xx (void ) +{ + omap3_globals.uart4_phys =OMAP3_UART4_BASE ; + +__omap2_set_globals (&omap3_globals); }#endif
@@ -285,6 +303,10 @@ static struct omap_globals omap4_globals = { .prm = OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE), .cm = OMAP2_L4_IO_ADDRESS(OMAP4430_CM_BASE), .cm2 = OMAP2_L4_IO_ADDRESS(OMAP4430_CM2_BASE), + .uart1_phys = OMAP4_UART1_BASE, + .uart2_phys = OMAP4_UART2_BASE, + .uart3_phys = OMAP4_UART3_BASE, + .uart4_phys = OMAP4_UART4_BASE, };void __init omap2_set_globals_443x (void )
@@ -292,6 +314,7 @@ void __init omap2_set_globals_443x(void)omap2_set_globals_tap (&omap4_globals);omap2_set_globals_control (&omap4_globals);omap2_set_globals_prcm (&omap4_globals); + omap2_set_globals_uart(&omap4_globals); }#endif
arch/arm/plat-omap/include/plat/common.h +6 -0
@@ -47,11 +47,16 @@ struct omap_globals {void __iomem *prm;/* Power and Reset Management */ void __iomem *cm;/* Clock Management */ void __iomem *cm2; +unsigned long uart1_phys; +unsigned long uart2_phys; +unsigned long uart3_phys; +unsigned long uart4_phys; };void omap2_set_globals_242x (void );void omap2_set_globals_243x (void );void omap2_set_globals_343x (void ); +void omap2_set_globals_36xx (void );void omap2_set_globals_443x (void );/* These get called from omap2_set_globals_xxxx(), do not call these */
@@ -59,6 +64,7 @@ void omap2_set_globals_tap(struct omap_globals *);void omap2_set_globals_sdrc (struct omap_globals *);void omap2_set_globals_control (struct omap_globals *);void omap2_set_globals_prcm (struct omap_globals *); +void omap2_set_globals_uart (struct omap_globals *);/** * omap_test_timeout - busy-loop, testing a condition
arch/arm/plat-omap/include/plat/serial.h +24 -21
61 lines not on this page · raw message
arch/arm/plat-omap/include/plat/uncompress.h +4 -3
@@ -40,12 +40,13 @@ static void putc(int c)#endif #ifdef CONFIG_ARCH_OMAP +/* Will get removed in the next patch, set to OMAP3 to compile */ #ifdef CONFIG_OMAP_LL_DEBUG_UART3 - uart = (volatile u8 *)(OMAP_UART3_BASE ); + uart = (volatile u8 *)(OMAP3_UART3_BASE );#elif defined(CONFIG_OMAP_LL_DEBUG_UART2 ) - uart = (volatile u8 *)(OMAP_UART2_BASE ); + uart = (volatile u8 *)(OMAP3_UART2_BASE );#elif defined(CONFIG_OMAP_LL_DEBUG_UART1 ) - uart = (volatile u8 *)(OMAP_UART1_BASE ); + uart = (volatile u8 *)(OMAP3_UART1_BASE );#elif defined(CONFIG_OMAP_LL_DEBUG_NONE )return ;#else
--W/nzBZO5zC0uMSeA--