]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-omap2/serial.c
OMAP2/3 board-*.c files: read bootloader configuration earlier
[mv-sheeva.git] / arch / arm / mach-omap2 / serial.c
index a7421a50410bc16a23126439071c73f51b35474e..ca28424f2fbda8accdd2ee66f48a54956e6ffea1 100644 (file)
@@ -73,7 +73,7 @@ static LIST_HEAD(uart_list);
 
 static struct plat_serial8250_port serial_platform_data0[] = {
        {
-               .membase        = IO_ADDRESS(OMAP_UART1_BASE),
+               .membase        = OMAP2_IO_ADDRESS(OMAP_UART1_BASE),
                .mapbase        = OMAP_UART1_BASE,
                .irq            = 72,
                .flags          = UPF_BOOT_AUTOCONF,
@@ -87,7 +87,7 @@ static struct plat_serial8250_port serial_platform_data0[] = {
 
 static struct plat_serial8250_port serial_platform_data1[] = {
        {
-               .membase        = IO_ADDRESS(OMAP_UART2_BASE),
+               .membase        = OMAP2_IO_ADDRESS(OMAP_UART2_BASE),
                .mapbase        = OMAP_UART2_BASE,
                .irq            = 73,
                .flags          = UPF_BOOT_AUTOCONF,
@@ -101,7 +101,7 @@ static struct plat_serial8250_port serial_platform_data1[] = {
 
 static struct plat_serial8250_port serial_platform_data2[] = {
        {
-               .membase        = IO_ADDRESS(OMAP_UART3_BASE),
+               .membase        = OMAP2_IO_ADDRESS(OMAP_UART3_BASE),
                .mapbase        = OMAP_UART3_BASE,
                .irq            = 74,
                .flags          = UPF_BOOT_AUTOCONF,
@@ -460,7 +460,7 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)
                uart->padconf = 0;
        }
 
-       p->flags |= UPF_SHARE_IRQ;
+       p->irqflags |= IRQF_SHARED;
        ret = request_irq(p->irq, omap_uart_interrupt, IRQF_SHARED,
                          "serial idle", (void *)uart);
        WARN_ON(ret);
@@ -552,10 +552,9 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = {
        },
 };
 
-void __init omap_serial_init(void)
+void __init omap_serial_early_init(void)
 {
        int i;
-       const struct omap_uart_config *info;
        char name[16];
 
        /*
@@ -564,23 +563,12 @@ void __init omap_serial_init(void)
         * if not needed.
         */
 
-       info = omap_get_config(OMAP_TAG_UART, struct omap_uart_config);
-
-       if (info == NULL)
-               return;
-
        for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
                struct omap_uart_state *uart = &omap_uart[i];
                struct platform_device *pdev = &uart->pdev;
                struct device *dev = &pdev->dev;
                struct plat_serial8250_port *p = dev->platform_data;
 
-               if (!(info->enabled_uarts & (1 << i))) {
-                       p->membase = NULL;
-                       p->mapbase = 0;
-                       continue;
-               }
-
                sprintf(name, "uart%d_ick", i+1);
                uart->ick = clk_get(NULL, name);
                if (IS_ERR(uart->ick)) {
@@ -607,6 +595,18 @@ void __init omap_serial_init(void)
                        p->irq += 32;
 
                omap_uart_enable_clocks(uart);
+       }
+}
+
+void __init omap_serial_init(void)
+{
+       int i;
+
+       for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
+               struct omap_uart_state *uart = &omap_uart[i];
+               struct platform_device *pdev = &uart->pdev;
+               struct device *dev = &pdev->dev;
+
                omap_uart_reset(uart);
                omap_uart_idle_init(uart);