All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] serial/ns16550: add an option to avoid hanging on broken platforms
@ 2013-01-07 11:35 Javier Martinez Canillas
  2013-01-07 11:35 ` [U-Boot] [PATCH 2/2] OMAP3: igep00x0: add CONFIG_SYS_NS16550_BROKEN_TEMT Javier Martinez Canillas
  2013-01-11 14:42 ` [U-Boot] [U-Boot, 1/2] serial/ns16550: add an option to avoid hanging on broken platforms Tom Rini
  0 siblings, 2 replies; 4+ messages in thread
From: Javier Martinez Canillas @ 2013-01-07 11:35 UTC (permalink / raw)
  To: u-boot

Some platforms (e.g. IGEPv2 board) has a broken ns16550 UART that
does not set the TEMT bit when the transmitter is empty in SPL.
This makes U-Boot to hang while waiting for TEMT to be set.

Add a new option to avoid this:

CONFIG_SYS_NS16550_BROKEN_TEMT

16550 UART set the Transmitter Empty (TEMT) Bit when all output
has finished and the transmitter is totally empty. U-Boot waits
for this bit to be set to initialize the serial console. On some
broken platforms this bit is not set in SPL making U-Boot to
hang while waiting for TEMT. Define this option to avoid it.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
---
 README                   |    8 ++++++++
 drivers/serial/ns16550.c |    2 ++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/README b/README
index 78f40df..a89861e 100644
--- a/README
+++ b/README
@@ -616,6 +616,14 @@ The following options need to be configured:
 		boot loader that has already initialized the UART.  Define this
 		variable to flush the UART at init time.
 
+		CONFIG_SYS_NS16550_BROKEN_TEMT
+
+		16550 UART set the Transmitter Empty (TEMT) Bit when all output
+		has finished and the transmitter is totally empty. U-Boot waits
+		for this bit to be set to initialize the serial console. On some
+		broken platforms this bit is not set in SPL making U-Boot to
+		hang while waiting for TEMT. Define this option to avoid it.
+
 
 - Console Interface:
 		Depending on board, define exactly one serial port
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index bbd91ca..87a0917 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -36,8 +36,10 @@
 
 void NS16550_init(NS16550_t com_port, int baud_divisor)
 {
+#if (!defined(CONFIG_SYS_NS16550_BROKEN_TEMT))
 	while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT))
 		;
+#endif
 
 	serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
 #if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
-- 
1.7.7.6

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-01-11 14:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-07 11:35 [U-Boot] [PATCH 1/2] serial/ns16550: add an option to avoid hanging on broken platforms Javier Martinez Canillas
2013-01-07 11:35 ` [U-Boot] [PATCH 2/2] OMAP3: igep00x0: add CONFIG_SYS_NS16550_BROKEN_TEMT Javier Martinez Canillas
2013-01-11 14:42   ` [U-Boot] [U-Boot, " Tom Rini
2013-01-11 14:42 ` [U-Boot] [U-Boot, 1/2] serial/ns16550: add an option to avoid hanging on broken platforms Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.