aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64/isa
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2006-10-10 23:23:12 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2006-10-10 23:23:12 +0000
commit520ffff83ecde11de34f4b6a6b00ac0082e3cd5e (patch)
treeeb9c93770a076684865872d673c762161b0390f7 /sys/amd64/isa
parent4ef33d554a63dea39d3a428f772bf94e27ac3206 (diff)
Notes
Diffstat (limited to 'sys/amd64/isa')
-rw-r--r--sys/amd64/isa/atpic.c23
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