serial: omap: fix the reciever line error case
authorShubhrajyoti D <shubhrajyoti@ti.com>
Fri, 21 Sep 2012 14:37:19 +0000 (20:07 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Sep 2012 20:33:37 +0000 (13:33 -0700)
This patch does the following
- In case of errors if there least one data character in the RX FIFO
read it otherwise it may stall the receiver.

This is recommended in the interrupt reset method in the table 23-246 of
the omap4 TRM.

Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Tested-by: Kevin Hilman <khilman@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/omap-serial.c

index 3c05c5ecdfbfa8ac0e82cc6627c1d6cb9298ecf3..ccc2f35adff1dd8c27d86676461e6c094f7e68aa 100644 (file)
@@ -334,6 +334,10 @@ static unsigned int check_modem_status(struct uart_omap_port *up)
 static void serial_omap_rlsi(struct uart_omap_port *up, unsigned int lsr)
 {
        unsigned int flag;
+       unsigned char ch = 0;
+
+       if (likely(lsr & UART_LSR_DR))
+               ch = serial_in(up, UART_RX);
 
        up->port.icount.rx++;
        flag = TTY_NORMAL;