aboutsummaryrefslogtreecommitdiffstats
path: root/arm
diff options
context:
space:
mode:
authorAndre Przywara <andre.przywara@arm.com>2014-12-17 15:40:46 +0000
committerWill Deacon <will.deacon@arm.com>2015-06-01 16:39:55 +0100
commit2bfd9ac3cac4b83082dcd0bed38ee3d5f927d903 (patch)
treee6e3b55f06dd7e55d73be62f861102b90abbfe60 /arm
parent045fc040c8310948c39b057970342c905f01f6b3 (diff)
downloadkvmtool-2bfd9ac3cac4b83082dcd0bed38ee3d5f927d903.tar.gz
kvmtool: ARM: allow level interrupts in device tree
Currently we describe every interrupt for each device in the FDT as being edge triggered. Add a parameter to the irq property generation to allow devices to specify their interrupts as level triggered if needed. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arm')
-rw-r--r--arm/fdt.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arm/fdt.c b/arm/fdt.c
index 24f030f4..36571089 100644
--- a/arm/fdt.c
+++ b/arm/fdt.c
@@ -74,12 +74,12 @@ static void generate_cpu_nodes(void *fdt, struct kvm *kvm)
_FDT(fdt_end_node(fdt));
}
-static void generate_irq_prop(void *fdt, u8 irq)
+static void generate_irq_prop(void *fdt, u8 irq, enum irq_type irq_type)
{
u32 irq_prop[] = {
cpu_to_fdt32(GIC_FDT_IRQ_TYPE_SPI),
cpu_to_fdt32(irq - GIC_SPI_IRQ_BASE),
- cpu_to_fdt32(IRQ_TYPE_EDGE_RISING),
+ cpu_to_fdt32(irq_type)
};
_FDT(fdt_property(fdt, "interrupts", irq_prop, sizeof(irq_prop)));
@@ -127,7 +127,7 @@ static int setup_fdt(struct kvm *kvm)
void *fdt_dest = guest_flat_to_host(kvm,
kvm->arch.dtb_guest_start);
void (*generate_mmio_fdt_nodes)(void *, struct device_header *,
- void (*)(void *, u8));
+ void (*)(void *, u8, enum irq_type));
void (*generate_cpu_peripheral_fdt_nodes)(void *, struct kvm *, u32)
= kvm->cpus[0]->generate_fdt_nodes;