OSDN Git Service

serial: imx: Stop to receive in .stop_rx()
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Fri, 2 Mar 2018 10:07:25 +0000 (11:07 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Mar 2018 18:21:01 +0000 (10:21 -0800)
When the UART is used in DMA mode, .stop_rx() does nothing if the port
isn't suspended. This is wrong as .stop_rx() should stop receiving
characters unconditionally. When the port is about to be closed the DMA
channel is stopped in .shutdown(), so this isn't necessary to be in
.stop_rx() here, too.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/imx.c

index 9b92c49..0ea9882 100644 (file)
@@ -442,15 +442,6 @@ static void imx_stop_rx(struct uart_port *port)
        struct imx_port *sport = (struct imx_port *)port;
        u32 ucr1, ucr2;
 
-       if (sport->dma_is_rxing) {
-               if (sport->port.suspended) {
-                       dmaengine_terminate_all(sport->dma_chan_rx);
-                       sport->dma_is_rxing = 0;
-               } else {
-                       return;
-               }
-       }
-
        ucr2 = imx_uart_readl(sport, UCR2);
        imx_uart_writel(sport, ucr2 & ~UCR2_RXEN, UCR2);