The receive FIFO may overflow if data are sent while U-Boot is still booting. In that case, the Overrun flag (STAT[19]) is set and no additional data is stored in the receive FIFO and the user cannot get access to the U-Boot prompt.
Fix this by clearing the Overrun flag in _lpuart32_serial_tstc() Signed-off-by: Sébastien Szymanski <[email protected]> --- drivers/serial/serial_lpuart.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c index bbce59443388..0728feccd131 100644 --- a/drivers/serial/serial_lpuart.c +++ b/drivers/serial/serial_lpuart.c @@ -367,10 +367,13 @@ static int _lpuart32_serial_putc(struct lpuart_serial_plat *plat, static int _lpuart32_serial_tstc(struct lpuart_serial_plat *plat) { struct lpuart_fsl_reg32 *base = plat->reg; - u32 water; + u32 water, stat; - lpuart_read32(plat->flags, &base->water, &water); + lpuart_read32(plat->flags, &base->stat, &stat); + if (stat & STAT_OR) + lpuart_write32(plat->flags, &base->stat, STAT_OR); + lpuart_read32(plat->flags, &base->water, &water); if ((water >> 24) == 0) return 0; -- 2.52.0

