Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b83555d authored by Stephen Boyd's avatar Stephen Boyd Committed by Linus Walleij
Browse files

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: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent c9f294ff
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -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
+1 −0
Original line number Original line Diff line number Diff line
@@ -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 *);