]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/cpufreq/speedstep-centrino.c
cpufreq: Implement light weight ->target_index() routine
[mirror_ubuntu-bionic-kernel.git] / drivers / cpufreq / speedstep-centrino.c
index 25e45f89acac1b550c227c969e9fe9ebf659b077..c51ec8c0e3a8c8cd6d695ef4c596a03d50214b5b 100644 (file)
@@ -416,21 +416,17 @@ static int centrino_cpu_exit(struct cpufreq_policy *policy)
 /**
  * centrino_setpolicy - set a new CPUFreq policy
  * @policy: new policy
- * @target_freq: the target frequency
- * @relation: how that frequency relates to achieved frequency
- *     (CPUFREQ_RELATION_L or CPUFREQ_RELATION_H)
+ * @index: index of target frequency
  *
  * Sets a new CPUFreq policy.
  */
-static int centrino_target (struct cpufreq_policy *policy,
-                           unsigned int target_freq,
-                           unsigned int relation)
+static int centrino_target(struct cpufreq_policy *policy, unsigned int index)
 {
-       unsigned int    newstate = 0;
        unsigned int    msr, oldmsr = 0, h = 0, cpu = policy->cpu;
        struct cpufreq_freqs    freqs;
        int                     retval = 0;
        unsigned int            j, first_cpu, tmp;
+       struct cpufreq_frequency_table *op_points;
        cpumask_var_t covered_cpus;
 
        if (unlikely(!zalloc_cpumask_var(&covered_cpus, GFP_KERNEL)))
@@ -441,16 +437,8 @@ static int centrino_target (struct cpufreq_policy *policy,
                goto out;
        }
 
-       if (unlikely(cpufreq_frequency_table_target(policy,
-                       per_cpu(centrino_model, cpu)->op_points,
-                       target_freq,
-                       relation,
-                       &newstate))) {
-               retval = -EINVAL;
-               goto out;
-       }
-
        first_cpu = 1;
+       op_points = &per_cpu(centrino_model, cpu)->op_points[index];
        for_each_cpu(j, policy->cpus) {
                int good_cpu;
 
@@ -474,7 +462,7 @@ static int centrino_target (struct cpufreq_policy *policy,
                        break;
                }
 
-               msr = per_cpu(centrino_model, cpu)->op_points[newstate].driver_data;
+               msr = op_points->driver_data;
 
                if (first_cpu) {
                        rdmsr_on_cpu(good_cpu, MSR_IA32_PERF_CTL, &oldmsr, &h);
@@ -489,7 +477,8 @@ static int centrino_target (struct cpufreq_policy *policy,
                        freqs.new = extract_clock(msr, cpu, 0);
 
                        pr_debug("target=%dkHz old=%d new=%d msr=%04x\n",
-                               target_freq, freqs.old, freqs.new, msr);
+                               op_points->frequency, freqs.old, freqs.new,
+                               msr);
 
                        cpufreq_notify_transition(policy, &freqs,
                                        CPUFREQ_PRECHANGE);
@@ -540,7 +529,7 @@ static struct cpufreq_driver centrino_driver = {
        .init           = centrino_cpu_init,
        .exit           = centrino_cpu_exit,
        .verify         = cpufreq_generic_frequency_table_verify,
-       .target         = centrino_target,
+       .target_index   = centrino_target,
        .get            = get_cur_freq,
        .attr           = cpufreq_generic_attr,
 };