Index: sys/arm/arm/gic.c =================================================================== --- sys/arm/arm/gic.c +++ sys/arm/arm/gic.c @@ -34,6 +34,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_platform.h" + #include #include #include @@ -191,10 +193,17 @@ } int -gic_decode_fdt(uint32_t iparent, uint32_t *intr, int *interrupt, +gic_decode_fdt(phandle_t iparent, pcell_t *intr, int *interrupt, int *trig, int *pol) { static u_int num_intr_cells; + struct ofw_compat_data *ocd; + + for (ocd = compat_data; ocd->ocd_str != NULL; ocd++) + if (fdt_is_compatible(iparent, ocd->ocd_str)) + break; + if (ocd->ocd_str == NULL) + return (ENXIO); if (num_intr_cells == 0) { if (OF_searchencprop(OF_node_from_xref(iparent), Index: sys/arm/include/intr.h =================================================================== --- sys/arm/include/intr.h +++ sys/arm/include/intr.h @@ -86,10 +86,9 @@ void arm_irq_memory_barrier(uintptr_t); void arm_init_secondary_ic(void); -int gic_decode_fdt(uint32_t iparentnode, uint32_t *intrcells, int *interrupt, - int *trig, int *pol); #ifdef FDT +int gic_decode_fdt(phandle_t, pcell_t *, int *, int *, int *); int arm_fdt_map_irq(phandle_t, pcell_t *, int); #endif