diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 5240f9c080c363b1dd19e60713830498eaf06e39..a1d8174a098bdca005b19269aff85a5623d330f9 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1122,7 +1122,7 @@ static void imx_setup_ufcr(struct imx_port *sport,
 static void imx_uart_dma_exit(struct imx_port *sport)
 {
 	if (sport->dma_chan_rx) {
-		dmaengine_terminate_all(sport->dma_chan_rx);
+		dmaengine_terminate_sync(sport->dma_chan_rx);
 		dma_release_channel(sport->dma_chan_rx);
 		sport->dma_chan_rx = NULL;
 		sport->rx_cookie = -EINVAL;
@@ -1131,7 +1131,7 @@ static void imx_uart_dma_exit(struct imx_port *sport)
 	}
 
 	if (sport->dma_chan_tx) {
-		dmaengine_terminate_all(sport->dma_chan_tx);
+		dmaengine_terminate_sync(sport->dma_chan_tx);
 		dma_release_channel(sport->dma_chan_tx);
 		sport->dma_chan_tx = NULL;
 	}
@@ -1351,8 +1351,8 @@ static void imx_shutdown(struct uart_port *port)
 	if (sport->dma_is_enabled) {
 		sport->dma_is_rxing = 0;
 		sport->dma_is_txing = 0;
-		dmaengine_terminate_all(sport->dma_chan_tx);
-		dmaengine_terminate_all(sport->dma_chan_rx);
+		dmaengine_terminate_sync(sport->dma_chan_tx);
+		dmaengine_terminate_sync(sport->dma_chan_rx);
 
 		spin_lock_irqsave(&sport->port.lock, flags);
 		imx_stop_tx(port);