diff options
author | dfr <dfr@FreeBSD.org> | 1998-07-12 16:20:52 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 1998-07-12 16:20:52 +0000 |
commit | 33ad41510d68d612cdf5b41df02e729b0c032a12 (patch) | |
tree | 3bb90ff6b7ad3645a2e06c75eb0edf94f610bccb | |
parent | f664913b02ea7cda1d6e9bc2dbea8809be3f84c7 (diff) | |
download | FreeBSD-src-33ad41510d68d612cdf5b41df02e729b0c032a12.zip FreeBSD-src-33ad41510d68d612cdf5b41df02e729b0c032a12.tar.gz |
Change interrupt api to be closer to intr_create/intr_connect.
-rw-r--r-- | sys/kern/bus_if.m | 10 | ||||
-rw-r--r-- | sys/kern/subr_bus.c | 22 | ||||
-rw-r--r-- | sys/sys/bus.h | 5 |
3 files changed, 27 insertions, 10 deletions
diff --git a/sys/kern/bus_if.m b/sys/kern/bus_if.m index 789c191..c47272a 100644 --- a/sys/kern/bus_if.m +++ b/sys/kern/bus_if.m @@ -23,7 +23,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $Id$ +# $Id: bus_if.m,v 1.1 1998/06/14 13:53:08 dfr Exp $ # INTERFACE bus @@ -74,9 +74,15 @@ METHOD int write_ivar { # Register an interrupt handler for the child device. The handler # will be called with the value 'arg' as its only argument. # -METHOD int map_intr { +METHOD void* create_intr { device_t dev; device_t child; + int irq; driver_intr_t *intr; void *arg; }; + +METHOD int connect_intr { + device_t dev; + void *ih; +}; diff --git a/sys/kern/subr_bus.c b/sys/kern/subr_bus.c index d0e789d..dab00ef 100644 --- a/sys/kern/subr_bus.c +++ b/sys/kern/subr_bus.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: subr_bus.c,v 1.1 1998/06/10 10:56:45 dfr Exp $ + * $Id: subr_bus.c,v 1.2 1998/06/14 13:45:58 dfr Exp $ */ #include <sys/param.h> @@ -810,18 +810,28 @@ bus_generic_write_ivar(device_t dev, device_t child, int index, u_long value) return ENOENT; } +void * +bus_generic_create_intr(device_t dev, device_t child, int irq, driver_intr_t *intr, void *arg) +{ + /* Propagate up the bus hierarchy until someone handles it. */ + if (dev->parent) + return BUS_CREATE_INTR(dev->parent, dev, irq, intr, arg); + else + return NULL; +} + int -bus_generic_map_intr(device_t dev, device_t child, driver_intr_t *intr, void *arg) +bus_generic_connect_intr(device_t dev, void *ih) { /* Propagate up the bus hierarchy until someone handles it. */ if (dev->parent) - return BUS_MAP_INTR(dev->parent, dev, intr, arg); + return BUS_CONNECT_INTR(dev->parent, ih); else return EINVAL; } -static int root_map_intr(device_t dev, device_t child, - driver_intr_t *intr, void *arg) +static int root_create_intr(device_t dev, device_t child, + driver_intr_t *intr, void *arg) { /* * If an interrupt mapping gets to here something bad has happened. @@ -835,7 +845,7 @@ static device_method_t root_methods[] = { DEVMETHOD(bus_print_child, bus_generic_print_child), DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), DEVMETHOD(bus_write_ivar, bus_generic_write_ivar), - DEVMETHOD(bus_map_intr, root_map_intr), + DEVMETHOD(bus_create_intr, root_create_intr), { 0, 0 } }; diff --git a/sys/sys/bus.h b/sys/sys/bus.h index 1644439..757ff99 100644 --- a/sys/sys/bus.h +++ b/sys/sys/bus.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bus.h,v 1.2 1998/06/14 13:46:09 dfr Exp $ + * $Id: bus.h,v 1.3 1998/07/05 10:14:32 dfr Exp $ */ #ifndef _SYS_BUS_H_ @@ -91,7 +91,8 @@ int bus_generic_shutdown(device_t dev); void bus_generic_print_child(device_t dev, device_t child); int bus_generic_read_ivar(device_t dev, device_t child, int which, u_long *result); int bus_generic_write_ivar(device_t dev, device_t child, int which, u_long value); -int bus_generic_map_intr(device_t dev, device_t child, driver_intr_t *intr, void *arg); +void *bus_generic_create_intr(device_t dev, device_t child, int irq, driver_intr_t *intr, void *arg); +int bus_generic_connect_intr(device_t dev, void *ih); /* * Access functions for device. |