Commit 011f5bde authored by Stefan Agner's avatar Stefan Agner Committed by Greg Kroah-Hartman

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: default avatarStefan Agner <stefan@agner.ch>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4a818c43
...@@ -462,6 +462,7 @@ static void lpuart_dma_rx_complete(void *arg) ...@@ -462,6 +462,7 @@ static void lpuart_dma_rx_complete(void *arg)
unsigned long flags; unsigned long flags;
async_tx_ack(sport->dma_rx_desc); async_tx_ack(sport->dma_rx_desc);
mod_timer(&sport->lpuart_timer, jiffies + sport->dma_rx_timeout);
spin_lock_irqsave(&sport->port.lock, flags); spin_lock_irqsave(&sport->port.lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment