summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias.schiffer@ew.tq-group.com>2020-05-28 17:47:47 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-05-29 13:00:54 +0200
commitd1d996afbd2bca3bf3c484fc1f7a738134d65207 (patch)
tree10ab28dca098c45c305199690be84cb67bedd122
parent423d9118c6240eabb78bd3c75fc91ba6e3151431 (diff)
downloadlinux-stable-d1d996afbd2bca3bf3c484fc1f7a738134d65207.tar.gz
linux-stable-d1d996afbd2bca3bf3c484fc1f7a738134d65207.tar.bz2
linux-stable-d1d996afbd2bca3bf3c484fc1f7a738134d65207.zip
tty: serial: imx: clear Ageing Timer Interrupt in handler
The AGTIM flag must be cleared explicitly, otherwise the IRQ handler will be called in an endless loop. Fortunately, this issue currently doesn't affect mainline kernels in practice, as the the RX FIFO trigger level is set to 1 in UFCR. When setting the trigger level to a higher number, the issue is trivially reproducible by any RX without DMA that doesn't fill the FIFO up to the configured level. Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> Link: https://lore.kernel.org/r/20200528154747.14201-1-matthias.schiffer@ew.tq-group.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/tty/serial/imx.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 6b078e395931..1265e8d86d8a 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -909,6 +909,8 @@ static irqreturn_t imx_uart_int(int irq, void *dev_id)
usr2 &= ~USR2_ORE;
if (usr1 & (USR1_RRDY | USR1_AGTIM)) {
+ imx_uart_writel(sport, USR1_AGTIM, USR1);
+
__imx_uart_rxint(irq, dev_id);
ret = IRQ_HANDLED;
}