diff options
author | ian <ian@FreeBSD.org> | 2015-05-23 19:27:04 +0000 |
---|---|---|
committer | ian <ian@FreeBSD.org> | 2015-05-23 19:27:04 +0000 |
commit | 5ba1e43ae8e1813da545e99ca49d014da8258d59 (patch) | |
tree | ef692c50fa13770b991f4c1a67202033af197850 /sys/dev/uart/uart_dev_pl011.c | |
parent | 18d949556563b32c5c9cf8428aacc920b4acfc1c (diff) | |
download | FreeBSD-src-5ba1e43ae8e1813da545e99ca49d014da8258d59.zip FreeBSD-src-5ba1e43ae8e1813da545e99ca49d014da8258d59.tar.gz |
MFC r272399, r272602, r274451, r274452:
Add uart driver for Qualcomm MSM 7000/8000 series chips.
It is working on IFC6410 board which has Qualcomm Snapdragon SoC.
Use documented compat string for msm uart.
Make PL011 UART to wait on putc only when TX FIFO is full
Make uart_bus_fdt a decendant of ofwbus
Diffstat (limited to 'sys/dev/uart/uart_dev_pl011.c')
-rw-r--r-- | sys/dev/uart/uart_dev_pl011.c | 4 |
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); } |