diff options
author | marcel <marcel@FreeBSD.org> | 2011-05-26 17:02:56 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2011-05-26 17:02:56 +0000 |
commit | d7214daa609442aa65fdbb054db56a3ffc1ee75a (patch) | |
tree | 1e0e4004e17f8019f4afe4aec0cd979070995bab /sys/dev/uart | |
parent | d59ac47d9eb23e6ffcb7f5d652fa72fe8632f98c (diff) | |
download | FreeBSD-src-d7214daa609442aa65fdbb054db56a3ffc1ee75a.zip FreeBSD-src-d7214daa609442aa65fdbb054db56a3ffc1ee75a.tar.gz |
Ignore MCR[6] during the probe to fix a false negative. Bit 6 of the
MCR register on the Sunix Sun1699 chip tends to be set but doesn't
seem to have a function. That is, FreeBSD just works (provided the
correct RCLK is used) regardless.
PR: kern/129663
Diagnostics: Eygene Ryabinkin <rea-fbsd at codelabs.ru>
MFC after: 3 days
Diffstat (limited to 'sys/dev/uart')
-rw-r--r-- | sys/dev/uart/uart_dev_ns8250.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/dev/uart/uart_dev_ns8250.c b/sys/dev/uart/uart_dev_ns8250.c index 3cdd5ad..489be29 100644 --- a/sys/dev/uart/uart_dev_ns8250.c +++ b/sys/dev/uart/uart_dev_ns8250.c @@ -242,8 +242,14 @@ ns8250_probe(struct uart_bas *bas) val = uart_getreg(bas, REG_IIR); if (val & 0x30) return (ENXIO); + /* + * Bit 6 of the MCR (= 0x40) appears to be 1 for the Sun1699 + * chip, but otherwise doesn't seem to have a function. In + * other words, uart(4) works regardless. Ignore that bit so + * the probe succeeds. + */ val = uart_getreg(bas, REG_MCR); - if (val & 0xe0) + if (val & 0xa0) return (ENXIO); return (0); |