diff options
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r-- | drivers/tty/serial/imx.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 62c0cd5fe7c7..7a33b1d53015 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c | |||
@@ -436,12 +436,14 @@ static void imx_stop_rx(struct uart_port *port) | |||
436 | struct imx_port *sport = (struct imx_port *)port; | 436 | struct imx_port *sport = (struct imx_port *)port; |
437 | unsigned long temp; | 437 | unsigned long temp; |
438 | 438 | ||
439 | /* | 439 | if (sport->dma_is_enabled && sport->dma_is_rxing) { |
440 | * We are maybe in the SMP context, so if the DMA TX thread is running | 440 | if (sport->port.suspended) { |
441 | * on other cpu, we have to wait for it to finish. | 441 | dmaengine_terminate_all(sport->dma_chan_rx); |
442 | */ | 442 | sport->dma_is_rxing = 0; |
443 | if (sport->dma_is_enabled && sport->dma_is_rxing) | 443 | } else { |
444 | return; | 444 | return; |
445 | } | ||
446 | } | ||
445 | 447 | ||
446 | temp = readl(sport->port.membase + UCR2); | 448 | temp = readl(sport->port.membase + UCR2); |
447 | writel(temp & ~UCR2_RXEN, sport->port.membase + UCR2); | 449 | writel(temp & ~UCR2_RXEN, sport->port.membase + UCR2); |