aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/8250.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial/8250.c')
-rw-r--r--drivers/serial/8250.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 6d0ce64163e..ea41f262645 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1868,6 +1868,7 @@ static int serial8250_startup(struct uart_port *port)
1868 } 1868 }
1869 1869
1870 if (is_real_interrupt(up->port.irq)) { 1870 if (is_real_interrupt(up->port.irq)) {
1871 unsigned char iir1;
1871 /* 1872 /*
1872 * Test for UARTs that do not reassert THRE when the 1873 * Test for UARTs that do not reassert THRE when the
1873 * transmitter is idle and the interrupt has already 1874 * transmitter is idle and the interrupt has already
@@ -1881,7 +1882,7 @@ static int serial8250_startup(struct uart_port *port)
1881 wait_for_xmitr(up, UART_LSR_THRE); 1882 wait_for_xmitr(up, UART_LSR_THRE);
1882 serial_out_sync(up, UART_IER, UART_IER_THRI); 1883 serial_out_sync(up, UART_IER, UART_IER_THRI);
1883 udelay(1); /* allow THRE to set */ 1884 udelay(1); /* allow THRE to set */
1884 serial_in(up, UART_IIR); 1885 iir1 = serial_in(up, UART_IIR);
1885 serial_out(up, UART_IER, 0); 1886 serial_out(up, UART_IER, 0);
1886 serial_out_sync(up, UART_IER, UART_IER_THRI); 1887 serial_out_sync(up, UART_IER, UART_IER_THRI);
1887 udelay(1); /* allow a working UART time to re-assert THRE */ 1888 udelay(1); /* allow a working UART time to re-assert THRE */
@@ -1894,7 +1895,7 @@ static int serial8250_startup(struct uart_port *port)
1894 * If the interrupt is not reasserted, setup a timer to 1895 * If the interrupt is not reasserted, setup a timer to
1895 * kick the UART on a regular basis. 1896 * kick the UART on a regular basis.
1896 */ 1897 */
1897 if (iir & UART_IIR_NO_INT) { 1898 if (!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) {
1898 pr_debug("ttyS%d - using backup timer\n", port->line); 1899 pr_debug("ttyS%d - using backup timer\n", port->line);
1899 up->timer.function = serial8250_backup_timeout; 1900 up->timer.function = serial8250_backup_timeout;
1900 up->timer.data = (unsigned long)up; 1901 up->timer.data = (unsigned long)up;