summaryrefslogtreecommitdiffstats
path: root/sys/dev/uart/uart_dev_pl011.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/uart/uart_dev_pl011.c')
-rw-r--r--sys/dev/uart/uart_dev_pl011.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/uart/uart_dev_pl011.c b/sys/dev/uart/uart_dev_pl011.c
index 3253cd1..2e5ac8c 100644
--- a/sys/dev/uart/uart_dev_pl011.c
+++ b/sys/dev/uart/uart_dev_pl011.c
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
#define DR_OE (1 << 11) /* Overrun error */
#define UART_FR 0x06 /* Flag register */
+#define FR_TXFF (1 << 5) /* Transmit FIFO/reg full */
#define FR_RXFF (1 << 6) /* Receive FIFO/reg full */
#define FR_TXFE (1 << 7) /* Transmit FIFO/reg empty */
@@ -194,7 +195,8 @@ static void
uart_pl011_putc(struct uart_bas *bas, int c)
{
- while (!(__uart_getreg(bas, UART_FR) & FR_TXFE))
+ /* Wait when TX FIFO full. Push character otherwise. */
+ while (__uart_getreg(bas, UART_FR) & FR_TXFF)
;
__uart_setreg(bas, UART_DR, c & 0xff);
}
OpenPOWER on IntegriCloud