Hi Michal, > -----Original Message----- > From: Michal Simek <michal.si...@xilinx.com> > Sent: Friday, September 11, 2020 2:52 PM > To: Arnd Bergmann <a...@arndb.de>; Michal Simek <mich...@xilinx.com> > Cc: Amit Sunil Dhamne <amits...@xilinx.com>; Ard Biesheuvel > <ard.biesheu...@linaro.org>; Ingo Molnar <mi...@kernel.org>; gregkh > <gre...@linuxfoundation.org>; Matt Fleming <m...@codeblueprint.co.uk>; > Sudeep Holla <sudeep.ho...@arm.com>; Heiner Kallweit > <hkallwe...@gmail.com>; Kees Cook <keesc...@chromium.org>; Dmitry > Torokhov <dmitry.torok...@gmail.com>; Rajan Vaja <raj...@xilinx.com>; > Linux ARM <linux-arm-ker...@lists.infradead.org>; linux- > ker...@vger.kernel.org; Tejas Patel <tej...@xilinx.com>; Jolly Shah > <jol...@xilinx.com>; Rajan Vaja <raj...@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.si...@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