Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d65775d authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki
Browse files

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: default avatarStephen Warren <swarren@nvidia.com>
Reviewed-by: default avatarDoug Anderson <dianders@chromium.org>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 1ef546f2
Loading
Loading
Loading
Loading
+33 −23
Original line number Diff line number Diff line
@@ -1816,12 +1816,43 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
 *                              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,
			    unsigned int target_freq,
			    unsigned int relation)
{
	int retval = -EINVAL;
	unsigned int old_target_freq = target_freq;
	int retval = -EINVAL;

	if (cpufreq_disabled())
		return -ENODEV;
@@ -1848,8 +1879,6 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
		retval = cpufreq_driver->target(policy, target_freq, relation);
	else if (cpufreq_driver->target_index) {
		struct cpufreq_frequency_table *freq_table;
		struct cpufreq_freqs freqs;
		bool notify;
		int index;

		freq_table = cpufreq_frequency_get_table(policy->cpu);
@@ -1870,26 +1899,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
			goto out;
		}

		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);
		retval = __target_index(policy, freq_table, index);
	}

out: