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
This commit is contained in:
Marcel Moolenaar 2011-05-26 17:02:56 +00:00
parent 0c50156f91
commit 5bdddc29c2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=222317

View File

@ -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);