{
const struct dt_device_node *gic = dt_interrupt_controller;
int res = 0;
- const void *addrcells;
- u32 addrcells_len;
+ const void *addrcells, *sizecells;
+ u32 addrcells_len, sizecells_len;
/*
* Xen currently supports only a single GIC. Discard any secondary
DPRINT("Create gic node\n");
- res = gic_make_node(d, node, fdt);
+ res = fdt_begin_node(fdt, "interrupt-controller");
if ( res )
return res;
return res;
}
+ sizecells = dt_get_property(gic, "#size-cells", &sizecells_len);
+ if ( sizecells )
+ {
+ res = fdt_property(fdt, "#size-cells", sizecells, sizecells_len);
+ if ( res )
+ return res;
+ }
+
res = fdt_property_cell(fdt, "#interrupt-cells", 3);
if ( res )
return res;
if ( res )
return res;
+ res = gic_make_node(d, node, fdt);
+ if ( res )
+ return res;
+
res = fdt_end_node(fdt);
return res;
compatible = DT_COMPAT_GIC_CORTEX_A15;
len = strlen((char*) compatible) + 1;
- res = fdt_begin_node(fdt, "interrupt-controller");
- if ( res )
- return res;
-
res = fdt_property(fdt, "compatible", compatible, len);
if ( res )
return res;
return -FDT_ERR_XEN(ENOENT);
}
- res = fdt_begin_node(fdt, "interrupt-controller");
- if ( res )
- return res;
-
res = fdt_property(fdt, "compatible", compatible, len);
if ( res )
return res;
return -FDT_ERR_XEN(ENOENT);
}
- res = fdt_begin_node(fdt, "interrupt-controller");
- if ( res )
- return res;
-
res = fdt_property(fdt, "compatible", compatible, len);
if ( res )
return res;