[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <f90e00b6-2663-c5cd-41b6-93cd54432a6a@xilinx.com>
Date: Fri, 11 Sep 2020 11:22:06 +0200
From: Michal Simek <michal.simek@...inx.com>
To: Arnd Bergmann <arnd@...db.de>,
Michal Simek <michal.simek@...inx.com>
Cc: Amit Sunil Dhamne <amit.sunil.dhamne@...inx.com>,
Ard Biesheuvel <ard.biesheuvel@...aro.org>,
Ingo Molnar <mingo@...nel.org>,
gregkh <gregkh@...uxfoundation.org>,
Matt Fleming <matt@...eblueprint.co.uk>,
Sudeep Holla <sudeep.holla@....com>,
Heiner Kallweit <hkallweit1@...il.com>,
Kees Cook <keescook@...omium.org>,
Dmitry Torokhov <dmitry.torokhov@...il.com>, rajanv@...inx.com,
Linux ARM <linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
tejasp@...inx.com, Jolly Shah <jollys@...inx.com>,
Rajan Vaja <rajan.vaja@...inx.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@...inx.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.
Thanks,
Michal
Powered by blists - more mailing lists