aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial
diff options
context:
space:
mode:
authorStefan Agner <stefan@agner.ch>2015-01-10 03:33:46 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-02-02 13:09:55 -0500
commit011f5bde62890c39440859c8077a0a5a6aca316d (patch)
treecd220f8bcb7a8354b2ddcbfe5419228dae8e2dfc /drivers/tty/serial
parent4a818c4396cb8f0d00b48921654e7918ed54f17f (diff)
serial: fsl_lpuart: update RX timer on successful DMA transfer
To end a DMA transfer which did not consume a whole buffer (e.g. one character only), a RX timer is used. When lots of data are received the DMA transfer will complete and setup another DMA transfer, which in turn might complete again. In this cases, it is not necessary to abort the DMA transfers using the RX timer. This change pushes the RX timer timeout into the future each time a DMA transfer completed. Aborting the DMA was not very harmful, since the next received character lead to setup of another RX DMA. Signed-off-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r--drivers/tty/serial/fsl_lpuart.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 0ea0af76cb9a..914f9a2a0157 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -462,6 +462,7 @@ static void lpuart_dma_rx_complete(void *arg)
462 unsigned long flags; 462 unsigned long flags;
463 463
464 async_tx_ack(sport->dma_rx_desc); 464 async_tx_ack(sport->dma_rx_desc);
465 mod_timer(&sport->lpuart_timer, jiffies + sport->dma_rx_timeout);
465 466
466 spin_lock_irqsave(&sport->port.lock, flags); 467 spin_lock_irqsave(&sport->port.lock, flags);
467 468