From 1f216d03f25aa357ef1ddf2b17ed07aa93789463 Mon Sep 17 00:00:00 2001 From: Hong Guo Date: Thu, 13 Sep 2018 13:33:06 +0800 Subject: [PATCH] CPUFREQ: Release cpu opp table when entry suspend.[1/2] PD#165143: Release cpu opp table when entry suspend. Change-Id: Iee5100385a4bd5fd871b38226668c1a24bf6755e Signed-off-by: Hong Guo --- drivers/amlogic/cpufreq/meson-cpufreq.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/amlogic/cpufreq/meson-cpufreq.c b/drivers/amlogic/cpufreq/meson-cpufreq.c index ff09c68589cc..a7bbd3ebc069 100644 --- a/drivers/amlogic/cpufreq/meson-cpufreq.c +++ b/drivers/amlogic/cpufreq/meson-cpufreq.c @@ -470,9 +470,11 @@ static int meson_cpufreq_init(struct cpufreq_policy *policy) dev_info(cpu_dev, "%s: CPU %d initialized\n", __func__, policy->cpu); return ret; free_opp_table: - if (policy->freq_table != NULL) + if (policy->freq_table != NULL) { dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table[cur_cluster]); + dev_pm_opp_of_cpumask_remove_table(policy->related_cpus); + } free_reg: if (!IS_ERR(cpu_reg)) devm_regulator_put(cpu_reg); @@ -513,7 +515,11 @@ static int meson_cpufreq_exit(struct cpufreq_policy *policy) return -ENODEV; } - dev_pm_opp_free_cpufreq_table(cpu_dev, &freq_table[cur_cluster]); + if (policy->freq_table != NULL) { + dev_pm_opp_free_cpufreq_table(cpu_dev, + &freq_table[cur_cluster]); + dev_pm_opp_of_cpumask_remove_table(policy->related_cpus); + } dev_dbg(cpu_dev, "%s: Exited, cpu: %d\n", __func__, policy->cpu); kfree(cpufreq_data); @@ -523,7 +529,7 @@ static int meson_cpufreq_exit(struct cpufreq_policy *policy) static int meson_cpufreq_suspend(struct cpufreq_policy *policy) { - return cpufreq_generic_suspend(policy); + return cpufreq_generic_suspend(policy); } static int meson_cpufreq_resume(struct cpufreq_policy *policy) @@ -549,7 +555,6 @@ static struct cpufreq_driver meson_cpufreq_driver = { static int meson_cpufreq_register_notifier(void) { return 0; } static int meson_cpufreq_unregister_notifier(void) { return 0; } - static int meson_cpufreq_probe(struct platform_device *pdev) { struct device *cpu_dev;