diff options
Diffstat (limited to 'drivers/base/platform.c')
| -rw-r--r-- | drivers/base/platform.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/drivers/base/platform.c b/drivers/base/platform.c index e714709704e4..5b47210889e0 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -13,6 +13,7 @@  #include <linux/string.h>  #include <linux/platform_device.h>  #include <linux/of_device.h> +#include <linux/of_irq.h>  #include <linux/module.h>  #include <linux/init.h>  #include <linux/dma-mapping.h> @@ -87,7 +88,11 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)  		return -ENXIO;  	return dev->archdata.irqs[num];  #else -	struct resource *r = platform_get_resource(dev, IORESOURCE_IRQ, num); +	struct resource *r; +	if (IS_ENABLED(CONFIG_OF_IRQ) && dev->dev.of_node) +		return of_irq_get(dev->dev.of_node, num); + +	r = platform_get_resource(dev, IORESOURCE_IRQ, num);  	return r ? r->start : -ENXIO;  #endif |