Browse Source

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 <pgoudagunta@nvidia.com>
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Pradeep Goudagunta 11 years ago
parent
commit
5e3dbfca3b
1 changed files with 3 additions and 0 deletions
  1. 3 0
      drivers/tty/serial/serial-tegra.c

+ 3 - 0
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;
 	struct dma_tx_state state;
 	int count;
 	int count;
 
 
+	if (tup->tx_in_progress != TEGRA_UART_TX_DMA)
+		return;
+
 	dmaengine_terminate_all(tup->tx_dma_chan);
 	dmaengine_terminate_all(tup->tx_dma_chan);
 	dmaengine_tx_status(tup->tx_dma_chan, tup->tx_cookie, &state);
 	dmaengine_tx_status(tup->tx_dma_chan, tup->tx_cookie, &state);
 	count = tup->tx_bytes_requested - state.residue;
 	count = tup->tx_bytes_requested - state.residue;