tty: serial: fsl_lpuart: terminate DMA on buffer flush
authorStefan Agner <stefan@agner.ch>
Mon, 26 Jan 2015 00:10:16 +0000 (01:10 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 2 Feb 2015 18:09:55 +0000 (10:09 -0800)
commitbfc2e07f910891516c8eeef61859fa17369fea9f
treedff78a4eb45e351e013a09253e06debddfcb1a81
parent2fe605df325abfa2d36f63469fa960cd40d8cf50
tty: serial: fsl_lpuart: terminate DMA on buffer flush

On uart buffer flush, serial core resets the circular buffer.
If a DMA transfer is in progress at that time, the callback
lpuart_dma_tx_complete will move buffer's tail unconditionally,
hence tail moves beyond head. Use the flush_buffer hook to
terminate the DMA imeaditely and avoid lpuart_dma_tx_complete
being called in this situation.

This bug often showed up while shutdown and lead to duplicate
serial console output.

Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/fsl_lpuart.c