summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>1998-07-12 16:20:52 +0000
committerdfr <dfr@FreeBSD.org>1998-07-12 16:20:52 +0000
commit33ad41510d68d612cdf5b41df02e729b0c032a12 (patch)
tree3bb90ff6b7ad3645a2e06c75eb0edf94f610bccb
parentf664913b02ea7cda1d6e9bc2dbea8809be3f84c7 (diff)
downloadFreeBSD-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.m10
-rw-r--r--sys/kern/subr_bus.c22
-rw-r--r--sys/sys/bus.h5
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.
OpenPOWER on IntegriCloud