Merge branch 'for-linus' of git://android.git.kernel.org/kernel/tegra
[pandora-kernel.git] / arch / arm / mach-omap2 / serial.c
index 32e91a9..1ac361b 100644 (file)
@@ -486,7 +486,7 @@ static void omap_uart_idle_init(struct omap_uart_state *uart)
                mod_timer(&uart->timer, jiffies + uart->timeout);
        omap_uart_smart_idle_enable(uart, 0);
 
-       if (cpu_is_omap34xx()) {
+       if (cpu_is_omap34xx() && !cpu_is_ti816x()) {
                u32 mod = (uart->num > 1) ? OMAP3430_PER_MOD : CORE_MOD;
                u32 wk_mask = 0;
                u32 padconf = 0;
@@ -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++;
@@ -680,7 +680,7 @@ void __init omap_serial_early_init(void)
                num_uarts++;
 
                /*
-                * NOTE: omap_hwmod_init() has not yet been called,
+                * NOTE: omap_hwmod_setup*() has not yet been called,
                 *       so no hwmod functions will work yet.
                 */
 
@@ -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
@@ -759,13 +762,13 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)
        p->private_data = uart;
 
        /*
-        * omap44xx: Never read empty UART fifo
+        * omap44xx, ti816x: Never read empty UART fifo
         * omap3xxx: Never read empty UART fifo on UARTs
         * with IP rev >=0x52
         */
        uart->regshift = p->regshift;
        uart->membase = p->membase;
-       if (cpu_is_omap44xx())
+       if (cpu_is_omap44xx() || cpu_is_ti816x())
                uart->errata |= UART_ERRATA_FIFO_FULL_ABORT;
        else if ((serial_read_reg(uart, UART_OMAP_MVER) & 0xFF)
                        >= UART_OMAP_NO_EMPTY_FIFO_READ_IP_REV)
@@ -847,7 +850,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata)
        }
 
        /* Enable the MDR1 errata for OMAP3 */
-       if (cpu_is_omap34xx())
+       if (cpu_is_omap34xx() && !cpu_is_ti816x())
                uart->errata |= UART_ERRATA_i202_MDR1_ACCESS;
 }