Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next
[cascardo/linux.git] / drivers / cpufreq / sparc-us3-cpufreq.c
index ac76b48..724ffbd 100644 (file)
@@ -93,13 +93,11 @@ static unsigned int us3_freq_get(unsigned int cpu)
        return ret;
 }
 
-static void us3_set_cpu_divider_index(struct cpufreq_policy *policy,
-               unsigned int index)
+static int us3_freq_target(struct cpufreq_policy *policy, unsigned int index)
 {
        unsigned int cpu = policy->cpu;
        unsigned long new_bits, new_freq, reg;
        cpumask_t cpus_allowed;
-       struct cpufreq_freqs freqs;
 
        cpumask_copy(&cpus_allowed, tsk_cpus_allowed(current));
        set_cpus_allowed_ptr(current, cpumask_of(cpu));
@@ -125,43 +123,15 @@ static void us3_set_cpu_divider_index(struct cpufreq_policy *policy,
 
        reg = read_safari_cfg();
 
-       freqs.old = get_current_freq(cpu, reg);
-       freqs.new = new_freq;
-       cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
-
        reg &= ~SAFARI_CFG_DIV_MASK;
        reg |= new_bits;
        write_safari_cfg(reg);
 
-       cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
-
        set_cpus_allowed_ptr(current, &cpus_allowed);
-}
-
-static int us3_freq_target(struct cpufreq_policy *policy,
-                         unsigned int target_freq,
-                         unsigned int relation)
-{
-       unsigned int new_index = 0;
-
-       if (cpufreq_frequency_table_target(policy,
-                                          &us3_freq_table[policy->cpu].table[0],
-                                          target_freq,
-                                          relation,
-                                          &new_index))
-               return -EINVAL;
-
-       us3_set_cpu_divider_index(policy, new_index);
 
        return 0;
 }
 
-static int us3_freq_verify(struct cpufreq_policy *policy)
-{
-       return cpufreq_frequency_table_verify(policy,
-                                             &us3_freq_table[policy->cpu].table[0]);
-}
-
 static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
 {
        unsigned int cpu = policy->cpu;
@@ -181,13 +151,15 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy)
        policy->cpuinfo.transition_latency = 0;
        policy->cur = clock_tick;
 
-       return cpufreq_frequency_table_cpuinfo(policy, table);
+       return cpufreq_table_validate_and_show(policy, table);
 }
 
 static int us3_freq_cpu_exit(struct cpufreq_policy *policy)
 {
-       if (cpufreq_us3_driver)
-               us3_set_cpu_divider_index(policy, 0);
+       if (cpufreq_us3_driver) {
+               cpufreq_frequency_table_put_attr(policy->cpu);
+               us3_freq_target(policy, 0);
+       }
 
        return 0;
 }
@@ -222,8 +194,8 @@ static int __init us3_freq_init(void)
                        goto err_out;
 
                driver->init = us3_freq_cpu_init;
-               driver->verify = us3_freq_verify;
-               driver->target = us3_freq_target;
+               driver->verify = cpufreq_generic_frequency_table_verify;
+               driver->target_index = us3_freq_target;
                driver->get = us3_freq_get;
                driver->exit = us3_freq_cpu_exit;
                strcpy(driver->name, "UltraSPARC-III");