OSDN Git Service

ARM: PXA: Kill use of irq_create_strict_mappings()
authorMarc Zyngier <maz@kernel.org>
Tue, 6 Apr 2021 09:35:50 +0000 (10:35 +0100)
committerMarc Zyngier <maz@kernel.org>
Thu, 22 Apr 2021 14:55:21 +0000 (15:55 +0100)
irq_create_strict_mappings() is a poor way to allow the use of
a linear IRQ domain as a legacy one. Let's be upfront about
it and use a legacy domain when appropriate.

Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20210406093557.1073423-3-maz@kernel.org
arch/arm/mach-pxa/pxa_cplds_irqs.c

index 45c19ca..ec0d9b0 100644 (file)
@@ -147,22 +147,20 @@ static int cplds_probe(struct platform_device *pdev)
        }
 
        irq_set_irq_wake(fpga->irq, 1);
-       fpga->irqdomain = irq_domain_add_linear(pdev->dev.of_node,
-                                              CPLDS_NB_IRQ,
-                                              &cplds_irq_domain_ops, fpga);
+       if (base_irq)
+               fpga->irqdomain = irq_domain_add_legacy(pdev->dev.of_node,
+                                                       CPLDS_NB_IRQ,
+                                                       base_irq, 0,
+                                                       &cplds_irq_domain_ops,
+                                                       fpga);
+       else
+               fpga->irqdomain = irq_domain_add_linear(pdev->dev.of_node,
+                                                       CPLDS_NB_IRQ,
+                                                       &cplds_irq_domain_ops,
+                                                       fpga);
        if (!fpga->irqdomain)
                return -ENODEV;
 
-       if (base_irq) {
-               ret = irq_create_strict_mappings(fpga->irqdomain, base_irq, 0,
-                                                CPLDS_NB_IRQ);
-               if (ret) {
-                       dev_err(&pdev->dev, "couldn't create the irq mapping %d..%d\n",
-                               base_irq, base_irq + CPLDS_NB_IRQ);
-                       return ret;
-               }
-       }
-
        return 0;
 }