aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDirk Brandewie <dirk.brandewie@gmail.com>2013-02-06 12:02:08 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-02-09 06:55:03 -0500
commit9e21ba8bd849251c8ba22ddf39308a5227134fdc (patch)
tree5e7066d016fcd32589146bee014bca8d91366658
parent2eaa3e2df185997e92596ab14a2a67dde3876d2e (diff)
cpufreq: Retrieve current frequency from scaling drivers with internal governors
Scaling drivers that implement the cpufreq_driver.setpolicy() versus the cpufreq_driver.target() interface do not set policy->cur. Normally policy->cur is set during the call to cpufreq_driver.target() when the frequnecy request is made by the governor. If the scaling driver implements cpufreq_driver.setpolicy() and cpufreq_driver.get() interfaces use cpufreq_driver.get() to retrieve the current frequency. Signed-off-by: Dirk Brandewie <dirk.j.brandewie@intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/cpufreq/cpufreq.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index e000f3691661..e98035dc2265 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1156,9 +1156,13 @@ static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1156 */ 1156 */
1157unsigned int cpufreq_quick_get(unsigned int cpu) 1157unsigned int cpufreq_quick_get(unsigned int cpu)
1158{ 1158{
1159 struct cpufreq_policy *policy = cpufreq_cpu_get(cpu); 1159 struct cpufreq_policy *policy;
1160 unsigned int ret_freq = 0; 1160 unsigned int ret_freq = 0;
1161 1161
1162 if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1163 return cpufreq_driver->get(cpu);
1164
1165 policy = cpufreq_cpu_get(cpu);
1162 if (policy) { 1166 if (policy) {
1163 ret_freq = policy->cur; 1167 ret_freq = policy->cur;
1164 cpufreq_cpu_put(policy); 1168 cpufreq_cpu_put(policy);