aboutsummaryrefslogtreecommitdiff
path: root/sys/arm/arm/gic_fdt.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arm/arm/gic_fdt.c')
-rw-r--r--sys/arm/arm/gic_fdt.c14
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,