summaryrefslogtreecommitdiffstats
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
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
-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