driver-core: platform: Add platform_irq_count()
A recent patch added calls to of_irq_count() in the qcom pinctrl drivers and that caused module build failures because of_irq_count() is not an exported symbol. We shouldn't export of_irq_count() to modules because it's an internal OF API that shouldn't be used by drivers. Platform drivers should use platform device APIs instead. Therefore, add a platform_irq_count() API that mirrors the of_irq_count() API so that platform drivers can stay DT agnostic. Cc: Andy Gross <andy.gross@linaro.org> Acked-by: Rob Herring <robh@kernel.org> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
c9f294ff65
commit
4b83555d50
|
@ -116,6 +116,26 @@ int platform_get_irq(struct platform_device *dev, unsigned int num)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(platform_get_irq);
|
EXPORT_SYMBOL_GPL(platform_get_irq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* platform_irq_count - Count the number of IRQs a platform device uses
|
||||||
|
* @dev: platform device
|
||||||
|
*
|
||||||
|
* Return: Number of IRQs a platform device uses or EPROBE_DEFER
|
||||||
|
*/
|
||||||
|
int platform_irq_count(struct platform_device *dev)
|
||||||
|
{
|
||||||
|
int ret, nr = 0;
|
||||||
|
|
||||||
|
while ((ret = platform_get_irq(dev, nr)) >= 0)
|
||||||
|
nr++;
|
||||||
|
|
||||||
|
if (ret == -EPROBE_DEFER)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return nr;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(platform_irq_count);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* platform_get_resource_byname - get a resource for a device by name
|
* platform_get_resource_byname - get a resource for a device by name
|
||||||
* @dev: platform device
|
* @dev: platform device
|
||||||
|
|
|
@ -51,6 +51,7 @@ extern void arch_setup_pdev_archdata(struct platform_device *);
|
||||||
extern struct resource *platform_get_resource(struct platform_device *,
|
extern struct resource *platform_get_resource(struct platform_device *,
|
||||||
unsigned int, unsigned int);
|
unsigned int, unsigned int);
|
||||||
extern int platform_get_irq(struct platform_device *, unsigned int);
|
extern int platform_get_irq(struct platform_device *, unsigned int);
|
||||||
|
extern int platform_irq_count(struct platform_device *);
|
||||||
extern struct resource *platform_get_resource_byname(struct platform_device *,
|
extern struct resource *platform_get_resource_byname(struct platform_device *,
|
||||||
unsigned int,
|
unsigned int,
|
||||||
const char *);
|
const char *);
|
||||||
|
|
Loading…
Reference in New Issue