ARC: [intc-*] switch to linear domain
[cascardo/linux.git] / arch / arc / kernel / intc-arcv2.c
index 9425263..6c24faf 100644 (file)
@@ -137,23 +137,30 @@ static const struct irq_domain_ops arcv2_irq_ops = {
        .map = arcv2_irq_map,
 };
 
-static struct irq_domain *root_domain;
 
 static int __init
 init_onchip_IRQ(struct device_node *intc, struct device_node *parent)
 {
+       struct irq_domain *root_domain;
+
        if (parent)
                panic("DeviceTree incore intc not a root irq controller\n");
 
-       root_domain = irq_domain_add_legacy(intc, NR_CPU_IRQS, 0, 0,
-                                           &arcv2_irq_ops, NULL);
-
+       root_domain = irq_domain_add_linear(intc, NR_CPU_IRQS, &arcv2_irq_ops, NULL);
        if (!root_domain)
                panic("root irq domain not avail\n");
 
-       /* with this we don't need to export root_domain */
+       /*
+        * Needed for primary domain lookup to succeed
+        * This is a primary irqchip, and can never have a parent
+        */
        irq_set_default_host(root_domain);
 
+#ifdef CONFIG_SMP
+       irq_create_mapping(root_domain, IPI_IRQ);
+#endif
+       irq_create_mapping(root_domain, SOFTIRQ_IRQ);
+
        return 0;
 }