diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index bbd91ca..d75d814 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -36,7 +36,9 @@
 
 void NS16550_init(NS16550_t com_port, int baud_divisor)
 {
-	while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT))
+	int mode = serial_in(&com_port->fcr) & UART_FCR_FIFO_EN;
+
+	while (!(serial_in(&com_port->lsr) & UART_LSR_TEMT ^ mode))
 		;
 
 	serial_out(CONFIG_SYS_NS16550_IER, &com_port->ier);
