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

From: Rajan Vaja
Date: Fri Sep 11 2020 - 05:33:14 EST


Hi Michal,

> -----Original Message-----
> From: Michal Simek <michal.simek@xxxxxxxxxx>
> Sent: Friday, September 11, 2020 2:52 PM
> To: Arnd Bergmann <arnd@xxxxxxxx>; Michal Simek <michals@xxxxxxxxxx>
> Cc: Amit Sunil Dhamne <amitsuni@xxxxxxxxxx>; Ard Biesheuvel
> <ard.biesheuvel@xxxxxxxxxx>; Ingo Molnar <mingo@xxxxxxxxxx>; gregkh
> <gregkh@xxxxxxxxxxxxxxxxxxx>; Matt Fleming <matt@xxxxxxxxxxxxxxxxxxx>;
> Sudeep Holla <sudeep.holla@xxxxxxx>; Heiner Kallweit
> <hkallweit1@xxxxxxxxx>; Kees Cook <keescook@xxxxxxxxxxxx>; Dmitry
> Torokhov <dmitry.torokhov@xxxxxxxxx>; Rajan Vaja <RAJANV@xxxxxxxxxx>;
> Linux ARM <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>; linux-
> kernel@xxxxxxxxxxxxxxx; Tejas Patel <TEJASP@xxxxxxxxxx>; Jolly Shah
> <JOLLYS@xxxxxxxxxx>; Rajan Vaja <RAJANV@xxxxxxxxxx>
> 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@xxxxxxxxxx>
> 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