cpufreq: handle calls to ->target_index() in separate routine
Handling calls to ->target_index() has got complex over time and might become more complex. So, its better to take target_index() bits out in another routine __target_index() for better code readability. Shouldn't have any functional impact. Tested-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Doug Anderson <dianders@chromium.org> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
1ef546f22f
commit
8d65775d17
1 changed files with 33 additions and 23 deletions
|
@ -1816,12 +1816,43 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
|
||||||
* GOVERNORS *
|
* GOVERNORS *
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
|
|
||||||
|
static int __target_index(struct cpufreq_policy *policy,
|
||||||
|
struct cpufreq_frequency_table *freq_table, int index)
|
||||||
|
{
|
||||||
|
struct cpufreq_freqs freqs;
|
||||||
|
int retval = -EINVAL;
|
||||||
|
bool notify;
|
||||||
|
|
||||||
|
notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
|
||||||
|
|
||||||
|
if (notify) {
|
||||||
|
freqs.old = policy->cur;
|
||||||
|
freqs.new = freq_table[index].frequency;
|
||||||
|
freqs.flags = 0;
|
||||||
|
|
||||||
|
pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
|
||||||
|
__func__, policy->cpu, freqs.old, freqs.new);
|
||||||
|
|
||||||
|
cpufreq_freq_transition_begin(policy, &freqs);
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = cpufreq_driver->target_index(policy, index);
|
||||||
|
if (retval)
|
||||||
|
pr_err("%s: Failed to change cpu frequency: %d\n", __func__,
|
||||||
|
retval);
|
||||||
|
|
||||||
|
if (notify)
|
||||||
|
cpufreq_freq_transition_end(policy, &freqs, retval);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
unsigned int target_freq,
|
unsigned int target_freq,
|
||||||
unsigned int relation)
|
unsigned int relation)
|
||||||
{
|
{
|
||||||
int retval = -EINVAL;
|
|
||||||
unsigned int old_target_freq = target_freq;
|
unsigned int old_target_freq = target_freq;
|
||||||
|
int retval = -EINVAL;
|
||||||
|
|
||||||
if (cpufreq_disabled())
|
if (cpufreq_disabled())
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -1848,8 +1879,6 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
retval = cpufreq_driver->target(policy, target_freq, relation);
|
retval = cpufreq_driver->target(policy, target_freq, relation);
|
||||||
else if (cpufreq_driver->target_index) {
|
else if (cpufreq_driver->target_index) {
|
||||||
struct cpufreq_frequency_table *freq_table;
|
struct cpufreq_frequency_table *freq_table;
|
||||||
struct cpufreq_freqs freqs;
|
|
||||||
bool notify;
|
|
||||||
int index;
|
int index;
|
||||||
|
|
||||||
freq_table = cpufreq_frequency_get_table(policy->cpu);
|
freq_table = cpufreq_frequency_get_table(policy->cpu);
|
||||||
|
@ -1870,26 +1899,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
|
retval = __target_index(policy, freq_table, index);
|
||||||
|
|
||||||
if (notify) {
|
|
||||||
freqs.old = policy->cur;
|
|
||||||
freqs.new = freq_table[index].frequency;
|
|
||||||
freqs.flags = 0;
|
|
||||||
|
|
||||||
pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
|
|
||||||
__func__, policy->cpu, freqs.old, freqs.new);
|
|
||||||
|
|
||||||
cpufreq_freq_transition_begin(policy, &freqs);
|
|
||||||
}
|
|
||||||
|
|
||||||
retval = cpufreq_driver->target_index(policy, index);
|
|
||||||
if (retval)
|
|
||||||
pr_err("%s: Failed to change cpu frequency: %d\n",
|
|
||||||
__func__, retval);
|
|
||||||
|
|
||||||
if (notify)
|
|
||||||
cpufreq_freq_transition_end(policy, &freqs, retval);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
|
Loading…
Add table
Reference in a new issue