diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2006-10-10 23:23:12 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2006-10-10 23:23:12 +0000 |
| commit | 520ffff83ecde11de34f4b6a6b00ac0082e3cd5e (patch) | |
| tree | eb9c93770a076684865872d673c762161b0390f7 /sys/amd64/isa | |
| parent | 4ef33d554a63dea39d3a428f772bf94e27ac3206 (diff) | |
Notes
Diffstat (limited to 'sys/amd64/isa')
| -rw-r--r-- | sys/amd64/isa/atpic.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/sys/amd64/isa/atpic.c b/sys/amd64/isa/atpic.c index 1398e47f7be8..1115c927324e 100644 --- a/sys/amd64/isa/atpic.c +++ b/sys/amd64/isa/atpic.c @@ -138,7 +138,7 @@ static void atpic_eoi_master(struct intsrc *isrc); static void atpic_eoi_slave(struct intsrc *isrc); static void atpic_enable_intr(struct intsrc *isrc); static int atpic_vector(struct intsrc *isrc); -static void atpic_resume(struct intsrc *isrc); +static void atpic_resume(struct pic *pic); static int atpic_source_pending(struct intsrc *isrc); static int atpic_config_intr(struct intsrc *isrc, enum intr_trigger trig, enum intr_polarity pol); @@ -285,16 +285,13 @@ atpic_source_pending(struct intsrc *isrc) } static void -atpic_resume(struct intsrc *isrc) +atpic_resume(struct pic *pic) { - struct atpic_intsrc *ai = (struct atpic_intsrc *)isrc; - struct atpic *ap = (struct atpic *)isrc->is_pic; + struct atpic *ap = (struct atpic *)pic; - if (ai->at_irq == 0) { - i8259_init(ap, ap == &atpics[SLAVE]); - if (ap == &atpics[SLAVE] && elcr_found) - elcr_resume(); - } + i8259_init(ap, ap == &atpics[SLAVE]); + if (ap == &atpics[SLAVE] && elcr_found) + elcr_resume(); } static int @@ -465,6 +462,14 @@ atpic_init(void *dummy __unused) int i; /* + * Register our PICs, even if we aren't going to use any of their + * pins so that they are suspended and resumed. + */ + if (intr_register_pic(&atpics[0].at_pic) != 0 || + intr_register_pic(&atpics[1].at_pic) != 0) + panic("Unable to register ATPICs"); + + /* * If any of the ISA IRQs have an interrupt source already, then * assume that the APICs are being used and don't register any * of our interrupt sources. This makes sure we don't accidentally |
