Re: [PATCH 07/11] of/irq: Export of_irq_count to drivers
From: Rob Herring <robh+dt@kernel.org>
Date: 2021-09-27 20:09:26
Also in:
linux-arm-kernel, linux-devicetree, linux-sh, lkml
On Mon, Sep 27, 2021 at 2:49 PM Florian Fainelli [off-list ref] wrote:
On 9/27/21 12:43 PM, Rob Herring wrote:quoted
On Mon, Sep 27, 2021 at 2:28 PM Florian Fainelli [off-list ref] wrote:quoted
On 9/27/21 12:08 PM, Rob Herring wrote:quoted
On Fri, Sep 24, 2021 at 12:07 PM Florian Fainelli [off-list ref] wrote:quoted
In order to build drivers/irqchip/irq-bcm7120-l2.c as a module, we will need to have of_irq_count() exported to modules. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- drivers/of/irq.c | 1 + 1 file changed, 1 insertion(+)diff --git a/drivers/of/irq.c b/drivers/of/irq.c index 352e14b007e7..949b9d1f8729 100644 --- a/drivers/of/irq.c +++ b/drivers/of/irq.c@@ -440,6 +440,7 @@ int of_irq_count(struct device_node *dev) return nr; } +EXPORT_SYMBOL_GPL(of_irq_count);Please convert to use platform_irq_count() instead.That requires a platform_device to be passed to platform_irq_count(), will that work even when the drivers remain built into the kernel and get initialized early on?No, does your irqchip using this do both? Looks to me like it is always a platform_device.On ARM/ARM64 not using GKI as well as MIPS, we would want the module to be built into the kernel image, however when using GKI that driver would become a module. How do you suggest reconciling both usages?
What's there to resolve? Every driver that works as a module can be built-in. Is there something special about irqchip drivers? The only issue I see here is platform_irqchip_probe() doesn't pass the platform_device pointer to the irq_init_cb function. There's 3 ways to fix that. Add a platform_device pointer to the init hook. That's a global change though. That's the right thing to do IMO. Or you can use of_find_device_by_node(). That's fairly expensive, but easy and isolated. You could also set device_node.data pointer to the platform_device, but ideally I'd like to get rid of that pointer as it's hardly used. Rob