From 212d249b6acbe00ac3617938433ce785c2d68e88 Mon Sep 17 00:00:00 2001 From: Nava kishore Manne Date: Thu, 22 Sep 2016 16:58:15 +0100 Subject: serial: xuartps: Removed unwanted checks while reading the error conditions This patch Remove the unwated checks while reading the parity,framing, overrun and Break detection errors. Signed-off-by: Nava kishore Manne Signed-off-by: Michal Simek [stelford@cadence.com: cherry picked from https://github.com/Xilinx/linux-xlnx commit b1cf74970df5470ffbc8e7876a9edf5e3498ef94] Signed-off-by: Scott Telford Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/xilinx_uartps.c | 72 ++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c index 511999755f5c..39f41bfd7c22 100644 --- a/drivers/tty/serial/xilinx_uartps.c +++ b/drivers/tty/serial/xilinx_uartps.c @@ -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); -- cgit v1.2.3-59-g8ed1b