serial: xuartps: Removed unwanted checks while reading the error conditions
authorNava kishore Manne <nava.manne@xilinx.com>
Thu, 22 Sep 2016 15:58:15 +0000 (16:58 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Sep 2016 10:54:41 +0000 (12:54 +0200)
This patch Remove the unwated checks while reading the parity,framing,
overrun and Break detection errors.

Signed-off-by: Nava kishore Manne <navam@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
[stelford@cadence.com: cherry picked from
https://github.com/Xilinx/linux-xlnx commit
b1cf74970df5470ffbc8e7876a9edf5e3498ef94]
Signed-off-by: Scott Telford <stelford@cadence.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/xilinx_uartps.c

index 5119997..39f41bf 100644 (file)
@@ -248,48 +248,46 @@ static void cdns_uart_handle_rx(void *dev_id, unsigned int isrstatus)
                status_mask = port->read_status_mask;
                status_mask &= ~port->ignore_status_mask;
 
-               if ((isrstatus & CDNS_UART_IXR_TOUT) ||
-                   (isrstatus & CDNS_UART_IXR_RXTRIG)) {
-                       if (data &&
-                           (port->read_status_mask & CDNS_UART_IXR_BRK)) {
-                               port->read_status_mask &= ~CDNS_UART_IXR_BRK;
-                               port->icount.brk++;
-                               if (uart_handle_break(port))
-                                       continue;
-                       }
-
-                       if (uart_handle_sysrq_char(port, data))
+               if (data &&
+                   (port->read_status_mask & CDNS_UART_IXR_BRK)) {
+                       port->read_status_mask &= ~CDNS_UART_IXR_BRK;
+                       port->icount.brk++;
+                       if (uart_handle_break(port))
                                continue;
+               }
 
-                       if (is_rxbs_support) {
-                               if ((rxbs_status & CDNS_UART_RXBS_PARITY)
-                                   && (status_mask & CDNS_UART_IXR_PARITY)) {
-                                       port->icount.parity++;
-                                       status = TTY_PARITY;
-                               }
-                               if ((rxbs_status & CDNS_UART_RXBS_FRAMING)
-                                   && (status_mask & CDNS_UART_IXR_PARITY)) {
-                                       port->icount.frame++;
-                                       status = TTY_FRAME;
-                               }
-                       } else {
-                               if (isrstatus & CDNS_UART_IXR_PARITY) {
-                                       port->icount.parity++;
-                                       status = TTY_PARITY;
-                               }
-                               if ((isrstatus & CDNS_UART_IXR_FRAMING) &&
-                                   !framerrprocessed) {
-                                       port->icount.frame++;
-                                       status = TTY_FRAME;
-                               }
+               if (uart_handle_sysrq_char(port, data))
+                       continue;
+
+               if (is_rxbs_support) {
+                       if ((rxbs_status & CDNS_UART_RXBS_PARITY)
+                           && (status_mask & CDNS_UART_IXR_PARITY)) {
+                               port->icount.parity++;
+                               status = TTY_PARITY;
+                       }
+                       if ((rxbs_status & CDNS_UART_RXBS_FRAMING)
+                           && (status_mask & CDNS_UART_IXR_PARITY)) {
+                               port->icount.frame++;
+                               status = TTY_FRAME;
                        }
-                       if (isrstatus & CDNS_UART_IXR_OVERRUN) {
-                               port->icount.overrun++;
-                               tty_insert_flip_char(&port->state->port, 0,
-                                                    TTY_OVERRUN);
+               } else {
+                       if (isrstatus & CDNS_UART_IXR_PARITY) {
+                               port->icount.parity++;
+                               status = TTY_PARITY;
                        }
-                       tty_insert_flip_char(&port->state->port, data, status);
+                       if ((isrstatus & CDNS_UART_IXR_FRAMING) &&
+                           !framerrprocessed) {
+                               port->icount.frame++;
+                               status = TTY_FRAME;
+                       }
+               }
+               if (isrstatus & CDNS_UART_IXR_OVERRUN) {
+                       port->icount.overrun++;
+                       tty_insert_flip_char(&port->state->port, 0,
+                                            TTY_OVERRUN);
                }
+               tty_insert_flip_char(&port->state->port, data, status);
+               isrstatus = 0;
        }
        spin_unlock(&port->lock);
        tty_flip_buffer_push(&port->state->port);