diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2021-02-16 13:39:58 +0100 |
---|---|---|
committer | Geert Uytterhoeven <geert+renesas@glider.be> | 2021-03-08 10:25:00 +0100 |
commit | 1d9ffbc6b185561c65a5a599562dbb6c5d66e7d1 (patch) | |
tree | 717492df681011e46012ea40fc5ca9d11813adb0 /drivers/soc/renesas | |
parent | 2fb72440b697e1f2cb12790873df159160c22bcf (diff) |
soc: renesas: rmobile-sysc: Mark fwnode when PM domain is added
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>
Acked-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20210216123958.3180014-1-geert+renesas@glider.be
Diffstat (limited to 'drivers/soc/renesas')
-rw-r--r-- | drivers/soc/renesas/rmobile-sysc.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/soc/renesas/rmobile-sysc.c b/drivers/soc/renesas/rmobile-sysc.c index bf64d052f924..204e6135180b 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(); |