of/irq: Rework of_irq_count()
authorThierry Reding <thierry.reding@gmail.com>
Wed, 18 Sep 2013 13:24:43 +0000 (15:24 +0200)
committerGrant Likely <grant.likely@linaro.org>
Thu, 24 Oct 2013 10:50:34 +0000 (11:50 +0100)
The of_irq_to_resource() helper that is used to implement of_irq_count()
tries to resolve interrupts and in fact creates a mapping for resolved
interrupts. That's pretty heavy lifting for something that claims to
just return the number of interrupts requested by a given device node.

Instead, use the more lightweight of_irq_map_one(), which, despite the
name, doesn't create an actual mapping. Perhaps a better name would be
of_irq_translate_one().

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Rob Herring <rob.herring@calxeda.com>
[grant.likely: fixup s/of_irq_map_one/of_irq_parse_one/]
Signed-off-by: Grant Likely <grant.likely@linaro.org>
drivers/of/irq.c

index ddea945ec29ee5717921205498f68cbda99dc032..7c4ff122785f96de048191873920281a3d7c3531 100644 (file)
@@ -373,9 +373,10 @@ EXPORT_SYMBOL_GPL(of_irq_to_resource);
  */
 int of_irq_count(struct device_node *dev)
 {
+       struct of_phandle_args irq;
        int nr = 0;
 
-       while (of_irq_to_resource(dev, nr, NULL))
+       while (of_irq_parse_one(dev, nr, &irq) == 0)
                nr++;
 
        return nr;