summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/isa.c
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1997-08-25 22:52:59 +0000
committerbde <bde@FreeBSD.org>1997-08-25 22:52:59 +0000
commitfbc4f096cf396ec641d3bc008d5e4be332660e08 (patch)
treed31a2776dc78d2ea4d02c54604f1763536a9905f /sys/i386/isa/isa.c
parent5fcc0d3d4096ca83b3ed0b19ed1dde448ff288e4 (diff)
downloadFreeBSD-src-fbc4f096cf396ec641d3bc008d5e4be332660e08.zip
FreeBSD-src-fbc4f096cf396ec641d3bc008d5e4be332660e08.tar.gz
Check for irq conflicts even if conflicts are allowed. Conflicting
irqs can't work (at best, the first one attached wins). It used to be necessary to skip this check because of bogus irqs in the sound drivers, but the sound drivers have been fixed, except possibly the OSS ones.
Diffstat (limited to 'sys/i386/isa/isa.c')
-rw-r--r--sys/i386/isa/isa.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/sys/i386/isa/isa.c b/sys/i386/isa/isa.c
index 55066a5..0b6fe36 100644
--- a/sys/i386/isa/isa.c
+++ b/sys/i386/isa/isa.c
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
- * $Id: isa.c,v 1.2 1997/08/21 04:51:00 smp Exp smp $
+ * $Id: isa.c,v 1.101 1997/08/21 05:08:07 fsmp Exp $
*/
/*
@@ -122,10 +122,14 @@ haveseen(dvp, tmpdvp, checkbits)
u_int checkbits;
{
/*
- * Only check against devices that have already been found and are not
- * unilaterally allowed to conflict anyway.
+ * Ignore all conflicts except IRQ ones if conflicts are allowed.
*/
- if (tmpdvp->id_alive && !dvp->id_conflicts) {
+ if (dvp->id_conflicts)
+ checkbits &= ~(CC_DRQ | CC_IOADDR | CC_MEMADDR);
+ /*
+ * Only check against devices that have already been found.
+ */
+ if (tmpdvp->id_alive) {
char const *whatnot;
whatnot = checkbits & CC_ATTACH ? "attach" : "prob";
@@ -508,9 +512,8 @@ config_isadev_c(isdp, mp, reconfig)
* a check for IRQs in the next group of checks.
*/
checkbits |= CC_IRQ;
- if (haveseen_isadev(isdp, checkbits)) {
+ if (haveseen_isadev(isdp, checkbits))
return;
- }
isdp->id_alive = id_alive;
}
(*dp->attach)(isdp);
@@ -998,4 +1001,3 @@ struct isa_device *find_isadev(table, driverp, unit)
return (table);
}
-
OpenPOWER on IntegriCloud