diff options
author | msmith <msmith@FreeBSD.org> | 1998-04-13 17:45:56 +0000 |
---|---|---|
committer | msmith <msmith@FreeBSD.org> | 1998-04-13 17:45:56 +0000 |
commit | 0dd728f28c023e3d2af68af6474d0a2029d91f3f (patch) | |
tree | 7b51b5bfbb6b1367ffc01e768199d4eeb52242d0 /sys/i386/isa/atapi.c | |
parent | 3106e713d8b270ee6ce3d42a76e68ceb7265d7d2 (diff) | |
download | FreeBSD-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.c | 11 |
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"); |