cpufreq: Implement light weight ->target_index() routine
[linux-drm-fsl-dcu.git] / drivers / cpufreq / cpufreq-cpu0.c
index 33ab6504c4478ae344395a746cddde0341ca2c52..4dbe7efd86e5ca0be3595fa89eb8dea6c4ed0f35 100644 (file)
@@ -35,24 +35,14 @@ static unsigned int cpu0_get_speed(unsigned int cpu)
        return clk_get_rate(cpu_clk) / 1000;
 }
 
-static int cpu0_set_target(struct cpufreq_policy *policy,
-                          unsigned int target_freq, unsigned int relation)
+static int cpu0_set_target(struct cpufreq_policy *policy, unsigned int index)
 {
        struct cpufreq_freqs freqs;
        struct dev_pm_opp *opp;
        unsigned long volt = 0, volt_old = 0, tol = 0;
        long freq_Hz, freq_exact;
-       unsigned int index;
        int ret;
 
-       ret = cpufreq_frequency_table_target(policy, freq_table, target_freq,
-                                            relation, &index);
-       if (ret) {
-               pr_err("failed to match target freqency %d: %d\n",
-                      target_freq, ret);
-               return ret;
-       }
-
        freq_Hz = clk_round_rate(cpu_clk, freq_table[index].frequency * 1000);
        if (freq_Hz < 0)
                freq_Hz = freq_table[index].frequency * 1000;
@@ -60,9 +50,6 @@ static int cpu0_set_target(struct cpufreq_policy *policy,
        freqs.new = freq_Hz / 1000;
        freqs.old = clk_get_rate(cpu_clk) / 1000;
 
-       if (freqs.old == freqs.new)
-               return 0;
-
        cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
 
        if (!IS_ERR(cpu_reg)) {
@@ -128,7 +115,7 @@ static int cpu0_cpufreq_init(struct cpufreq_policy *policy)
 static struct cpufreq_driver cpu0_cpufreq_driver = {
        .flags = CPUFREQ_STICKY,
        .verify = cpufreq_generic_frequency_table_verify,
-       .target = cpu0_set_target,
+       .target_index = cpu0_set_target,
        .get = cpu0_get_speed,
        .init = cpu0_cpufreq_init,
        .exit = cpufreq_generic_exit,