amlogic/cpufreq: Register transition notifier only when dsu_clk and dsu_pre_parent are defined in device tree.

Fixes crash on suspend/resume
This commit is contained in:
Ray
2019-05-28 14:37:56 +02:00
committed by Dongjin Kim
parent 475c4a0446
commit 671f04279b

View File

@@ -592,12 +592,14 @@ static int meson_cpufreq_init(struct cpufreq_policy *policy)
if (of_property_read_u32(np, "clock-latency", &transition_latency))
policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
cpufreq_data->freq_transition = meson_cpufreq_notifier_block;
ret = cpufreq_register_notifier(&cpufreq_data->freq_transition,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
dev_err(cpu_dev, "failed to register cpufreq notifier!\n");
goto fail_cpufreq_unregister;
if (dsu_clk && dsu_pre_parent) {
cpufreq_data->freq_transition = meson_cpufreq_notifier_block;
ret = cpufreq_register_notifier(&cpufreq_data->freq_transition,
CPUFREQ_TRANSITION_NOTIFIER);
if (ret) {
dev_err(cpu_dev, "failed to register cpufreq notifier!\n");
goto fail_cpufreq_unregister;
}
}
cpufreq_data->cpu_dev = cpu_dev;
@@ -629,8 +631,10 @@ static int meson_cpufreq_init(struct cpufreq_policy *policy)
dev_info(cpu_dev, "%s: CPU %d initialized\n", __func__, policy->cpu);
return ret;
fail_cpufreq_unregister:
if (dsu_clk && dsu_pre_parent) {
cpufreq_unregister_notifier(&cpufreq_data->freq_transition,
CPUFREQ_TRANSITION_NOTIFIER);
}
free_opp_table:
if (policy->freq_table != NULL) {
dev_pm_opp_free_cpufreq_table(cpu_dev,