diff options
author | nate <nate@FreeBSD.org> | 1997-11-15 14:20:31 +0000 |
---|---|---|
committer | nate <nate@FreeBSD.org> | 1997-11-15 14:20:31 +0000 |
commit | 0bdadfcd1b48907adfec25bcb5b54947ce4c9654 (patch) | |
tree | 86e3232a2221a20bd6459b6e44f1fc37b4cf8f45 /sys/pccard | |
parent | e785b9903f7dcffd6524a4b960831d9904883b64 (diff) | |
download | FreeBSD-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.c | 11 | ||||
-rw-r--r-- | sys/pccard/pcic.c | 2 |
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 |