+14
-4
drivers/base/platform.c
+14
-4
drivers/base/platform.c
···
89
89
return dev->archdata.irqs[num];
90
90
#else
91
91
struct resource *r;
92
-
if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node)
93
-
return of_irq_get(dev->dev.of_node, num);
92
+
if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) {
93
+
int ret;
94
+
95
+
ret = of_irq_get(dev->dev.of_node, num);
96
+
if (ret >= 0 || ret == -EPROBE_DEFER)
97
+
return ret;
98
+
}
94
99
95
100
r = platform_get_resource(dev, IORESOURCE_IRQ, num);
96
101
···
138
133
{
139
134
struct resource *r;
140
135
141
-
if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node)
142
-
return of_irq_get_byname(dev->dev.of_node, name);
136
+
if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) {
137
+
int ret;
138
+
139
+
ret = of_irq_get_byname(dev->dev.of_node, name);
140
+
if (ret >= 0 || ret == -EPROBE_DEFER)
141
+
return ret;
142
+
}
143
143
144
144
r = platform_get_resource_byname(dev, IORESOURCE_IRQ, name);
145
145
return r ? r->start : -ENXIO;