serial/ns16550: add an option to avoid hanging on broken platforms
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>
This commit is contained in:
parent
94bcfe524c
commit
7de0fe1ac3
8
README
8
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
|
||||
|
@ -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)) || \
|
||||
|
Loading…
Reference in New Issue
Block a user