@@ -1274,6 +1274,7 @@ static int cdns_uart_console_setup(struc
int bits = 8;
int parity = 'n';
int flow = 'n';
+ unsigned long time_out;
if (co->index < 0 || co->index >= CDNS_UART_NR_PORTS)
return -EINVAL;
@@ -1287,6 +1288,13 @@ static int cdns_uart_console_setup(struc
if (options)
uart_parse_options(options, &baud, &parity, &bits, &flow);
+ /* Wait for tx_empty before setting up the console */
+ time_out = jiffies + usecs_to_jiffies(TX_TIMEOUT);
+
+ while (time_before(jiffies, time_out) &&
+ cdns_uart_tx_empty(port) != TIOCSER_TEMT)
+ cpu_relax();
+
return uart_set_options(port, co, baud, parity, bits, flow);
}