diff options
Diffstat (limited to 'drivers/base/platform.c')
-rw-r--r-- | drivers/base/platform.c | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index b6c6c7d97d5b..b230beb6ccb4 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c | |||
@@ -241,12 +241,8 @@ struct resource *platform_get_resource_byname(struct platform_device *dev, | |||
241 | } | 241 | } |
242 | EXPORT_SYMBOL_GPL(platform_get_resource_byname); | 242 | EXPORT_SYMBOL_GPL(platform_get_resource_byname); |
243 | 243 | ||
244 | /** | 244 | static int __platform_get_irq_byname(struct platform_device *dev, |
245 | * platform_get_irq_byname - get an IRQ for a device by name | 245 | const char *name) |
246 | * @dev: platform device | ||
247 | * @name: IRQ name | ||
248 | */ | ||
249 | int platform_get_irq_byname(struct platform_device *dev, const char *name) | ||
250 | { | 246 | { |
251 | struct resource *r; | 247 | struct resource *r; |
252 | 248 | ||
@@ -262,12 +258,48 @@ int platform_get_irq_byname(struct platform_device *dev, const char *name) | |||
262 | if (r) | 258 | if (r) |
263 | return r->start; | 259 | return r->start; |
264 | 260 | ||
265 | dev_err(&dev->dev, "IRQ %s not found\n", name); | ||
266 | return -ENXIO; | 261 | return -ENXIO; |
267 | } | 262 | } |
263 | |||
264 | /** | ||
265 | * platform_get_irq_byname - get an IRQ for a device by name | ||
266 | * @dev: platform device | ||
267 | * @name: IRQ name | ||
268 | * | ||
269 | * Get an IRQ like platform_get_irq(), but then by name rather then by index. | ||
270 | * | ||
271 | * Return: IRQ number on success, negative error number on failure. | ||
272 | */ | ||
273 | int platform_get_irq_byname(struct platform_device *dev, const char *name) | ||
274 | { | ||
275 | int ret; | ||
276 | |||
277 | ret = __platform_get_irq_byname(dev, name); | ||
278 | if (ret < 0 && ret != -EPROBE_DEFER) | ||
279 | dev_err(&dev->dev, "IRQ %s not found\n", name); | ||
280 | |||
281 | return ret; | ||
282 | } | ||
268 | EXPORT_SYMBOL_GPL(platform_get_irq_byname); | 283 | EXPORT_SYMBOL_GPL(platform_get_irq_byname); |
269 | 284 | ||
270 | /** | 285 | /** |
286 | * platform_get_irq_byname_optional - get an optional IRQ for a device by name | ||
287 | * @dev: platform device | ||
288 | * @name: IRQ name | ||
289 | * | ||
290 | * Get an optional IRQ by name like platform_get_irq_byname(). Except that it | ||
291 | * does not print an error message if an IRQ can not be obtained. | ||
292 | * | ||
293 | * Return: IRQ number on success, negative error number on failure. | ||
294 | */ | ||
295 | int platform_get_irq_byname_optional(struct platform_device *dev, | ||
296 | const char *name) | ||
297 | { | ||
298 | return __platform_get_irq_byname(dev, name); | ||
299 | } | ||
300 | EXPORT_SYMBOL_GPL(platform_get_irq_byname_optional); | ||
301 | |||
302 | /** | ||
271 | * platform_add_devices - add a numbers of platform devices | 303 | * platform_add_devices - add a numbers of platform devices |
272 | * @devs: array of platform devices to add | 304 | * @devs: array of platform devices to add |
273 | * @num: number of platform devices in array | 305 | * @num: number of platform devices in array |