|
@@ -89,8 +89,13 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)
|
|
return dev->archdata.irqs[num];
|
|
return dev->archdata.irqs[num];
|
|
#else
|
|
#else
|
|
struct resource *r;
|
|
struct resource *r;
|
|
- if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node)
|
|
|
|
- return of_irq_get(dev->dev.of_node, num);
|
|
|
|
|
|
+ if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) {
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ ret = of_irq_get(dev->dev.of_node, num);
|
|
|
|
+ if (ret >= 0 || ret == -EPROBE_DEFER)
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
|
|
r = platform_get_resource(dev, IORESOURCE_IRQ, num);
|
|
r = platform_get_resource(dev, IORESOURCE_IRQ, num);
|
|
|
|
|
|
@@ -133,8 +138,13 @@ int platform_get_irq_byname(struct platform_device *dev, const char *name)
|
|
{
|
|
{
|
|
struct resource *r;
|
|
struct resource *r;
|
|
|
|
|
|
- if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node)
|
|
|
|
- return of_irq_get_byname(dev->dev.of_node, name);
|
|
|
|
|
|
+ if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) {
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ ret = of_irq_get_byname(dev->dev.of_node, name);
|
|
|
|
+ if (ret >= 0 || ret == -EPROBE_DEFER)
|
|
|
|
+ return ret;
|
|
|
|
+ }
|
|
|
|
|
|
r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
|
|
r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
|
|
return r ? r->start : -ENXIO;
|
|
return r ? r->start : -ENXIO;
|