omap: Clean the serial port defines
authorTony Lindgren <tony@atomide.com>
Mon, 15 Feb 2010 16:48:53 +0000 (08:48 -0800)
committerTony Lindgren <tony@atomide.com>
Mon, 15 Feb 2010 16:48:53 +0000 (08:48 -0800)
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 <tony@atomide.com>
arch/arm/mach-omap1/include/mach/debug-macro.S
arch/arm/mach-omap1/serial.c
arch/arm/mach-omap2/board-3630sdp.c
arch/arm/mach-omap2/board-zoom3.c
arch/arm/mach-omap2/include/mach/debug-macro.S
arch/arm/mach-omap2/serial.c
arch/arm/plat-omap/common.c
arch/arm/plat-omap/include/plat/common.h
arch/arm/plat-omap/include/plat/omap16xx.h
arch/arm/plat-omap/include/plat/serial.h
arch/arm/plat-omap/include/plat/uncompress.h

index 8c74cab..9ea12f2 100644 (file)
  *
 */
 
+#include <linux/serial_reg.h>
+
+#include <plat/serial.h>
+
                .macro  addruart, rx, tmp
                mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
                .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
index 6e5207c..349de90 100644 (file)
@@ -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,
index 7390596..c178e68 100755 (executable)
@@ -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();
 }
 
index a9fe918..456b690 100644 (file)
@@ -26,7 +26,7 @@
 
 static void __init omap_zoom_map_io(void)
 {
-       omap2_set_globals_343x();
+       omap2_set_globals_36xx();
        omap2_map_common_io();
 }
 
index 86979d7..8d6da9a 100644 (file)
  *
 */
 
+#include <linux/serial_reg.h>
+
+#include <plat/serial.h>
+
                .macro  addruart, rx, tmp
                mrc     p15, 0, \rx, c1, c0
                tst     \rx, #1                 @ MMU enabled?
                .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
