On Mon, Sep 27, 2021 at 2:49 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote: > > On 9/27/21 12:43 PM, Rob Herring wrote: > > On Mon, Sep 27, 2021 at 2:28 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote: > >> > >> On 9/27/21 12:08 PM, Rob Herring wrote: > >>> On Fri, Sep 24, 2021 at 12:07 PM Florian Fainelli <f.fainelli@xxxxxxxxx> wrote: > >>>> > >>>> 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@xxxxxxxxx> > >>>> --- > >>>> 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