diff options
Diffstat (limited to 'drivers/tty/serial/sccnxp.c')
-rw-r--r-- | drivers/tty/serial/sccnxp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/tty/serial/sccnxp.c b/drivers/tty/serial/sccnxp.c index c5f0e964ec05..c7dec1678f65 100644 --- a/drivers/tty/serial/sccnxp.c +++ b/drivers/tty/serial/sccnxp.c | |||
@@ -305,14 +305,19 @@ static void sccnxp_handle_rx(struct uart_port *port) | |||
305 | if (unlikely(sr)) { | 305 | if (unlikely(sr)) { |
306 | if (sr & SR_BRK) { | 306 | if (sr & SR_BRK) { |
307 | port->icount.brk++; | 307 | port->icount.brk++; |
308 | sccnxp_port_write(port, SCCNXP_CR_REG, | ||
309 | CR_CMD_BREAK_RESET); | ||
308 | if (uart_handle_break(port)) | 310 | if (uart_handle_break(port)) |
309 | continue; | 311 | continue; |
310 | } else if (sr & SR_PE) | 312 | } else if (sr & SR_PE) |
311 | port->icount.parity++; | 313 | port->icount.parity++; |
312 | else if (sr & SR_FE) | 314 | else if (sr & SR_FE) |
313 | port->icount.frame++; | 315 | port->icount.frame++; |
314 | else if (sr & SR_OVR) | 316 | else if (sr & SR_OVR) { |
315 | port->icount.overrun++; | 317 | port->icount.overrun++; |
318 | sccnxp_port_write(port, SCCNXP_CR_REG, | ||
319 | CR_CMD_STATUS_RESET); | ||
320 | } | ||
316 | 321 | ||
317 | sr &= port->read_status_mask; | 322 | sr &= port->read_status_mask; |
318 | if (sr & SR_BRK) | 323 | if (sr & SR_BRK) |