diff options
author | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-08-25 18:02:18 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@cvs.openbsd.org> | 2012-08-25 18:02:18 +0000 |
commit | 7bc81e7c6c1ccaa21a6e9210d61d47147e065dd6 (patch) | |
tree | 378e1b5d54b02a0939cca5ef801bc11350ddb2c0 /sys/dev/ic | |
parent | 65194e1f16521034e23b4c3f62caab6dd95e6592 (diff) |
Better detection of the st16650 v1 (with the broken fifo). Gets rid of
false positives like the DUART on the MPC8347 as found on socppc.
ok deraadt@
Diffstat (limited to 'sys/dev/ic')
-rw-r--r-- | sys/dev/ic/com.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c index f394c970007..44dcf93a992 100644 --- a/sys/dev/ic/com.c +++ b/sys/dev/ic/com.c @@ -1,4 +1,4 @@ -/* $OpenBSD: com.c,v 1.151 2012/08/25 17:40:34 kettenis Exp $ */ +/* $OpenBSD: com.c,v 1.152 2012/08/25 18:02:17 kettenis Exp $ */ /* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */ /* @@ -1633,7 +1633,10 @@ com_attach_subr(struct com_softc *sc) if (sc->sc_uarttype == COM_UART_16550A) { /* Probe for ST16650s */ bus_space_write_1(iot, ioh, com_lcr, lcr | LCR_DLAB); if (bus_space_read_1(iot, ioh, com_efr) == 0) { - sc->sc_uarttype = COM_UART_ST16650; + bus_space_write_1(iot, ioh, com_efr, EFR_CTS); + if (bus_space_read_1(iot, ioh, com_efr) != 0) + sc->sc_uarttype = COM_UART_ST16650; + bus_space_write_1(iot, ioh, com_efr, 0); } else { bus_space_write_1(iot, ioh, com_lcr, LCR_EFR); if (bus_space_read_1(iot, ioh, com_efr) == 0) |