summaryrefslogtreecommitdiffstats
path: root/sys/pccard
diff options
context:
space:
mode:
authornate <nate@FreeBSD.org>1997-11-15 14:20:31 +0000
committernate <nate@FreeBSD.org>1997-11-15 14:20:31 +0000
commit0bdadfcd1b48907adfec25bcb5b54947ce4c9654 (patch)
tree86e3232a2221a20bd6459b6e44f1fc37b4cf8f45 /sys/pccard
parente785b9903f7dcffd6524a4b960831d9904883b64 (diff)
downloadFreeBSD-src-0bdadfcd1b48907adfec25bcb5b54947ce4c9654.zip
FreeBSD-src-0bdadfcd1b48907adfec25bcb5b54947ce4c9654.tar.gz
MF22:
(update_intr_masks might not need to be done in 3.X, but the new generic interrupt code is incomplete w/regard to support for the PCCARD code, so to avoid any potential problems use it. It can't hurt). - Correctly register pcic_imask with the system interrupt code. - Call update_intr_masks() so that pcic_imask modifications that occur when card interrupts are registered get updated in the system interrupt code.
Diffstat (limited to 'sys/pccard')
-rw-r--r--sys/pccard/pccard.c11
-rw-r--r--sys/pccard/pcic.c2
2 files changed, 7 insertions, 6 deletions
diff --git a/sys/pccard/pccard.c b/sys/pccard/pccard.c
index d0507b3..133c667 100644
--- a/sys/pccard/pccard.c
+++ b/sys/pccard/pccard.c
@@ -489,17 +489,18 @@ pccard_alloc_intr(u_int imask, inthand2_t *hand, int unit,
mask = 1ul << irq;
if (!(mask & imask))
continue;
- if (maskp)
- INTRMASK(*maskp, mask);
+ INTRMASK(*maskp, mask);
if (register_intr(irq, 0, 0, hand, maskp, unit) == 0) {
/* add this to the PCIC controller's mask */
- INTRMASK(*pcic_imask, (1 << irq));
+ if (pcic_imask)
+ INTRMASK(*pcic_imask, (1 << irq));
+ update_intr_masks();
INTREN(mask);
return(irq);
}
/* No luck, remove from mask again... */
- if (maskp)
- INTRUNMASK(*maskp, mask);
+ INTRUNMASK(*maskp, mask);
+ update_intr_masks();
}
return(-1);
}
diff --git a/sys/pccard/pcic.c b/sys/pccard/pcic.c
index 14f4c79..c040942 100644
--- a/sys/pccard/pcic.c
+++ b/sys/pccard/pcic.c
@@ -810,7 +810,7 @@ pcic_probe(void)
if (pcic_irq == 0) {
pcic_imask = soft_imask;
pcic_irq = pccard_alloc_intr(free_irqs,
- pcicintr, 0, NULL, &pcic_imask);
+ pcicintr, 0, &pcic_imask, NULL);
if (pcic_irq < 0)
printf("pcic: failed to allocate IRQ\n");
else
OpenPOWER on IntegriCloud