summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2001-08-16 17:30:55 +0000
committerimp <imp@FreeBSD.org>2001-08-16 17:30:55 +0000
commitc0669fbb6c5ec5393c0345765ef15a7cc46732ce (patch)
tree9487aaac9eb4ef4601003c350cb6ef968f3cff73 /sys
parent6599cbcf86427906dcc46f66e6e48d6d694f9a23 (diff)
downloadFreeBSD-src-c0669fbb6c5ec5393c0345765ef15a7cc46732ce.zip
FreeBSD-src-c0669fbb6c5ec5393c0345765ef15a7cc46732ce.tar.gz
Fix the so-called "half-baked-probe" code that I wrote a long time ago
to properly clear the interrupt register on the no error case. Also, set the mcr register to zero when we find we can't support the chip. This fixes the hang on sio driver attach problem in the new pci pccard code that some people have reported. At least on my machine. I'd like to get this into 4.4. Submitted by: bde PR: kern/29742 MFC after: 1 day
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/sio/sio.c2
-rw-r--r--sys/isa/sio.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/dev/sio/sio.c b/sys/dev/sio/sio.c
index 954ebd4..67ef253 100644
--- a/sys/dev/sio/sio.c
+++ b/sys/dev/sio/sio.c
@@ -950,11 +950,13 @@ sioprobe(dev, xrid)
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
+ sio_setreg(com, com_mcr, 0);
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
+ sio_setreg(com, com_ier, 0);
sio_setreg(com, com_cfcr, CFCR_8BITS);
mtx_unlock_spin(&sio_lock);
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);
diff --git a/sys/isa/sio.c b/sys/isa/sio.c
index 954ebd4..67ef253 100644
--- a/sys/isa/sio.c
+++ b/sys/isa/sio.c
@@ -950,11 +950,13 @@ sioprobe(dev, xrid)
} else {
/* Unknown, Just omit this chip.. XXX */
result = ENXIO;
+ sio_setreg(com, com_mcr, 0);
}
} else {
/* OK. this is well-known guys */
CLR_FLAG(dev, COM_C_IIR_TXRDYBUG);
}
+ sio_setreg(com, com_ier, 0);
sio_setreg(com, com_cfcr, CFCR_8BITS);
mtx_unlock_spin(&sio_lock);
bus_release_resource(dev, SYS_RES_IOPORT, rid, port);
OpenPOWER on IntegriCloud