serial: tegra: Add delay after enabling FIFO mode
authorJon Hunter <jonathanh@nvidia.com>
Tue, 5 May 2015 14:17:53 +0000 (15:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 10 May 2015 17:12:18 +0000 (19:12 +0200)
For all tegra devices (up to t210), there is a hardware issue that
requires software to wait for 3 UART clock periods after enabling
the TX fifo, otherwise data could be lost.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial-tegra.c

index 9e08d3f..0d9d7ce 100644 (file)
@@ -885,6 +885,16 @@ static int tegra_uart_hw_init(struct tegra_uart_port *tup)
        tup->fcr_shadow |= TEGRA_UART_TX_TRIG_16B;
        tegra_uart_write(tup, tup->fcr_shadow, UART_FCR);
 
+       /* Dummy read to ensure the write is posted */
+       tegra_uart_read(tup, UART_SCR);
+
+       /*
+        * For all tegra devices (up to t210), there is a hardware issue that
+        * requires software to wait for 3 UART clock periods after enabling
+        * the TX fifo, otherwise data could be lost.
+        */
+       tegra_uart_wait_cycle_time(tup, 3);
+
        /*
         * Initialize the UART with default configuration
         * (115200, N, 8, 1) so that the receive DMA buffer may be