Message ID | 20210216123958.3180014-1-geert+renesas@glider.be (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Series | [v2] soc: renesas: rmobile-sysc: Mark fwnode when PM domain is added | expand |
On Tue, Feb 16, 2021 at 4:40 AM Geert Uytterhoeven <geert+renesas@glider.be> wrote: > > Currently, there are two drivers binding to the R-Mobile System > Controller (SYSC): > - The rmobile-sysc driver registers PM domains from a core_initcall(), > and does not use a platform driver, > - The optional rmobile-reset driver registers a reset handler, and > does use a platform driver. > > As fw_devlink only considers devices, commit bab2d712eeaf9d60 ("PM: > domains: Mark fwnodes when their powerdomain is added/removed") works > only for PM Domain drivers where the DT node is a real device node, and > not for PM Domain drivers using a hierarchical representation inside a > subnode. Hence if fw_devlink is enabled, probing of on-chip devices > that are part of the SYSC PM domain is deferred until the optional > rmobile-reset driver has been bound. If the rmobile-reset driver is > not available, this will never happen, and thus lead to complete system > boot failures. > > Fix this by explicitly marking the fwnode initialized. > > Suggested-by: Saravana Kannan <saravanak@google.com> > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > This is v2 of "soc: renesas: rmobile-sysc: Set OF_POPULATED and absorb > reset handling". > To be queued in renesas-devel as a fix for v5.12 if v5.12-rc1 will have > fw_devlink enabled. > > v2: > - Call fwnode_dev_initialized() instead of setting OF_POPULATED, > - Drop reset handling move, as fwnode_dev_initialized() does not > prevent the rmobile-reset driver from binding against the same > device. > --- > drivers/soc/renesas/rmobile-sysc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/soc/renesas/rmobile-sysc.c b/drivers/soc/renesas/rmobile-sysc.c > index bf64d052f9245db5..204e6135180b919c 100644 > --- a/drivers/soc/renesas/rmobile-sysc.c > +++ b/drivers/soc/renesas/rmobile-sysc.c > @@ -342,6 +342,8 @@ static int __init rmobile_init_pm_domains(void) > of_node_put(np); > break; > } > + > + fwnode_dev_initialized(&np->fwnode, true); > } > > put_special_pds(); Acked-by: Saravana Kannan <saravanak@google.com> Keep in mind that this might have to land in driver-core-next since that API is currently only in driver-core-next. -Saravana
Hi Saravana, On Tue, Feb 16, 2021 at 7:26 PM Saravana Kannan <saravanak@google.com> wrote: > On Tue, Feb 16, 2021 at 4:40 AM Geert Uytterhoeven > <geert+renesas@glider.be> wrote: > > Currently, there are two drivers binding to the R-Mobile System > > Controller (SYSC): > > - The rmobile-sysc driver registers PM domains from a core_initcall(), > > and does not use a platform driver, > > - The optional rmobile-reset driver registers a reset handler, and > > does use a platform driver. > > > > As fw_devlink only considers devices, commit bab2d712eeaf9d60 ("PM: > > domains: Mark fwnodes when their powerdomain is added/removed") works > > only for PM Domain drivers where the DT node is a real device node, and > > not for PM Domain drivers using a hierarchical representation inside a > > subnode. Hence if fw_devlink is enabled, probing of on-chip devices > > that are part of the SYSC PM domain is deferred until the optional > > rmobile-reset driver has been bound. If the rmobile-reset driver is > > not available, this will never happen, and thus lead to complete system > > boot failures. > > > > Fix this by explicitly marking the fwnode initialized. > > > > Suggested-by: Saravana Kannan <saravanak@google.com> > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > > --- > > This is v2 of "soc: renesas: rmobile-sysc: Set OF_POPULATED and absorb > > reset handling". > > To be queued in renesas-devel as a fix for v5.12 if v5.12-rc1 will have > > fw_devlink enabled. > Acked-by: Saravana Kannan <saravanak@google.com> Thanks! > Keep in mind that this might have to land in driver-core-next since > that API is currently only in driver-core-next. That will be resolved once driver-core-next has been merged in v5.12-rc1. Gr{oetje,eeting}s, Geert
diff --git a/drivers/soc/renesas/rmobile-sysc.c b/drivers/soc/renesas/rmobile-sysc.c index bf64d052f9245db5..204e6135180b919c 100644 --- a/drivers/soc/renesas/rmobile-sysc.c +++ b/drivers/soc/renesas/rmobile-sysc.c @@ -342,6 +342,8 @@ static int __init rmobile_init_pm_domains(void) of_node_put(np); break; } + + fwnode_dev_initialized(&np->fwnode, true); } put_special_pds();
Currently, there are two drivers binding to the R-Mobile System Controller (SYSC): - The rmobile-sysc driver registers PM domains from a core_initcall(), and does not use a platform driver, - The optional rmobile-reset driver registers a reset handler, and does use a platform driver. As fw_devlink only considers devices, commit bab2d712eeaf9d60 ("PM: domains: Mark fwnodes when their powerdomain is added/removed") works only for PM Domain drivers where the DT node is a real device node, and not for PM Domain drivers using a hierarchical representation inside a subnode. Hence if fw_devlink is enabled, probing of on-chip devices that are part of the SYSC PM domain is deferred until the optional rmobile-reset driver has been bound. If the rmobile-reset driver is not available, this will never happen, and thus lead to complete system boot failures. Fix this by explicitly marking the fwnode initialized. Suggested-by: Saravana Kannan <saravanak@google.com> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> --- This is v2 of "soc: renesas: rmobile-sysc: Set OF_POPULATED and absorb reset handling". To be queued in renesas-devel as a fix for v5.12 if v5.12-rc1 will have fw_devlink enabled. v2: - Call fwnode_dev_initialized() instead of setting OF_POPULATED, - Drop reset handling move, as fwnode_dev_initialized() does not prevent the rmobile-reset driver from binding against the same device. --- drivers/soc/renesas/rmobile-sysc.c | 2 ++ 1 file changed, 2 insertions(+)