thermal: cpu_cooling: initialize 'cpufreq_val' on registration
authorViresh Kumar <viresh.kumar@linaro.org>
Thu, 4 Dec 2014 04:11:59 +0000 (09:41 +0530)
committerEduardo Valentin <edubezval@gmail.com>
Mon, 8 Dec 2014 16:09:52 +0000 (12:09 -0400)
There is no point checking for validity of 'cpufreq_val' from
cpufreq_thermal_notifier() every time the routine is called. Its guaranteed to
be 0 on the first call but will be valid otherwise.

Lets update it once while the device registers.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/thermal/cpu_cooling.c

index 491d90a..86bcf8d 100644 (file)
@@ -316,11 +316,6 @@ static int cpufreq_thermal_notifier(struct notifier_block *nb,
                                        &cpufreq_dev->allowed_cpus))
                        continue;
 
-               if (!cpufreq_dev->cpufreq_val)
-                       cpufreq_dev->cpufreq_val = get_cpu_frequency(
-                                       cpumask_any(&cpufreq_dev->allowed_cpus),
-                                       cpufreq_dev->cpufreq_state);
-
                max_freq = cpufreq_dev->cpufreq_val;
 
                if (policy->max != max_freq)
@@ -444,6 +439,13 @@ __cpufreq_cooling_register(struct device_node *np,
        if (!cpufreq_dev)
                return ERR_PTR(-ENOMEM);
 
+       cpufreq_dev->cpufreq_val = get_cpu_frequency(cpumask_any(clip_cpus), 0);
+       if (!cpufreq_dev->cpufreq_val) {
+               pr_err("%s: Failed to get frequency", __func__);
+               cool_dev = ERR_PTR(-EINVAL);
+               goto free_cdev;
+       }
+
        cpumask_copy(&cpufreq_dev->allowed_cpus, clip_cpus);
 
        ret = get_idr(&cpufreq_idr, &cpufreq_dev->id);