From: Quanyang Wang <quanyang.w...@windriver.com> The function dev_pm_opp_of_cpumask_add_table may return -EPROBE_DEFER which comes from clk_get(dev, NULL) in _update_opp_table_clk. Ignoring this error and call the next function dev_pm_opp_of_cpumask_add_table may cause dt_cpufreq_probe return -ENODEV instead of -EPROBE_DEFER. And this will result cpufreq-dt driver probe failure.
Add check condition to fix this issue. Signed-off-by: Quanyang Wang <quanyang.w...@windriver.com> --- drivers/cpufreq/cpufreq-dt.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c index b1e1bdc63b01..25e46df92941 100644 --- a/drivers/cpufreq/cpufreq-dt.c +++ b/drivers/cpufreq/cpufreq-dt.c @@ -257,7 +257,12 @@ static int dt_cpufreq_early_init(struct device *dev, int cpu) * * OPPs might be populated at runtime, don't check for error here. */ - if (!dev_pm_opp_of_cpumask_add_table(priv->cpus)) + ret = dev_pm_opp_of_cpumask_add_table(priv->cpus); + if (ret) { + /* Return the -EPROBE_DEFER error to trigger the deferred probe. */ + if (ret == -EPROBE_DEFER) + goto out; + } else priv->have_static_opps = true; /* -- 2.25.1