drm/i915: use linux/stddef.h due to "isystem: trim/fixup stdarg.h and other headers"
[linux-2.6-microblaze.git] / drivers / cpufreq / cpufreq.c
index cbab834..45f3416 100644 (file)
@@ -524,6 +524,22 @@ void cpufreq_disable_fast_switch(struct cpufreq_policy *policy)
 }
 EXPORT_SYMBOL_GPL(cpufreq_disable_fast_switch);
 
+static unsigned int __resolve_freq(struct cpufreq_policy *policy,
+               unsigned int target_freq, unsigned int relation)
+{
+       unsigned int idx;
+
+       target_freq = clamp_val(target_freq, policy->min, policy->max);
+
+       if (!cpufreq_driver->target_index)
+               return target_freq;
+
+       idx = cpufreq_frequency_table_target(policy, target_freq, relation);
+       policy->cached_resolved_idx = idx;
+       policy->cached_target_freq = target_freq;
+       return policy->freq_table[idx].frequency;
+}
+
 /**
  * cpufreq_driver_resolve_freq - Map a target frequency to a driver-supported
  * one.
@@ -538,22 +554,7 @@ EXPORT_SYMBOL_GPL(cpufreq_disable_fast_switch);
 unsigned int cpufreq_driver_resolve_freq(struct cpufreq_policy *policy,
                                         unsigned int target_freq)
 {
-       target_freq = clamp_val(target_freq, policy->min, policy->max);
-       policy->cached_target_freq = target_freq;
-
-       if (cpufreq_driver->target_index) {
-               unsigned int idx;
-
-               idx = cpufreq_frequency_table_target(policy, target_freq,
-                                                    CPUFREQ_RELATION_L);
-               policy->cached_resolved_idx = idx;
-               return policy->freq_table[idx].frequency;
-       }
-
-       if (cpufreq_driver->resolve_freq)
-               return cpufreq_driver->resolve_freq(policy, target_freq);
-
-       return target_freq;
+       return __resolve_freq(policy, target_freq, CPUFREQ_RELATION_L);
 }
 EXPORT_SYMBOL_GPL(cpufreq_driver_resolve_freq);
 
@@ -1606,9 +1607,6 @@ static int cpufreq_offline(unsigned int cpu)
                policy->cdev = NULL;
        }
 
-       if (cpufreq_driver->stop_cpu)
-               cpufreq_driver->stop_cpu(policy);
-
        if (has_target())
                cpufreq_exit_governor(policy);
 
@@ -2234,13 +2232,11 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
                            unsigned int relation)
 {
        unsigned int old_target_freq = target_freq;
-       int index;
 
        if (cpufreq_disabled())
                return -ENODEV;
 
-       /* Make sure that target_freq is within supported range */
-       target_freq = clamp_val(target_freq, policy->min, policy->max);
+       target_freq = __resolve_freq(policy, target_freq, relation);
 
        pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
                 policy->cpu, target_freq, relation, old_target_freq);
@@ -2261,9 +2257,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
        if (!cpufreq_driver->target_index)
                return -EINVAL;
 
-       index = cpufreq_frequency_table_target(policy, target_freq, relation);
-
-       return __target_index(policy, index);
+       return __target_index(policy, policy->cached_resolved_idx);
 }
 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);