diff options
author | Todd Poynor <toddpoynor@google.com> | 2011-11-20 09:52:47 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2011-11-20 10:08:51 +0800 |
commit | cc29d3443ca0edf142a89450f70e638984525c18 (patch) | |
tree | 7ee3bc057b23d06724c2d1680306dde2bf2830ad /drivers | |
parent | 7fb1c965243a22951ae9e72f242f70ca4784c3bc (diff) |
cpufreq: interactive governor: scale to max only if at min speed
Change-Id: Ieffb2aa56b5290036285c948718be7be0d3af9e8
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/cpufreq/cpufreq_interactive.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index 17d276161d6..b8ffbbdea2c 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -159,10 +159,14 @@ static void cpufreq_interactive_timer(unsigned long data) if (load_since_change > cpu_load) cpu_load = load_since_change; - if (cpu_load >= go_maxspeed_load) - new_freq = pcpu->policy->max; - else + if (cpu_load >= go_maxspeed_load) { + if (pcpu->policy->cur == pcpu->policy->min) + new_freq = pcpu->policy->max; + else + new_freq = pcpu->policy->max * cpu_load / 100; + } else { new_freq = pcpu->policy->cur * cpu_load / 100; + } if (cpufreq_frequency_table_target(pcpu->policy, pcpu->freq_table, new_freq, CPUFREQ_RELATION_H, |