diff options
author | Scott Wood <scottwood@freescale.com> | 2012-09-18 18:19:05 -0500 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2012-11-26 15:41:20 -0600 |
commit | cb55b3320014b7f6014416c556fe506efbf0a84b (patch) | |
tree | ece89cb1b0454dda903960f615cc2cac1f7bebbb | |
parent | 48cbc3a8761fad6624fb63f1d56f09a30322bfd9 (diff) | |
download | u-boot-imx-cb55b3320014b7f6014416c556fe506efbf0a84b.zip u-boot-imx-cb55b3320014b7f6014416c556fe506efbf0a84b.tar.gz u-boot-imx-cb55b3320014b7f6014416c556fe506efbf0a84b.tar.bz2 |
serial/ns16550: wait for TEMT before initializing
TEMT is set when the transmitter is totally empty and all output has
finished.
This prevents output problems (including a loss of synchronization
observed on p2020 that persisted for quite a while) if SPL has output
still on its way out.
Signed-off-by: Scott Wood <scottwood@freescale.com>
--
v2: fixed typo in subject, and explained what the bit does in the changelog
-rw-r--r-- | drivers/serial/ns16550.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 9027781..bbd91ca 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -36,6 +36,9 @@ void NS16550_init(NS16550_t com_port, int baud_divisor) { + while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT)) + ; + serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier); #if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \ defined(CONFIG_AM33XX) |