serial: pl01x: Modify pending callback to test if transmit FIFO is empty
authorLukasz Majewski <lukma@denx.de>
Fri, 19 May 2023 10:43:53 +0000 (12:43 +0200)
committerStefano Babic <sbabic@denx.de>
Tue, 11 Jul 2023 12:40:04 +0000 (14:40 +0200)
commita21789194873d768ba829eb0169c7f0e3ceb85ef
treeb186deb8179b6041f31946c6b385ee8d4e204528
parent875752adc8b6a25ebaf9f45cb3fd206065a80f0e
serial: pl01x: Modify pending callback to test if transmit FIFO is empty

Before this change the FR_TXFF (Transmit FIFO full) bit (5 in
HW_UARTDBG_FR) has been used to assess if there is still data pending
to be sent via UART.

This approach is problematic, as it may happen that serial is in the
middle of transmission (so the TX FIFO is NOT full anymore) and this
test returns true infinitely. As a result, for example in _serial_flush()
DM serial function we are locked in endless while().

The fix here is to test explicitly if the TX FIFO is empty.

Signed-off-by: Lukasz Majewski <lukma@denx.de>
drivers/serial/serial_pl01x.c