BUS_CONFIG_INTR takes 2 devices now: parent and child
authorAlexander Polakov <polachok@gmail.com>
Fri, 16 Oct 2009 16:02:13 +0000 (20:02 +0400)
committerAlexander Polakov <polachok@gmail.com>
Fri, 16 Oct 2009 16:02:13 +0000 (20:02 +0400)
We have to pass child as other BUS_ function do to be able to
actually do something useful (like configure APIC).

sys/kern/bus_if.m
sys/kern/subr_bus.c
sys/sys/bus.h

index ca68f20..77d11a2 100644 (file)
@@ -318,6 +318,7 @@ METHOD int child_location_str {
 #
 METHOD int config_intr {
         device_t        _dev;
+       device_t        _child;
         int             _irq;
         enum intr_trigger _trig;
         enum intr_polarity _pol;
index 943aa7e..0059dcd 100644 (file)
@@ -2533,12 +2533,12 @@ bus_generic_enable_intr(device_t dev, device_t child, void *cookie)
 }
 
 int
-bus_generic_config_intr(device_t dev, int irq, enum intr_trigger trig,
+bus_generic_config_intr(device_t dev, device_t child, int irq, enum intr_trigger trig,
     enum intr_polarity pol)
 {
        /* Propagate up the bus hierarchy until someone handles it. */
        if (dev->parent)
-               return(BUS_CONFIG_INTR(dev->parent, irq, trig, pol));
+               return(BUS_CONFIG_INTR(dev->parent, child, irq, trig, pol));
        else
                return(EINVAL);
 }
index a374363..cbf4722 100644 (file)
@@ -236,7 +236,7 @@ struct resource *
 struct resource_list *
        bus_generic_get_resource_list (device_t, device_t);
 
-int     bus_generic_config_intr(device_t, int, enum intr_trigger,
+int     bus_generic_config_intr(device_t, device_t, int, enum intr_trigger,
                                        enum intr_polarity);
 int    bus_generic_attach(device_t dev);
 int    bus_generic_child_present(device_t dev, device_t child);