serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly
authorNava kishore Manne <nava.manne@xilinx.com>
Tue, 18 Dec 2018 12:18:42 +0000 (13:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Jan 2019 16:38:46 +0000 (17:38 +0100)
commit 260683137ab5276113fc322fdbbc578024185fee upstream.

This patch Correct the RX interrupt mask value to handle the
RX interrupts properly.

Fixes: c8dbdc842d30 ("serial: xuartps: Rewrite the interrupt handling logic")
Signed-off-by: Nava kishore Manne <nava.manne@xilinx.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/xilinx_uartps.c

index a48f19b..6ed7473 100644 (file)
@@ -125,7 +125,7 @@ MODULE_PARM_DESC(rx_timeout, "Rx timeout, 1-255");
 #define CDNS_UART_IXR_RXTRIG   0x00000001 /* RX FIFO trigger interrupt */
 #define CDNS_UART_IXR_RXFULL   0x00000004 /* RX FIFO full interrupt. */
 #define CDNS_UART_IXR_RXEMPTY  0x00000002 /* RX FIFO empty interrupt. */
-#define CDNS_UART_IXR_MASK     0x00001FFF /* Valid bit mask */
+#define CDNS_UART_IXR_RXMASK   0x000021e7 /* Valid RX bit mask */
 
        /*
         * Do not enable parity error interrupt for the following
@@ -362,7 +362,7 @@ static irqreturn_t cdns_uart_isr(int irq, void *dev_id)
                cdns_uart_handle_tx(dev_id);
                isrstatus &= ~CDNS_UART_IXR_TXEMPTY;
        }
-       if (isrstatus & CDNS_UART_IXR_MASK)
+       if (isrstatus & CDNS_UART_IXR_RXMASK)
                cdns_uart_handle_rx(dev_id, isrstatus);
 
        spin_unlock(&port->lock);