irqchip: loongarch-cpu: add DT support
authorLiu Peibao <liupeibao@loongson.cn>
Mon, 14 Nov 2022 11:38:23 +0000 (19:38 +0800)
committerMarc Zyngier <maz@kernel.org>
Sat, 26 Nov 2022 11:54:11 +0000 (11:54 +0000)
LoongArch is coming to support booting with FDT, so DT
support of this driver is desired.

Signed-off-by: Liu Peibao <liupeibao@loongson.cn>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20221114113824.1880-2-liupeibao@loongson.cn
drivers/irqchip/irq-loongarch-cpu.c

index 741612b..a28b7c5 100644 (file)
@@ -92,6 +92,25 @@ static const struct irq_domain_ops loongarch_cpu_intc_irq_domain_ops = {
        .xlate = irq_domain_xlate_onecell,
 };
 
+#ifdef CONFIG_OF
+int __init loongarch_cpu_irq_of_init(struct device_node *of_node,
+                               struct device_node *parent)
+{
+       cpuintc_handle = of_node_to_fwnode(of_node);
+
+       irq_domain = irq_domain_create_linear(cpuintc_handle, EXCCODE_INT_NUM,
+                               &loongarch_cpu_intc_irq_domain_ops, NULL);
+       if (!irq_domain)
+               panic("Failed to add irqdomain for loongarch CPU");
+
+       set_handle_irq(&handle_cpu_irq);
+
+       return 0;
+}
+IRQCHIP_DECLARE(cpu_intc, "loongson,cpu-interrupt-controller",
+                                       loongarch_cpu_irq_of_init);
+#endif
+
 static int __init
 liointc_parse_madt(union acpi_subtable_headers *header,
                       const unsigned long end)