Older device-trees don't have core domain node. In this case we shouldn't mark the domain as synced, allowing to begin core voltage scaling. Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx> --- drivers/soc/tegra/pmc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c index d8eee285fd58..d317532130c3 100644 --- a/drivers/soc/tegra/pmc.c +++ b/drivers/soc/tegra/pmc.c @@ -431,6 +431,7 @@ struct tegra_pmc { struct notifier_block clk_nb; bool core_domain_state_synced; + bool core_domain_registered; }; static struct tegra_pmc *pmc = &(struct tegra_pmc) { @@ -1382,6 +1383,8 @@ static int tegra_pmc_core_pd_add(struct tegra_pmc *pmc, struct device_node *np) goto remove_genpd; } + pmc->core_domain_registered = true; + return 0; remove_genpd: @@ -3798,6 +3801,14 @@ static void tegra_pmc_sync_state(struct device *dev) { int err; + /* + * Older device-trees don't have core PD, and thus, there are + * no dependencies that will block the state syncing. We shouldn't + * mark the domain as synced in this case. + */ + if (!pmc->core_domain_registered) + return; + pmc->core_domain_state_synced = true; /* this is a no-op if core regulator isn't used */ -- 2.30.2