diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-05-02 18:19:56 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-05-02 18:19:56 -0400 |
commit | d705116f278fb5417ef6092f2f9c858975464991 (patch) | |
tree | 5409ea5f79f6fd8d99496b8a5874cdbbf33a3cd3 /drivers/cpufreq/powernow-k6.c | |
parent | d1db0eea852497762cab43b905b879dfcd3b8987 (diff) | |
parent | 6712d2931933ada259b82f06c03a855b19937074 (diff) |
Merge branch 'pm-cpufreq'
* pm-cpufreq:
cpufreq: ppc-corenet-cpufreq: Fix __udivdi3 modpost error
cpufreq: powernow-k7: Fix double invocation of cpufreq_freq_transition_begin/end
cpufreq: powernow-k6: Fix double invocation of cpufreq_freq_transition_begin/end
cpufreq: powernow-k6: Fix incorrect comparison with max_multipler
cpufreq: longhaul: Fix double invocation of cpufreq_freq_transition_begin/end
Diffstat (limited to 'drivers/cpufreq/powernow-k6.c')
-rw-r--r-- | drivers/cpufreq/powernow-k6.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/drivers/cpufreq/powernow-k6.c b/drivers/cpufreq/powernow-k6.c index 49f120e1bc7b..78904e6ca4a0 100644 --- a/drivers/cpufreq/powernow-k6.c +++ b/drivers/cpufreq/powernow-k6.c | |||
@@ -138,22 +138,14 @@ static void powernow_k6_set_cpu_multiplier(unsigned int best_i) | |||
138 | static int powernow_k6_target(struct cpufreq_policy *policy, | 138 | static int powernow_k6_target(struct cpufreq_policy *policy, |
139 | unsigned int best_i) | 139 | unsigned int best_i) |
140 | { | 140 | { |
141 | struct cpufreq_freqs freqs; | ||
142 | 141 | ||
143 | if (clock_ratio[best_i].driver_data > max_multiplier) { | 142 | if (clock_ratio[best_i].driver_data > max_multiplier) { |
144 | printk(KERN_ERR PFX "invalid target frequency\n"); | 143 | printk(KERN_ERR PFX "invalid target frequency\n"); |
145 | return -EINVAL; | 144 | return -EINVAL; |
146 | } | 145 | } |
147 | 146 | ||
148 | freqs.old = busfreq * powernow_k6_get_cpu_multiplier(); | ||
149 | freqs.new = busfreq * clock_ratio[best_i].driver_data; | ||
150 | |||
151 | cpufreq_freq_transition_begin(policy, &freqs); | ||
152 | |||
153 | powernow_k6_set_cpu_multiplier(best_i); | 147 | powernow_k6_set_cpu_multiplier(best_i); |
154 | 148 | ||
155 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
156 | |||
157 | return 0; | 149 | return 0; |
158 | } | 150 | } |
159 | 151 | ||
@@ -227,9 +219,20 @@ have_busfreq: | |||
227 | static int powernow_k6_cpu_exit(struct cpufreq_policy *policy) | 219 | static int powernow_k6_cpu_exit(struct cpufreq_policy *policy) |
228 | { | 220 | { |
229 | unsigned int i; | 221 | unsigned int i; |
230 | for (i = 0; i < 8; i++) { | 222 | |
231 | if (i == max_multiplier) | 223 | for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) { |
224 | if (clock_ratio[i].driver_data == max_multiplier) { | ||
225 | struct cpufreq_freqs freqs; | ||
226 | |||
227 | freqs.old = policy->cur; | ||
228 | freqs.new = clock_ratio[i].frequency; | ||
229 | freqs.flags = 0; | ||
230 | |||
231 | cpufreq_freq_transition_begin(policy, &freqs); | ||
232 | powernow_k6_target(policy, i); | 232 | powernow_k6_target(policy, i); |
233 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
234 | break; | ||
235 | } | ||
233 | } | 236 | } |
234 | return 0; | 237 | return 0; |
235 | } | 238 | } |