From a8c5ea04b4a6b3725d2a278456e3d7e49c46546b Mon Sep 17 00:00:00 2001 From: Ruslan Bukin Date: Fri, 15 May 2015 13:55:18 +0000 Subject: [PATCH] Provide the number of interrupt resources added to the list by using extra argument, so caller will know that. --- sys/dev/fdt/simplebus.c | 2 +- sys/dev/gpio/ofw_gpiobus.c | 2 +- sys/dev/ofw/ofw_bus_subr.c | 5 ++++- sys/dev/ofw/ofw_bus_subr.h | 2 +- sys/dev/ofw/ofw_iicbus.c | 3 ++- sys/mips/beri/beri_simplebus.c | 2 +- sys/powerpc/ofw/ofw_pcibus.c | 3 ++- sys/powerpc/pseries/vdevice.c | 2 +- 8 files changed, 13 insertions(+), 8 deletions(-) diff --git a/sys/dev/fdt/simplebus.c b/sys/dev/fdt/simplebus.c index 585f5bf8e991..4cf063ed1a56 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 368528de18f0..6646b7dc59cb 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 58bc0ccdabca..5063930d5a9e 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 d2740dd94fbd..be35711b0281 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 38f499ea73e6..e6816c10cd0e 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 87ad3beb1f15..54f654a52ac1 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 66fa34163b68..246b8868e2bb 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 2ec4c3376cc2..2323bc7d464c 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) {