summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/atapi.c
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>1998-04-13 17:45:56 +0000
committermsmith <msmith@FreeBSD.org>1998-04-13 17:45:56 +0000
commit0dd728f28c023e3d2af68af6474d0a2029d91f3f (patch)
tree7b51b5bfbb6b1367ffc01e768199d4eeb52242d0 /sys/i386/isa/atapi.c
parent3106e713d8b270ee6ce3d42a76e68ceb7265d7d2 (diff)
downloadFreeBSD-src-0dd728f28c023e3d2af68af6474d0a2029d91f3f.zip
FreeBSD-src-0dd728f28c023e3d2af68af6474d0a2029d91f3f.tar.gz
Don't use INTR when only one device supports it.
Submitted by: Satoh Junichi <junichi@astec.co.jp>
Diffstat (limited to 'sys/i386/isa/atapi.c')
-rw-r--r--sys/i386/isa/atapi.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/i386/isa/atapi.c b/sys/i386/isa/atapi.c
index f629aaf..5752587 100644
--- a/sys/i386/isa/atapi.c
+++ b/sys/i386/isa/atapi.c
@@ -219,12 +219,21 @@ int atapi_attach (int ctlr, int unit, int port)
switch (ap->drqtype) {
case AT_DRQT_MPROC: ata->slow = 1; break;
case AT_DRQT_INTR: printf (", intr"); ata->intrcmd = 1; break;
- case AT_DRQT_ACCEL: printf (", accel"); break;
+ case AT_DRQT_ACCEL: printf (", accel"); ata->accel = 1; break;
default: printf (", drq%d", ap->drqtype);
}
if (ata->slow)
ata->intrcmd = 0;
+ /*
+ * If we have two devices, one supporting INTR and one ACCEL, we
+ * have to pessimise - clear INTR and set slow.
+ */
+ if (ata->accel && ata->intrcmd) {
+ ata->intrcmd = 0;
+ ata->slow = 1;
+ }
+
/* overlap operation supported */
if (ap->ovlapflag)
printf (", ovlap");
OpenPOWER on IntegriCloud