diff options
| author | Sam Leffler <sam@FreeBSD.org> | 2008-03-12 19:09:20 +0000 |
|---|---|---|
| committer | Sam Leffler <sam@FreeBSD.org> | 2008-03-12 19:09:20 +0000 |
| commit | 823c77d78b6b67798c45cd09ead36c11555d883d (patch) | |
| tree | 08dd20b0dcf8327aa908c2984f679f7911e00bd6 /sys/dev/uart/uart_dev_ns8250.c | |
| parent | 16630f343069b22e9c63c8c25848654dc7b9b3af (diff) | |
Notes
Diffstat (limited to 'sys/dev/uart/uart_dev_ns8250.c')
| -rw-r--r-- | sys/dev/uart/uart_dev_ns8250.c | 15 |
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); |
