@@ -99,12 +99,7 @@ void __iomem *devm_platform_ioremap_resource(struct platform_device *pdev,
99
99
EXPORT_SYMBOL_GPL (devm_platform_ioremap_resource );
100
100
#endif /* CONFIG_HAS_IOMEM */
101
101
102
- /**
103
- * platform_get_irq - get an IRQ for a device
104
- * @dev: platform device
105
- * @num: IRQ number index
106
- */
107
- int platform_get_irq (struct platform_device * dev , unsigned int num )
102
+ static int __platform_get_irq (struct platform_device * dev , unsigned int num )
108
103
{
109
104
#ifdef CONFIG_SPARC
110
105
/* sparc does not have irqs represented as IORESOURCE_IRQ resources */
@@ -163,6 +158,33 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)
163
158
return - ENXIO ;
164
159
#endif
165
160
}
161
+
162
+ /**
163
+ * platform_get_irq - get an IRQ for a device
164
+ * @dev: platform device
165
+ * @num: IRQ number index
166
+ *
167
+ * Gets an IRQ for a platform device and prints an error message if finding the
168
+ * IRQ fails. Device drivers should check the return value for errors so as to
169
+ * not pass a negative integer value to the request_irq() APIs.
170
+ *
171
+ * Example:
172
+ * int irq = platform_get_irq(pdev, 0);
173
+ * if (irq < 0)
174
+ * return irq;
175
+ *
176
+ * Return: IRQ number on success, negative error number on failure.
177
+ */
178
+ int platform_get_irq (struct platform_device * dev , unsigned int num )
179
+ {
180
+ int ret ;
181
+
182
+ ret = __platform_get_irq (dev , num );
183
+ if (ret < 0 && ret != - EPROBE_DEFER )
184
+ dev_err (& dev -> dev , "IRQ index %u not found\n" , num );
185
+
186
+ return ret ;
187
+ }
166
188
EXPORT_SYMBOL_GPL (platform_get_irq );
167
189
168
190
/**
@@ -175,7 +197,7 @@ int platform_irq_count(struct platform_device *dev)
175
197
{
176
198
int ret , nr = 0 ;
177
199
178
- while ((ret = platform_get_irq (dev , nr )) >= 0 )
200
+ while ((ret = __platform_get_irq (dev , nr )) >= 0 )
179
201
nr ++ ;
180
202
181
203
if (ret == - EPROBE_DEFER )
@@ -228,7 +250,11 @@ int platform_get_irq_byname(struct platform_device *dev, const char *name)
228
250
}
229
251
230
252
r = platform_get_resource_byname (dev , IORESOURCE_IRQ , name );
231
- return r ? r -> start : - ENXIO ;
253
+ if (r )
254
+ return r -> start ;
255
+
256
+ dev_err (& dev -> dev , "IRQ %s not found\n" , name );
257
+ return - ENXIO ;
232
258
}
233
259
EXPORT_SYMBOL_GPL (platform_get_irq_byname );
234
260
0 commit comments