On Mon, Jan 4, 2016 at 6:04 PM, Stephen Boyd <sboyd@xxxxxxxxxxxxxx> wrote: > On 12/22, Rob Herring wrote: >> On Tue, Dec 22, 2015 at 6:22 AM, Mark Brown <broonie@xxxxxxxxxx> wrote: >> > Some of the Qualcomm pinctrl drivers have started trying to use >> > of_irq_count() in modular code but this fails to build as the symbol is >> > not exported. Since there doesn't seem to be any reason not to export >> > the symbol make it available to modules. >> >> The reason it has not been exported is because we want to stick with >> the platform_* APIs for IRQs. There's not really an equivalent >> function though. Perhaps we should make one? Usually it is just used >> for allocating some driver data. If that is the case, is it really >> enough data to not just allocate the max? >> > > It's mostly used for allocation but we also do some pin type > discovery by reading registers and that would fail if we went > past the actual number of pins there are. > > So how about implementing platform_irq_count()? I'd like to keep > these drivers as tristate if possible. Ack. > ----8<---- > diff --git a/drivers/base/platform.c b/drivers/base/platform.c > index d77ed0c946dd..421c67f8fdef 100644 > --- a/drivers/base/platform.c > +++ b/drivers/base/platform.c > @@ -118,6 +118,25 @@ int platform_get_irq(struct platform_device *dev, unsigned int num) > 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; > +} Don't forget the export here. :) Rob -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html