diff options
Diffstat (limited to 'drivers/cpufreq/e_powersaver.c')
-rw-r--r-- | drivers/cpufreq/e_powersaver.c | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/drivers/cpufreq/e_powersaver.c b/drivers/cpufreq/e_powersaver.c index 09f64cc83019..b39c4ef60a7a 100644 --- a/drivers/cpufreq/e_powersaver.c +++ b/drivers/cpufreq/e_powersaver.c | |||
@@ -168,12 +168,9 @@ postchange: | |||
168 | return err; | 168 | return err; |
169 | } | 169 | } |
170 | 170 | ||
171 | static int eps_target(struct cpufreq_policy *policy, | 171 | static int eps_target(struct cpufreq_policy *policy, unsigned int index) |
172 | unsigned int target_freq, | ||
173 | unsigned int relation) | ||
174 | { | 172 | { |
175 | struct eps_cpu_data *centaur; | 173 | struct eps_cpu_data *centaur; |
176 | unsigned int newstate = 0; | ||
177 | unsigned int cpu = policy->cpu; | 174 | unsigned int cpu = policy->cpu; |
178 | unsigned int dest_state; | 175 | unsigned int dest_state; |
179 | int ret; | 176 | int ret; |
@@ -182,28 +179,14 @@ static int eps_target(struct cpufreq_policy *policy, | |||
182 | return -ENODEV; | 179 | return -ENODEV; |
183 | centaur = eps_cpu[cpu]; | 180 | centaur = eps_cpu[cpu]; |
184 | 181 | ||
185 | if (unlikely(cpufreq_frequency_table_target(policy, | ||
186 | &eps_cpu[cpu]->freq_table[0], | ||
187 | target_freq, | ||
188 | relation, | ||
189 | &newstate))) { | ||
190 | return -EINVAL; | ||
191 | } | ||
192 | |||
193 | /* Make frequency transition */ | 182 | /* Make frequency transition */ |
194 | dest_state = centaur->freq_table[newstate].driver_data & 0xffff; | 183 | dest_state = centaur->freq_table[index].driver_data & 0xffff; |
195 | ret = eps_set_state(centaur, policy, dest_state); | 184 | ret = eps_set_state(centaur, policy, dest_state); |
196 | if (ret) | 185 | if (ret) |
197 | printk(KERN_ERR "eps: Timeout!\n"); | 186 | printk(KERN_ERR "eps: Timeout!\n"); |
198 | return ret; | 187 | return ret; |
199 | } | 188 | } |
200 | 189 | ||
201 | static int eps_verify(struct cpufreq_policy *policy) | ||
202 | { | ||
203 | return cpufreq_frequency_table_verify(policy, | ||
204 | &eps_cpu[policy->cpu]->freq_table[0]); | ||
205 | } | ||
206 | |||
207 | static int eps_cpu_init(struct cpufreq_policy *policy) | 190 | static int eps_cpu_init(struct cpufreq_policy *policy) |
208 | { | 191 | { |
209 | unsigned int i; | 192 | unsigned int i; |
@@ -401,15 +384,13 @@ static int eps_cpu_init(struct cpufreq_policy *policy) | |||
401 | } | 384 | } |
402 | 385 | ||
403 | policy->cpuinfo.transition_latency = 140000; /* 844mV -> 700mV in ns */ | 386 | policy->cpuinfo.transition_latency = 140000; /* 844mV -> 700mV in ns */ |
404 | policy->cur = fsb * current_multiplier; | ||
405 | 387 | ||
406 | ret = cpufreq_frequency_table_cpuinfo(policy, ¢aur->freq_table[0]); | 388 | ret = cpufreq_table_validate_and_show(policy, ¢aur->freq_table[0]); |
407 | if (ret) { | 389 | if (ret) { |
408 | kfree(centaur); | 390 | kfree(centaur); |
409 | return ret; | 391 | return ret; |
410 | } | 392 | } |
411 | 393 | ||
412 | cpufreq_frequency_table_get_attr(¢aur->freq_table[0], policy->cpu); | ||
413 | return 0; | 394 | return 0; |
414 | } | 395 | } |
415 | 396 | ||
@@ -424,19 +405,14 @@ static int eps_cpu_exit(struct cpufreq_policy *policy) | |||
424 | return 0; | 405 | return 0; |
425 | } | 406 | } |
426 | 407 | ||
427 | static struct freq_attr *eps_attr[] = { | ||
428 | &cpufreq_freq_attr_scaling_available_freqs, | ||
429 | NULL, | ||
430 | }; | ||
431 | |||
432 | static struct cpufreq_driver eps_driver = { | 408 | static struct cpufreq_driver eps_driver = { |
433 | .verify = eps_verify, | 409 | .verify = cpufreq_generic_frequency_table_verify, |
434 | .target = eps_target, | 410 | .target_index = eps_target, |
435 | .init = eps_cpu_init, | 411 | .init = eps_cpu_init, |
436 | .exit = eps_cpu_exit, | 412 | .exit = eps_cpu_exit, |
437 | .get = eps_get, | 413 | .get = eps_get, |
438 | .name = "e_powersaver", | 414 | .name = "e_powersaver", |
439 | .attr = eps_attr, | 415 | .attr = cpufreq_generic_attr, |
440 | }; | 416 | }; |
441 | 417 | ||
442 | 418 | ||