summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbr <br@FreeBSD.org>2015-05-15 13:55:18 +0000
committerbr <br@FreeBSD.org>2015-05-15 13:55:18 +0000
commitdeecdc3d61efe21dd72ab03d04cea4a956bab557 (patch)
treeb5cb85fb13a6f33b6035c437d5774e1a739dd9e6
parentf0fb85272217bf5f9bd76535207de25e63b3271b (diff)
downloadFreeBSD-src-deecdc3d61efe21dd72ab03d04cea4a956bab557.zip
FreeBSD-src-deecdc3d61efe21dd72ab03d04cea4a956bab557.tar.gz
Provide the number of interrupt resources added to the list
by using extra argument, so caller will know that.
-rw-r--r--sys/dev/fdt/simplebus.c2
-rw-r--r--sys/dev/gpio/ofw_gpiobus.c2
-rw-r--r--sys/dev/ofw/ofw_bus_subr.c5
-rw-r--r--sys/dev/ofw/ofw_bus_subr.h2
-rw-r--r--sys/dev/ofw/ofw_iicbus.c3
-rw-r--r--sys/mips/beri/beri_simplebus.c2
-rw-r--r--sys/powerpc/ofw/ofw_pcibus.c3
-rw-r--r--sys/powerpc/pseries/vdevice.c2
8 files changed, 13 insertions, 8 deletions
diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c
index 585f5bf..4cf063e 100644
--- a/sys/dev/fdt/simplebus.c
+++ b/sys/dev/fdt/simplebus.c
@@ -251,7 +251,7 @@ simplebus_setup_dinfo(device_t dev, phandle_t node,
resource_list_init(&ndi->rl);
ofw_bus_reg_to_rl(dev, node, sc->acells, sc->scells, &ndi->rl);
- ofw_bus_intr_to_rl(dev, node, &ndi->rl);
+ ofw_bus_intr_to_rl(dev, node, &ndi->rl, NULL);
return (ndi);
}
diff --git a/sys/dev/gpio/ofw_gpiobus.c b/sys/dev/gpio/ofw_gpiobus.c
index 368528d..6646b7d 100644
--- a/sys/dev/gpio/ofw_gpiobus.c
+++ b/sys/dev/gpio/ofw_gpiobus.c
@@ -147,7 +147,7 @@ ofw_gpiobus_setup_devinfo(device_t bus, device_t child, phandle_t node)
}
free(pins, M_DEVBUF);
/* Parse the interrupt resources. */
- if (ofw_bus_intr_to_rl(bus, node, &dinfo->opd_dinfo.rl) != 0) {
+ if (ofw_bus_intr_to_rl(bus, node, &dinfo->opd_dinfo.rl, NULL) != 0) {
ofw_gpiobus_destroy_devinfo(bus, dinfo);
return (NULL);
}
diff --git a/sys/dev/ofw/ofw_bus_subr.c b/sys/dev/ofw/ofw_bus_subr.c
index 58bc0cc..5063930 100644
--- a/sys/dev/ofw/ofw_bus_subr.c
+++ b/sys/dev/ofw/ofw_bus_subr.c
@@ -430,7 +430,8 @@ ofw_bus_reg_to_rl(device_t dev, phandle_t node, pcell_t acells, pcell_t scells,
}
int
-ofw_bus_intr_to_rl(device_t dev, phandle_t node, struct resource_list *rl)
+ofw_bus_intr_to_rl(device_t dev, phandle_t node,
+ struct resource_list *rl, int *rlen)
{
phandle_t iparent;
uint32_t icells, *intr;
@@ -495,6 +496,8 @@ ofw_bus_intr_to_rl(device_t dev, phandle_t node, struct resource_list *rl)
irqnum = ofw_bus_map_intr(dev, iparent, icells, &intr[i]);
resource_list_add(rl, SYS_RES_IRQ, rid++, irqnum, irqnum, 1);
}
+ if (rlen != NULL)
+ *rlen = rid;
free(intr, M_OFWPROP);
return (err);
}
diff --git a/sys/dev/ofw/ofw_bus_subr.h b/sys/dev/ofw/ofw_bus_subr.h
index d2740dd..be35711 100644
--- a/sys/dev/ofw/ofw_bus_subr.h
+++ b/sys/dev/ofw/ofw_bus_subr.h
@@ -75,7 +75,7 @@ int ofw_bus_search_intrmap(void *, int, void *, int, void *, int, void *,
/* Routines for parsing device-tree data into resource lists. */
int ofw_bus_reg_to_rl(device_t, phandle_t, pcell_t, pcell_t,
struct resource_list *);
-int ofw_bus_intr_to_rl(device_t, phandle_t, struct resource_list *);
+int ofw_bus_intr_to_rl(device_t, phandle_t, struct resource_list *, int *);
/* Helper to get device status property */
const char *ofw_bus_get_status(device_t dev);
diff --git a/sys/dev/ofw/ofw_iicbus.c b/sys/dev/ofw/ofw_iicbus.c
index 38f499e..e6816c1 100644
--- a/sys/dev/ofw/ofw_iicbus.c
+++ b/sys/dev/ofw/ofw_iicbus.c
@@ -156,7 +156,8 @@ ofw_iicbus_attach(device_t dev)
childdev = device_add_child(dev, NULL, -1);
resource_list_init(&dinfo->opd_dinfo.rl);
- ofw_bus_intr_to_rl(childdev, child, &dinfo->opd_dinfo.rl);
+ ofw_bus_intr_to_rl(childdev, child,
+ &dinfo->opd_dinfo.rl, NULL);
device_set_ivars(childdev, dinfo);
}
diff --git a/sys/mips/beri/beri_simplebus.c b/sys/mips/beri/beri_simplebus.c
index 87ad3be..54f654a 100644
--- a/sys/mips/beri/beri_simplebus.c
+++ b/sys/mips/beri/beri_simplebus.c
@@ -198,7 +198,7 @@ simplebus_attach(device_t dev)
continue;
}
- if (ofw_bus_intr_to_rl(dev, dt_child, &di->di_res)) {
+ if (ofw_bus_intr_to_rl(dev, dt_child, &di->di_res, NULL)) {
device_printf(dev, "%s: could not process "
"'interrupts' property\n", di->di_ofw.obd_name);
resource_list_free(&di->di_res);
diff --git a/sys/powerpc/ofw/ofw_pcibus.c b/sys/powerpc/ofw/ofw_pcibus.c
index 66fa341..246b886 100644
--- a/sys/powerpc/ofw/ofw_pcibus.c
+++ b/sys/powerpc/ofw/ofw_pcibus.c
@@ -201,7 +201,8 @@ ofw_pcibus_enum_devtree(device_t dev, u_int domain, u_int busno)
* resource list.
*/
if (dinfo->opd_dinfo.cfg.intpin == 0)
- ofw_bus_intr_to_rl(dev, child, &dinfo->opd_dinfo.resources);
+ ofw_bus_intr_to_rl(dev, child,
+ &dinfo->opd_dinfo.resources, NULL);
}
}
diff --git a/sys/powerpc/pseries/vdevice.c b/sys/powerpc/pseries/vdevice.c
index 2ec4c33..2323bc7 100644
--- a/sys/powerpc/pseries/vdevice.c
+++ b/sys/powerpc/pseries/vdevice.c
@@ -146,7 +146,7 @@ vdevice_attach(device_t dev)
}
resource_list_init(&dinfo->mdi_resources);
- ofw_bus_intr_to_rl(dev, child, &dinfo->mdi_resources);
+ ofw_bus_intr_to_rl(dev, child, &dinfo->mdi_resources, NULL);
cdev = device_add_child(dev, NULL, -1);
if (cdev == NULL) {
OpenPOWER on IntegriCloud