]> Pileus Git - ~andy/linux/blobdiff - drivers/serial/amba-pl010.c
[PATCH] ARM: 2785/1: S3C24XX - serial calls request_irq() with IRQs disabled
[~andy/linux] / drivers / serial / amba-pl010.c
index 484f6fb900b51feb5a90cb765aa1cd99da951f54..2884b310e54d2d01f50d012d4394343b08b5717a 100644 (file)
@@ -172,7 +172,7 @@ pl010_rx_chars(struct uart_port *port)
                 * out of the main execution path
                 */
                rsr = UART_GET_RSR(port) | UART_DUMMY_RSR_RX;
-               if (rsr & UART01x_RSR_ANY) {
+               if (unlikely(rsr & UART01x_RSR_ANY)) {
                        if (rsr & UART01x_RSR_BE) {
                                rsr &= ~(UART01x_RSR_FE | UART01x_RSR_PE);
                                port->icount.brk++;
@@ -198,18 +198,8 @@ pl010_rx_chars(struct uart_port *port)
                if (uart_handle_sysrq_char(port, ch, regs))
                        goto ignore_char;
 
-               if ((rsr & port->ignore_status_mask) == 0) {
-                       tty_insert_flip_char(tty, ch, flag);
-               }
-               if ((rsr & UART01x_RSR_OE) &&
-                   tty->flip.count < TTY_FLIPBUF_SIZE) {
-                       /*
-                        * Overrun is special, since it's reported
-                        * immediately, and doesn't affect the current
-                        * character
-                        */
-                       tty_insert_flip_char(tty, 0, TTY_OVERRUN);
-               }
+               uart_insert_char(port, rsr, UART01x_RSR_OE, ch, flag);
+
        ignore_char:
                status = UART_GET_FR(port);
        }