diff options
author | Jason Downs <downsj@cvs.openbsd.org> | 1998-09-15 01:40:09 +0000 |
---|---|---|
committer | Jason Downs <downsj@cvs.openbsd.org> | 1998-09-15 01:40:09 +0000 |
commit | 5c307f137b9ab5db28a35cfd1ec5be58bae697bd (patch) | |
tree | 4e4bb20c11d0bd34db6e11ebbcc3827590f53894 | |
parent | 716bc1cdf3619fc744ddf62973acf3a83cd982b1 (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.
-rw-r--r-- | sys/dev/isa/wdc.c | 12 |
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; |