Commit 3903a8cd authored by Andre Przywara's avatar Andre Przywara
Browse files

rpi4: Add GIC maintenance interrupt to GIC DT node



For being able to use the virtualisation support the GIC offers, we need
to know the interrupt number of the maintenance interrupt. This
information is missing from the official RPi4 device tree.

Use libfdt to add the "interrupts" property to the GIC node, which
allows hypervisors like KVM or Xen to be able to use the GIC's help on
virtualising interrupts.

Change-Id: Iab84f0885a5bf29fb84ca8f385e8a39d27700c75
Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
parent 882c0ff6
...@@ -222,7 +222,8 @@ static uint32_t dtb_size(const void *dtb) ...@@ -222,7 +222,8 @@ static uint32_t dtb_size(const void *dtb)
static void rpi4_prepare_dtb(void) static void rpi4_prepare_dtb(void)
{ {
void *dtb = (void *)rpi4_get_dtb_address(); void *dtb = (void *)rpi4_get_dtb_address();
int ret; uint32_t gic_int_prop[3];
int ret, offs;
/* Return if no device tree is detected */ /* Return if no device tree is detected */
if (fdt_check_header(dtb) != 0) if (fdt_check_header(dtb) != 0)
...@@ -248,6 +249,12 @@ static void rpi4_prepare_dtb(void) ...@@ -248,6 +249,12 @@ static void rpi4_prepare_dtb(void)
if (fdt_add_reserved_memory(dtb, "atf@0", 0, 0x80000)) if (fdt_add_reserved_memory(dtb, "atf@0", 0, 0x80000))
WARN("Failed to add reserved memory nodes to DT.\n"); WARN("Failed to add reserved memory nodes to DT.\n");
offs = fdt_node_offset_by_compatible(dtb, 0, "arm,gic-400");
gic_int_prop[0] = cpu_to_fdt32(1); // PPI
gic_int_prop[1] = cpu_to_fdt32(9); // PPI #9
gic_int_prop[2] = cpu_to_fdt32(0x0f04); // all cores, level high
fdt_setprop(dtb, offs, "interrupts", gic_int_prop, 12);
ret = fdt_pack(dtb); ret = fdt_pack(dtb);
if (ret < 0) if (ret < 0)
ERROR("Failed to pack Device Tree at %p: error %d\n", dtb, ret); ERROR("Failed to pack Device Tree at %p: error %d\n", dtb, ret);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment