diff options
Diffstat (limited to 'sys/arm/arm/gic_fdt.c')
-rw-r--r-- | sys/arm/arm/gic_fdt.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/arm/arm/gic_fdt.c b/sys/arm/arm/gic_fdt.c index 5b1b77024df6..a8886abf1c18 100644 --- a/sys/arm/arm/gic_fdt.c +++ b/sys/arm/arm/gic_fdt.c @@ -36,9 +36,6 @@ #include "opt_platform.h" -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <sys/systm.h> #include <sys/bus.h> @@ -90,6 +87,7 @@ static device_method_t gic_fdt_methods[] = { /* Bus interface */ DEVMETHOD(bus_get_resource_list,gic_fdt_get_resource_list), + DEVMETHOD(bus_get_device_path, ofw_bus_gen_get_device_path), /* ofw_bus interface */ DEVMETHOD(ofw_bus_get_devinfo, gic_ofw_get_devinfo), @@ -155,12 +153,18 @@ gic_fdt_attach(device_t dev) */ pxref = ofw_bus_find_iparent(ofw_bus_get_node(dev)); if (pxref == 0 || xref == pxref) { - if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc, - GIC_LAST_SGI - GIC_FIRST_SGI + 1) != 0) { + if (intr_pic_claim_root(dev, xref, arm_gic_intr, sc) != 0) { device_printf(dev, "could not set PIC as a root\n"); intr_pic_deregister(dev, xref); goto cleanup; } + +#ifdef SMP + if (intr_ipi_pic_register(dev, 0) != 0) { + device_printf(dev, "could not register for IPIs\n"); + goto cleanup; + } +#endif } else { if (sc->base.gic_res[2] == NULL) { device_printf(dev, |