of/platform: Drop static setup of IRQ resource from DT core
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Wed, 16 Mar 2022 20:06:33 +0000 (20:06 +0000)
committerRob Herring <robh@kernel.org>
Tue, 5 Apr 2022 00:55:03 +0000 (19:55 -0500)
Now that all the DT drivers have switched to platform_get_irq() we can now
safely drop the static setup of IRQ resource from DT core code.

With the above change hierarchical setup of irq domains is no longer
bypassed and thus allowing hierarchical interrupt domains to describe
interrupts using "interrupts" DT property.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Acked-by: Marc Zyngier <maz@kernel.org>
Tested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220316200633.28974-1-prabhakar.mahadev-lad.rj@bp.renesas.com
drivers/of/platform.c

index a16b74f32aa9dfd0be4c4112932662d99752f6e8..fdc8491eed86d85936a8405b060c37b9f715f568 100644 (file)
@@ -114,35 +114,31 @@ struct platform_device *of_device_alloc(struct device_node *np,
                                  struct device *parent)
 {
        struct platform_device *dev;
-       int rc, i, num_reg = 0, num_irq;
+       int rc, i, num_reg = 0;
        struct resource *res, temp_res;
 
        dev = platform_device_alloc("", PLATFORM_DEVID_NONE);
        if (!dev)
                return NULL;
 
-       /* count the io and irq resources */
+       /* count the io resources */
        while (of_address_to_resource(np, num_reg, &temp_res) == 0)
                num_reg++;
-       num_irq = of_irq_count(np);
 
        /* Populate the resource table */
-       if (num_irq || num_reg) {
-               res = kcalloc(num_irq + num_reg, sizeof(*res), GFP_KERNEL);
+       if (num_reg) {
+               res = kcalloc(num_reg, sizeof(*res), GFP_KERNEL);
                if (!res) {
                        platform_device_put(dev);
                        return NULL;
                }
 
-               dev->num_resources = num_reg + num_irq;
+               dev->num_resources = num_reg;
                dev->resource = res;
                for (i = 0; i < num_reg; i++, res++) {
                        rc = of_address_to_resource(np, i, res);
                        WARN_ON(rc);
                }
-               if (of_irq_to_resource_table(np, res, num_irq) != num_irq)
-                       pr_debug("not all legacy IRQ resources mapped for %pOFn\n",
-                                np);
        }
 
        dev->dev.of_node = of_node_get(np);