index 8c964be..eb56e19 100644 (file)
@@ -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)
 {
index bf1eaf3..dddce03 100644 (file)
@@ -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
 
index 32c2227..e04a58e 100644 (file)
@@ -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
index 7560b4d..e69e1d8 100644 (file)
 #define OMAP16XX_MMCSD2_SSW_MPU_CONF   (TIPB_SWITCH_BASE + 0x160)
 
 /* UART3 Registers Mapping through MPU bus */
-#define UART3_RHR               (OMAP_UART3_BASE + 0)
-#define UART3_THR               (OMAP_UART3_BASE + 0)
-#define UART3_DLL               (OMAP_UART3_BASE + 0)
-#define UART3_IER               (OMAP_UART3_BASE + 4)
-#define UART3_DLH               (OMAP_UART3_BASE + 4)
-#define UART3_IIR               (OMAP_UART3_BASE + 8)
-#define UART3_FCR               (OMAP_UART3_BASE + 8)
-#define UART3_EFR               (OMAP_UART3_BASE + 8)
-#define UART3_LCR               (OMAP_UART3_BASE + 0x0C)
-#define UART3_MCR               (OMAP_UART3_BASE + 0x10)
-#define UART3_XON1_ADDR1        (OMAP_UART3_BASE + 0x10)
-#define UART3_XON2_ADDR2        (OMAP_UART3_BASE + 0x14)
-#define UART3_LSR               (OMAP_UART3_BASE + 0x14)
-#define UART3_TCR               (OMAP_UART3_BASE + 0x18)
-#define UART3_MSR               (OMAP_UART3_BASE + 0x18)
-#define UART3_XOFF1             (OMAP_UART3_BASE + 0x18)
-#define UART3_XOFF2             (OMAP_UART3_BASE + 0x1C)
-#define UART3_SPR               (OMAP_UART3_BASE + 0x1C)
-#define UART3_TLR               (OMAP_UART3_BASE + 0x1C)
-#define UART3_MDR1              (OMAP_UART3_BASE + 0x20)
-#define UART3_MDR2              (OMAP_UART3_BASE + 0x24)
-#define UART3_SFLSR             (OMAP_UART3_BASE + 0x28)
-#define UART3_TXFLL             (OMAP_UART3_BASE + 0x28)
-#define UART3_RESUME            (OMAP_UART3_BASE + 0x2C)
-#define UART3_TXFLH             (OMAP_UART3_BASE + 0x2C)
-#define UART3_SFREGL            (OMAP_UART3_BASE + 0x30)
-#define UART3_RXFLL             (OMAP_UART3_BASE + 0x30)
-#define UART3_SFREGH            (OMAP_UART3_BASE + 0x34)
-#define UART3_RXFLH             (OMAP_UART3_BASE + 0x34)
-#define UART3_BLR               (OMAP_UART3_BASE + 0x38)
-#define UART3_ACREG             (OMAP_UART3_BASE + 0x3C)
-#define UART3_DIV16             (OMAP_UART3_BASE + 0x3C)
-#define UART3_SCR               (OMAP_UART3_BASE + 0x40)
-#define UART3_SSR               (OMAP_UART3_BASE + 0x44)
-#define UART3_EBLR              (OMAP_UART3_BASE + 0x48)
-#define UART3_OSC_12M_SEL       (OMAP_UART3_BASE + 0x4C)
-#define UART3_MVR               (OMAP_UART3_BASE + 0x50)
+#define UART3_RHR               (OMAP1_UART3_BASE + 0)
+#define UART3_THR               (OMAP1_UART3_BASE + 0)
+#define UART3_DLL               (OMAP1_UART3_BASE + 0)
+#define UART3_IER               (OMAP1_UART3_BASE + 4)
+#define UART3_DLH               (OMAP1_UART3_BASE + 4)
+#define UART3_IIR               (OMAP1_UART3_BASE + 8)
+#define UART3_FCR               (OMAP1_UART3_BASE + 8)
+#define UART3_EFR               (OMAP1_UART3_BASE + 8)
+#define UART3_LCR               (OMAP1_UART3_BASE + 0x0C)
+#define UART3_MCR               (OMAP1_UART3_BASE + 0x10)
+#define UART3_XON1_ADDR1        (OMAP1_UART3_BASE + 0x10)
+#define UART3_XON2_ADDR2        (OMAP1_UART3_BASE + 0x14)
+#define UART3_LSR               (OMAP1_UART3_BASE + 0x14)
+#define UART3_TCR               (OMAP1_UART3_BASE + 0x18)
+#define UART3_MSR               (OMAP1_UART3_BASE + 0x18)
+#define UART3_XOFF1             (OMAP1_UART3_BASE + 0x18)
+#define UART3_XOFF2             (OMAP1_UART3_BASE + 0x1C)
+#define UART3_SPR               (OMAP1_UART3_BASE + 0x1C)
+#define UART3_TLR               (OMAP1_UART3_BASE + 0x1C)
+#define UART3_MDR1              (OMAP1_UART3_BASE + 0x20)
+#define UART3_MDR2              (OMAP1_UART3_BASE + 0x24)
+#define UART3_SFLSR             (OMAP1_UART3_BASE + 0x28)
+#define UART3_TXFLL             (OMAP1_UART3_BASE + 0x28)
+#define UART3_RESUME            (OMAP1_UART3_BASE + 0x2C)
+#define UART3_TXFLH             (OMAP1_UART3_BASE + 0x2C)
+#define UART3_SFREGL            (OMAP1_UART3_BASE + 0x30)
+#define UART3_RXFLL             (OMAP1_UART3_BASE + 0x30)
+#define UART3_SFREGH            (OMAP1_UART3_BASE + 0x34)
+#define UART3_RXFLH             (OMAP1_UART3_BASE + 0x34)
+#define UART3_BLR               (OMAP1_UART3_BASE + 0x38)
+#define UART3_ACREG             (OMAP1_UART3_BASE + 0x3C)
+#define UART3_DIV16             (OMAP1_UART3_BASE + 0x3C)
+#define UART3_SCR               (OMAP1_UART3_BASE + 0x40)
+#define UART3_SSR               (OMAP1_UART3_BASE + 0x44)
+#define UART3_EBLR              (OMAP1_UART3_BASE + 0x48)
+#define UART3_OSC_12M_SEL       (OMAP1_UART3_BASE + 0x4C)
+#define UART3_MVR               (OMAP1_UART3_BASE + 0x50)
 
 /*
  * ---------------------------------------------------------------------------
index f5a4a92..7f5a7a8 100644 (file)
 
 #include <linux/init.h>
 
-#if defined(CONFIG_ARCH_OMAP1)
 /* OMAP1 serial ports */
-#define OMAP_UART1_BASE                0xfffb0000
-#define OMAP_UART2_BASE                0xfffb0800
-#define OMAP_UART3_BASE                0xfffb9800
-#elif defined(CONFIG_ARCH_OMAP2)
+#define OMAP1_UART1_BASE       0xfffb0000
+#define OMAP1_UART2_BASE       0xfffb0800
+#define OMAP1_UART3_BASE       0xfffb9800
+
 /* OMAP2 serial ports */
-#define OMAP_UART1_BASE                0x4806a000
-#define OMAP_UART2_BASE                0x4806c000
-#define OMAP_UART3_BASE                0x4806e000
-#elif defined(CONFIG_ARCH_OMAP3)
+#define OMAP2_UART1_BASE       0x4806a000
+#define OMAP2_UART2_BASE       0x4806c000
+#define OMAP2_UART3_BASE       0x4806e000
+
 /* OMAP3 serial ports */
-#define OMAP_UART1_BASE                0x4806a000
-#define OMAP_UART2_BASE                0x4806c000
-#define OMAP_UART3_BASE                0x49020000
-#elif defined(CONFIG_ARCH_OMAP4)
+#define OMAP3_UART1_BASE       0x4806a000
+#define OMAP3_UART2_BASE       0x4806c000
+#define OMAP3_UART3_BASE       0x49020000
+#define OMAP3_UART4_BASE       0x49042000      /* Only on 36xx */
+
 /* OMAP4 serial ports */
-#define OMAP_UART1_BASE                0x4806a000
-#define OMAP_UART2_BASE                0x4806c000
-#define OMAP_UART3_BASE                0x48020000
-#define OMAP_UART4_BASE                0x4806e000
-#endif
+#define OMAP4_UART1_BASE       0x4806a000
+#define OMAP4_UART2_BASE       0x4806c000
+#define OMAP4_UART3_BASE       0x48020000
+#define OMAP4_UART4_BASE       0x4806e000
+
+#define OMAP_PORT_SHIFT                2
+#define OMAP7XX_PORT_SHIFT     0
 
 #define OMAP1510_BASE_BAUD     (12000000/16)
 #define OMAP16XX_BASE_BAUD     (48000000/16)
 #define OMAP24XX_BASE_BAUD     (48000000/16)
 
+/* This is only used by 8250.c for omap1510 */
 #define is_omap_port(pt)       ({int __ret = 0;                        \
-                       if ((pt)->port.mapbase == OMAP_UART1_BASE ||    \
-                           (pt)->port.mapbase == OMAP_UART2_BASE ||    \
-                           (pt)->port.mapbase == OMAP_UART3_BASE)      \
+                       if ((pt)->port.mapbase == OMAP1_UART1_BASE ||   \
+                           (pt)->port.mapbase == OMAP1_UART2_BASE ||   \
+                           (pt)->port.mapbase == OMAP1_UART3_BASE)     \
                                __ret = 1;                              \
                        __ret;                                          \
                        })
index 13c305d..e5723c3 100644 (file)
@@ -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