aboutsummaryrefslogtreecommitdiff
path: root/drivers/arm/pl011/pl011_console.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/arm/pl011/pl011_console.c')
-rw-r--r--drivers/arm/pl011/pl011_console.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/arm/pl011/pl011_console.c b/drivers/arm/pl011/pl011_console.c
index 3b0e237..06e357f 100644
--- a/drivers/arm/pl011/pl011_console.c
+++ b/drivers/arm/pl011/pl011_console.c
@@ -66,15 +66,18 @@ void console_init(unsigned long base_addr)
}
+#define WAIT_UNTIL_UART_FREE(base) while ((pl011_read_fr(base)\
+ & PL011_UARTFR_TXFF) == 1)
int console_putc(int c)
{
assert(uart_base);
- if (c == '\n')
- console_putc('\r');
+ if (c == '\n') {
+ WAIT_UNTIL_UART_FREE(uart_base);
+ pl011_write_dr(uart_base, '\r');
+ }
- while ((pl011_read_fr(uart_base) & PL011_UARTFR_TXFF) == 1)
- ;
+ WAIT_UNTIL_UART_FREE(uart_base);
pl011_write_dr(uart_base, c);
return c;
}