diff options
author | Nava kishore Manne <nava.manne@xilinx.com> | 2016-09-22 16:58:15 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-09-27 12:54:41 +0200 |
commit | 212d249b6acbe00ac3617938433ce785c2d68e88 (patch) | |
tree | 66703d0f852d89f1228a9af6ce8411632a8a7838 /drivers/tty/serial/xilinx_uartps.c | |
parent | c8dbdc842d30618e4f7e315e3b0e6c43de7915f3 (diff) | |
download | linux-stable-212d249b6acbe00ac3617938433ce785c2d68e88.tar.gz linux-stable-212d249b6acbe00ac3617938433ce785c2d68e88.tar.bz2 linux-stable-212d249b6acbe00ac3617938433ce785c2d68e88.zip |
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 <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>
Diffstat (limited to 'drivers/tty/serial/xilinx_uartps.c')
-rw-r--r-- | drivers/tty/serial/xilinx_uartps.c | 72 |
1 files 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); |