summaryrefslogtreecommitdiff
path: root/sys/dev/uart/uart_dev_ns8250.c
diff options
context:
space:
mode:
authorSam Leffler <sam@FreeBSD.org>2008-03-12 19:09:20 +0000
committerSam Leffler <sam@FreeBSD.org>2008-03-12 19:09:20 +0000
commit823c77d78b6b67798c45cd09ead36c11555d883d (patch)
tree08dd20b0dcf8327aa908c2984f679f7911e00bd6 /sys/dev/uart/uart_dev_ns8250.c
parent16630f343069b22e9c63c8c25848654dc7b9b3af (diff)
Notes
Diffstat (limited to 'sys/dev/uart/uart_dev_ns8250.c')
-rw-r--r--sys/dev/uart/uart_dev_ns8250.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c
index abe141b705ac..d2a3dcf229fd 100644
--- a/sys/dev/uart/uart_dev_ns8250.c
+++ b/sys/dev/uart/uart_dev_ns8250.c
@@ -382,11 +382,24 @@ ns8250_bus_attach(struct uart_softc *sc)
{
struct ns8250_softc *ns8250 = (struct ns8250_softc*)sc;
struct uart_bas *bas;
+ unsigned int ivar;
bas = &sc->sc_bas;
ns8250->mcr = uart_getreg(bas, REG_MCR);
- ns8250->fcr = FCR_ENABLE | FCR_RX_MEDH;
+ ns8250->fcr = FCR_ENABLE;
+ if (!resource_int_value("uart", device_get_unit(sc->sc_dev), "flags",
+ &ivar)) {
+ if (UART_FLAGS_FCR_RX_LOW(ivar))
+ ns8250->fcr |= FCR_RX_LOW;
+ else if (UART_FLAGS_FCR_RX_MEDL(ivar))
+ ns8250->fcr |= FCR_RX_MEDL;
+ else if (UART_FLAGS_FCR_RX_HIGH(ivar))
+ ns8250->fcr |= FCR_RX_HIGH;
+ else
+ ns8250->fcr |= FCR_RX_MEDH;
+ } else
+ ns8250->fcr |= FCR_RX_MEDH;
uart_setreg(bas, REG_FCR, ns8250->fcr);
uart_barrier(bas);
ns8250_bus_flush(sc, UART_FLUSH_RECEIVER|UART_FLUSH_TRANSMITTER);