[U-Boot,v2,02/22] serial/ns16550: wait for TEMT before initializing

Message ID 1351562710-6237-3-git-send-email-scottwood@freescale.com
State Accepted
Delegated to: Scott Wood
Headers show

Commit Message

Scott Wood Oct. 30, 2012, 2:04 a.m.
TEMT is set when the transmitter is totally empty and all output has

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
 drivers/serial/ns16550.c |    3 +++
 1 file changed, 3 insertions(+)


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)) || \