mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-10 04:26:19 -04:00
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
|
boot loader that has already initialized the UART. Define this
|
||||||
variable to flush the UART at init time.
|
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:
|
- Console Interface:
|
||||||
Depending on board, define exactly one serial port
|
Depending on board, define exactly one serial port
|
||||||
|
@ -36,8 +36,10 @@
|
|||||||
|
|
||||||
void NS16550_init(NS16550_t com_port, int baud_divisor)
|
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))
|
while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT))
|
||||||
;
|
;
|
||||||
|
#endif
|
||||||
|
|
||||||
serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
|
serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
|
||||||
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
|
#if (defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)) || \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user