serial: imx: fix overrun interrupts in DMA mode
commit 3ee82c6e41f3d2212647ce0bc5a05a0f69097824 upstream. Commit76821e222c
("serial: imx: ensure that RX irqs are off if RX is off") accidentally enabled overrun interrupts unconditionally when deferring DMA enable until after the receiver has been enabled during startup. Fix this by using the DMA-initialised instead of DMA-enabled flag to determine whether overrun interrupts should be enabled. Note that overrun interrupts are already accounted for in imx_uart_clear_rx_errors() when using DMA since commit41d98b5da9
("serial: imx-serial - update RX error counters when DMA is used"). Fixes:76821e222c
("serial: imx: ensure that RX irqs are off if RX is off") Cc: stable@vger.kernel.org # 4.17 Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://lore.kernel.org/r/20220411081957.7846-1-johan@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c0ea202fbc
commit
858d93280e
|
@ -1438,7 +1438,7 @@ static int imx_uart_startup(struct uart_port *port)
|
||||||
imx_uart_writel(sport, ucr1, UCR1);
|
imx_uart_writel(sport, ucr1, UCR1);
|
||||||
|
|
||||||
ucr4 = imx_uart_readl(sport, UCR4) & ~(UCR4_OREN | UCR4_INVR);
|
ucr4 = imx_uart_readl(sport, UCR4) & ~(UCR4_OREN | UCR4_INVR);
|
||||||
if (!sport->dma_is_enabled)
|
if (!dma_is_inited)
|
||||||
ucr4 |= UCR4_OREN;
|
ucr4 |= UCR4_OREN;
|
||||||
if (sport->inverted_rx)
|
if (sport->inverted_rx)
|
||||||
ucr4 |= UCR4_INVR;
|
ucr4 |= UCR4_INVR;
|
||||||
|
|
Loading…
Reference in New Issue