tty: serial: fsl_lpuart: consider TX FIFO too in tx_empty
authorStefan Agner <stefan@agner.ch>
Tue, 19 Jul 2016 07:43:03 +0000 (13:13 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 31 Aug 2016 13:48:28 +0000 (15:48 +0200)
commitb70b636186de5329a5a8e9e9a254b8d690d8575b
tree20b90917d286e2fbf2dca239aa05ae1d406683cf
parente16b46f190a22587898b331f9d58583b0b166c9a
tty: serial: fsl_lpuart: consider TX FIFO too in tx_empty

Currently the tx_empty callback only considers the Transmit Complete Flag (TC).
The reference manual is not quite clear if the TC flag covers the TX FIFO too.
Debug prints on real hardware have shown that from time to time the TC flag is
asserted (indicating Transmitter idle) while there are still data in the
TX FIFO. Hence, in this case the serial core will call the shutdown callback
even though there are data remaining in the TX FIFO buffers.

Avoid early shutdowns by considering the TX FIFO empty flag too. Also avoid
theoretical race conditions between DMA and the driver by checking whether the
TX DMA is in progress too.

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