summaryrefslogtreecommitdiff
path: root/sys/dev/isa
diff options
context:
space:
mode:
authorJason Downs <downsj@cvs.openbsd.org>1998-09-15 01:40:09 +0000
committerJason Downs <downsj@cvs.openbsd.org>1998-09-15 01:40:09 +0000
commit5c307f137b9ab5db28a35cfd1ec5be58bae697bd (patch)
tree4e4bb20c11d0bd34db6e11ebbcc3827590f53894 /sys/dev/isa
parent716bc1cdf3619fc744ddf62973acf3a83cd982b1 (diff)
It appears that some drives are causing the controller to
interrupt too quickly. It also appears that such drives do not conform to the MMC2 specifications. This needs to be fixed correctly and the extra check for NULL removed from the following if(); but clearing the interrupt appears to be a valid work around.
Diffstat (limited to 'sys/dev/isa')
-rw-r--r--sys/dev/isa/wdc.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/dev/isa/wdc.c b/sys/dev/isa/wdc.c
index d530e3d3104..316263e740a 100644
--- a/sys/dev/isa/wdc.c
+++ b/sys/dev/isa/wdc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: wdc.c,v 1.34 1998/09/14 01:55:52 downsj Exp $ */
+/* $OpenBSD: wdc.c,v 1.35 1998/09/15 01:40:08 downsj Exp $ */
/* $NetBSD: wd.c,v 1.150 1996/05/12 23:54:03 mycroft Exp $ */
/*
@@ -1550,7 +1550,15 @@ wdcintr(arg)
struct wdc_softc *wdc = arg;
struct wdc_xfer *xfer;
- if ((wdc->sc_flags & WDCF_IRQ_WAIT) == 0) {
+ /*
+ * It appears that some drives are causing the controller to
+ * interrupt too quickly. It also appears that such drives do not
+ * conform to the MMC2 specifications. This needs to be fixed
+ * correctly and the extra check for NULL removed from the following
+ * if().
+ */
+ if (((wdc->sc_flags & WDCF_IRQ_WAIT) == 0)
+ || (wdc->sc_xfer.tqh_first == NULL)) {
bus_space_tag_t iot = wdc->sc_iot;
bus_space_handle_t ioh = wdc->sc_ioh;
u_char s;