serial: sprd: Add clearing break interrupt operation
commitabeb2e9414
upstream. A break interrupt will be generated if the RX line was pulled low, which means some abnomal behaviors occurred of the UART. In this case, we still need to clear this break interrupt status, otherwise it will cause irq storm to crash the whole system. Fixes:b7396a38fb
("tty/serial: Add Spreadtrum sc9836-uart driver support") Signed-off-by: Yonghan Ye <yonghan.ye@unisoc.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Baolin Wang <baolin.wang7@gmail.com> Link: https://lore.kernel.org/r/925e51b73099c90158e080b8f5bed9b3b38c4548.1575460601.git.baolin.wang7@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3a2f322a2b
commit
f960c6dafc
|
@ -679,6 +679,9 @@ static irqreturn_t sprd_handle_irq(int irq, void *dev_id)
|
|||
if (ims & SPRD_IMSR_TIMEOUT)
|
||||
serial_out(port, SPRD_ICLR, SPRD_ICLR_TIMEOUT);
|
||||
|
||||
if (ims & SPRD_IMSR_BREAK_DETECT)
|
||||
serial_out(port, SPRD_ICLR, SPRD_IMSR_BREAK_DETECT);
|
||||
|
||||
if (ims & (SPRD_IMSR_RX_FIFO_FULL | SPRD_IMSR_BREAK_DETECT |
|
||||
SPRD_IMSR_TIMEOUT))
|
||||
sprd_rx(port);
|
||||
|
|
Loading…
Reference in New Issue