From: Pradeep Goudagunta Date: Fri, 6 Jun 2014 11:18:08 +0000 (+0530) Subject: serial: tegra: update tx_circular buffer only when TX_DMA is in progress X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=5e3dbfca3b14a4a2950255c1628cd53b384d963e;p=deliverable%2Flinux.git serial: tegra: update tx_circular buffer only when TX_DMA is in progress When channel is require to stop transmit then update the Tx circular buffer only when DMA based transfer is in progress. If there is no DMA based transfer then no need to update the Tx buffer. Signed-off-by: Pradeep Goudagunta Signed-off-by: Laxman Dewangan Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/tty/serial/serial-tegra.c b/drivers/tty/serial/serial-tegra.c index d5c2a287b7e7..117d8d1382f9 100644 --- a/drivers/tty/serial/serial-tegra.c +++ b/drivers/tty/serial/serial-tegra.c @@ -482,6 +482,9 @@ static void tegra_uart_stop_tx(struct uart_port *u) struct dma_tx_state state; int count; + if (tup->tx_in_progress != TEGRA_UART_TX_DMA) + return; + dmaengine_terminate_all(tup->tx_dma_chan); dmaengine_tx_status(tup->tx_dma_chan, tup->tx_cookie, &state); count = tup->tx_bytes_requested - state.residue;