summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/s3c2416-cpufreq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpufreq/s3c2416-cpufreq.c')
-rw-r--r--drivers/cpufreq/s3c2416-cpufreq.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/drivers/cpufreq/s3c2416-cpufreq.c b/drivers/cpufreq/s3c2416-cpufreq.c
index 22dcb81ef9d0..26a35d137157 100644
--- a/drivers/cpufreq/s3c2416-cpufreq.c
+++ b/drivers/cpufreq/s3c2416-cpufreq.c
@@ -87,16 +87,6 @@ static struct cpufreq_frequency_table s3c2450_freq_table[] = {
87 { 0, CPUFREQ_TABLE_END }, 87 { 0, CPUFREQ_TABLE_END },
88}; 88};
89 89
90static int s3c2416_cpufreq_verify_speed(struct cpufreq_policy *policy)
91{
92 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq;
93
94 if (policy->cpu != 0)
95 return -EINVAL;
96
97 return cpufreq_frequency_table_verify(policy, s3c_freq->freq_table);
98}
99
100static unsigned int s3c2416_cpufreq_get_speed(unsigned int cpu) 90static unsigned int s3c2416_cpufreq_get_speed(unsigned int cpu)
101{ 91{
102 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq; 92 struct s3c2416_data *s3c_freq = &s3c2416_cpufreq;
@@ -486,20 +476,14 @@ static int __init s3c2416_cpufreq_driver_init(struct cpufreq_policy *policy)
486 freq++; 476 freq++;
487 } 477 }
488 478
489 policy->cur = clk_get_rate(s3c_freq->armclk) / 1000;
490
491 /* Datasheet says PLL stabalisation time must be at least 300us, 479 /* Datasheet says PLL stabalisation time must be at least 300us,
492 * so but add some fudge. (reference in LOCKCON0 register description) 480 * so but add some fudge. (reference in LOCKCON0 register description)
493 */ 481 */
494 policy->cpuinfo.transition_latency = (500 * 1000) + 482 ret = cpufreq_generic_init(policy, s3c_freq->freq_table,
495 s3c_freq->regulator_latency; 483 (500 * 1000) + s3c_freq->regulator_latency);
496
497 ret = cpufreq_frequency_table_cpuinfo(policy, s3c_freq->freq_table);
498 if (ret) 484 if (ret)
499 goto err_freq_table; 485 goto err_freq_table;
500 486
501 cpufreq_frequency_table_get_attr(s3c_freq->freq_table, 0);
502
503 register_reboot_notifier(&s3c2416_cpufreq_reboot_notifier); 487 register_reboot_notifier(&s3c2416_cpufreq_reboot_notifier);
504 488
505 return 0; 489 return 0;
@@ -518,19 +502,14 @@ err_hclk:
518 return ret; 502 return ret;
519} 503}
520 504
521static struct freq_attr *s3c2416_cpufreq_attr[] = {
522 &cpufreq_freq_attr_scaling_available_freqs,
523 NULL,
524};
525
526static struct cpufreq_driver s3c2416_cpufreq_driver = { 505static struct cpufreq_driver s3c2416_cpufreq_driver = {
527 .flags = 0, 506 .flags = 0,
528 .verify = s3c2416_cpufreq_verify_speed, 507 .verify = cpufreq_generic_frequency_table_verify,
529 .target = s3c2416_cpufreq_set_target, 508 .target = s3c2416_cpufreq_set_target,
530 .get = s3c2416_cpufreq_get_speed, 509 .get = s3c2416_cpufreq_get_speed,
531 .init = s3c2416_cpufreq_driver_init, 510 .init = s3c2416_cpufreq_driver_init,
532 .name = "s3c2416", 511 .name = "s3c2416",
533 .attr = s3c2416_cpufreq_attr, 512 .attr = cpufreq_generic_attr,
534}; 513};
535 514
536static int __init s3c2416_cpufreq_init(void) 515static int __init s3c2416_cpufreq_init(void)