aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/e_powersaver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpufreq/e_powersaver.c')
-rw-r--r--drivers/cpufreq/e_powersaver.c36
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
171static int eps_target(struct cpufreq_policy *policy, 171static 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
201static 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
207static int eps_cpu_init(struct cpufreq_policy *policy) 190static 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, &centaur->freq_table[0]); 388 ret = cpufreq_table_validate_and_show(policy, &centaur->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(&centaur->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
427static struct freq_attr *eps_attr[] = {
428 &cpufreq_freq_attr_scaling_available_freqs,
429 NULL,
430};
431
432static struct cpufreq_driver eps_driver = { 408static 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