]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
serial: xuartps: Removed unwanted checks while reading the error conditions
authorNava kishore Manne <nava.manne@xilinx.com>
Wed, 16 Dec 2015 12:30:06 +0000 (18:00 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 2 Feb 2016 08:25:51 +0000 (09:25 +0100)
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>
drivers/tty/serial/xilinx_uartps.c

index f214c7f4f2cb85212b54c9b3f48d39b8125b7c2c..5e7d35d6e977959647c95ff7066b6427a29b2ca0 100644 (file)
@@ -270,47 +270,45 @@ static void cdns_uart_handle_rx(void *dev_id, unsigned int isrstatus)
                isrstatus &= port->read_status_mask;
                isrstatus &= ~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 (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;
+               }
 
 #ifdef SUPPORT_SYSRQ
-                       /*
-                        * uart_handle_sysrq_char() doesn't work if
-                        * spinlocked, for some reason
-                        */
-                        if (port->sysrq) {
-                               spin_unlock(&port->lock);
-                               if (uart_handle_sysrq_char(port,
-                                                       (unsigned char)data)) {
-                                       spin_lock(&port->lock);
-                                       continue;
-                               }
+               /*
+                * uart_handle_sysrq_char() doesn't work if
+                * spinlocked, for some reason
+                */
+                if (port->sysrq) {
+                       spin_unlock(&port->lock);
+                       if (uart_handle_sysrq_char(port,
+                                               (unsigned char)data)) {
                                spin_lock(&port->lock);
+                               continue;
                        }
+                       spin_lock(&port->lock);
+               }
 #endif
-                       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 (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);
+               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 (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);