Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7722c240 authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Greg Kroah-Hartman
Browse files

serial: imx: dma_unmap_sg buffers on shutdown



This properly unmaps DMA SG on device shutdown.

Reported-by: default avatarNandor Han <nandor.han@ge.com>
Suggested-by: default avatarNandor Han <nandor.han@ge.com>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 676a31d8
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -1425,10 +1425,18 @@ static void imx_uart_shutdown(struct uart_port *port)
	u32 ucr1, ucr2;
	u32 ucr1, ucr2;


	if (sport->dma_is_enabled) {
	if (sport->dma_is_enabled) {
		sport->dma_is_rxing = 0;
		sport->dma_is_txing = 0;
		dmaengine_terminate_sync(sport->dma_chan_tx);
		dmaengine_terminate_sync(sport->dma_chan_tx);
		if (sport->dma_is_txing) {
			dma_unmap_sg(sport->port.dev, &sport->tx_sgl[0],
				     sport->dma_tx_nents, DMA_TO_DEVICE);
			sport->dma_is_txing = 0;
		}
		dmaengine_terminate_sync(sport->dma_chan_rx);
		dmaengine_terminate_sync(sport->dma_chan_rx);
		if (sport->dma_is_rxing) {
			dma_unmap_sg(sport->port.dev, &sport->rx_sgl,
				     1, DMA_FROM_DEVICE);
			sport->dma_is_rxing = 0;
		}


		spin_lock_irqsave(&sport->port.lock, flags);
		spin_lock_irqsave(&sport->port.lock, flags);
		imx_uart_stop_tx(port);
		imx_uart_stop_tx(port);