[PATCH v2] drivers: soc: xilinx: Call InitFinalize from late_initcall_sync instead of probe

Rajan Vaja RAJANV at xilinx.com
Fri Sep 11 05:33:06 EDT 2020


Hi Michal,

> -----Original Message-----
> From: Michal Simek <michal.simek at xilinx.com>
> Sent: Friday, September 11, 2020 2:52 PM
> To: Arnd Bergmann <arnd at arndb.de>; Michal Simek <michals at xilinx.com>
> Cc: Amit Sunil Dhamne <amitsuni at xilinx.com>; Ard Biesheuvel
> <ard.biesheuvel at linaro.org>; Ingo Molnar <mingo at kernel.org>; gregkh
> <gregkh at linuxfoundation.org>; Matt Fleming <matt at codeblueprint.co.uk>;
> Sudeep Holla <sudeep.holla at arm.com>; Heiner Kallweit
> <hkallweit1 at gmail.com>; Kees Cook <keescook at chromium.org>; Dmitry
> Torokhov <dmitry.torokhov at gmail.com>; Rajan Vaja <RAJANV at xilinx.com>;
> Linux ARM <linux-arm-kernel at lists.infradead.org>; linux-
> kernel at vger.kernel.org; Tejas Patel <TEJASP at xilinx.com>; Jolly Shah
> <JOLLYS at xilinx.com>; Rajan Vaja <RAJANV at xilinx.com>
> Subject: Re: [PATCH v2] drivers: soc: xilinx: Call InitFinalize from
> late_initcall_sync instead of probe
> 
> 
> 
> On 10. 09. 20 10:35, Arnd Bergmann wrote:
> > On Thu, Sep 10, 2020 at 8:50 AM Michal Simek <michal.simek at xilinx.com>
> wrote:
> >>> @@ -246,6 +245,23 @@ static int zynqmp_pm_remove(struct
> platform_device *pdev)
> >>>       return 0;
> >>>  }
> >>>
> >>> +static int __init do_init_finalize(void) {
> >>> +     struct device_node *np;
> >>> +
> >>> +     np = of_find_compatible_node(NULL, NULL, "xlnx,zynqmp");
> >>> +     if (!np) {
> >>> +             np = of_find_compatible_node(NULL, NULL, "xlnx,versal");
> >>> +             if (!np)
> >>> +                     return 0;
> >>> +     }
> >>> +     of_node_put(np);
> >>> +
> >>> +     return zynqmp_pm_init_finalize(); }
> >>> +
> >>> +late_initcall_sync(do_init_finalize);
> >>> +
> >>>  static const struct of_device_id pm_of_match[] = {
> >>>       { .compatible = "xlnx,zynqmp-power", },
> >>>       { /* end of table */ },
> >>>
> >>
> >> Arnd: are you fine with this way how to check that it runs on zynqmp
> >> or versal?
> >
> > I might be missing something, but this sounds like the wrong way to do it.
> > There is already a platform driver probed in the presence of the
> > "xlnx,zynqmp-power" node in the same file. Wouldn't it be better to
> > either check for the same node instead of an arbitrarily different set
> > of SoC names, or to make the platform driver itself get registered
> > form the late initcall?
> 
> Rajan/Amit: On the top of my head I expect that you can't call it as late initcall
> because you need the first part earlier.
> 
> Does it make sense to check same node?
> There is and should be only one instance of this driver.
> Isn't it easier just to setup one static variable instead of calling dt functions
> which will take time and result will be the same.
[Rajan Vaja] Yes Michal, that make sense. We will make changes and will submit new version.

Thanks,
Rajan
> 
> Thanks,
> Michal


More information about the linux-arm-kernel mailing list