OSDN Git Service

cpufreq: sh: Don't validate the frequency table twice
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 26 Feb 2018 05:09:06 +0000 (10:39 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 20 Mar 2018 11:07:52 +0000 (12:07 +0100)
The cpufreq core is already validating the CPU frequency table after
calling the ->init() callback of the cpufreq drivers and the drivers
don't need to do the same anymore. Though they need to set the
policy->freq_table field directly from the ->init() callback now.

Stop validating the frequency table from sh-cpufreq driver.

The driver though prints the min/max frequency values and the same is
done from the ->ready() callback now to keep the behavior unchanged.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/sh-cpufreq.c

index 28893d4..5096c0a 100644 (file)
@@ -122,11 +122,7 @@ static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy)
 
        freq_table = cpuclk->nr_freqs ? cpuclk->freq_table : NULL;
        if (freq_table) {
-               int result;
-
-               result = cpufreq_table_validate_and_show(policy, freq_table);
-               if (result)
-                       return result;
+               policy->freq_table = freq_table;
        } else {
                dev_notice(dev, "no frequency table found, falling back "
                           "to rate rounding.\n");
@@ -137,11 +133,6 @@ static int sh_cpufreq_cpu_init(struct cpufreq_policy *policy)
                        (clk_round_rate(cpuclk, ~0UL) + 500) / 1000;
        }
 
-       dev_info(dev, "CPU Frequencies - Minimum %u.%03u MHz, "
-              "Maximum %u.%03u MHz.\n",
-              policy->min / 1000, policy->min % 1000,
-              policy->max / 1000, policy->max % 1000);
-
        return 0;
 }
 
@@ -155,6 +146,16 @@ static int sh_cpufreq_cpu_exit(struct cpufreq_policy *policy)
        return 0;
 }
 
+static void sh_cpufreq_cpu_ready(struct cpufreq_policy *policy)
+{
+       struct device *dev = get_cpu_device(policy->cpu);
+
+       dev_info(dev, "CPU Frequencies - Minimum %u.%03u MHz, "
+              "Maximum %u.%03u MHz.\n",
+              policy->min / 1000, policy->min % 1000,
+              policy->max / 1000, policy->max % 1000);
+}
+
 static struct cpufreq_driver sh_cpufreq_driver = {
        .name           = "sh",
        .flags          = CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING,
@@ -163,6 +164,7 @@ static struct cpufreq_driver sh_cpufreq_driver = {
        .verify         = sh_cpufreq_verify,
        .init           = sh_cpufreq_cpu_init,
        .exit           = sh_cpufreq_cpu_exit,
+       .ready          = sh_cpufreq_cpu_ready,
        .attr           = cpufreq_generic_attr,
 };