diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2014-03-03 22:00:27 -0500 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2014-03-06 09:04:12 -0500 |
commit | e28867eab7c0a60cddf0cb59f9f6cbbd9561425d (patch) | |
tree | 1391897d0eefb9464ec762538f8f7307079192f1 /drivers/cpufreq | |
parent | 2f0aea9363609433b38ab13f0f86f38372668c68 (diff) |
cpufreq: Implement cpufreq_generic_suspend()
Multiple platforms need to set CPUs to a particular frequency before
suspending the system, so provide a common infrastructure for them.
Those platforms only need to point their ->suspend callback pointers
to the generic routine.
Tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
[rjw: Changelog]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 289a407a9207..61dd72b8c143 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1567,6 +1567,32 @@ static struct subsys_interface cpufreq_interface = { | |||
1567 | .remove_dev = cpufreq_remove_dev, | 1567 | .remove_dev = cpufreq_remove_dev, |
1568 | }; | 1568 | }; |
1569 | 1569 | ||
1570 | /* | ||
1571 | * In case platform wants some specific frequency to be configured | ||
1572 | * during suspend.. | ||
1573 | */ | ||
1574 | int cpufreq_generic_suspend(struct cpufreq_policy *policy) | ||
1575 | { | ||
1576 | int ret; | ||
1577 | |||
1578 | if (!policy->suspend_freq) { | ||
1579 | pr_err("%s: suspend_freq can't be zero\n", __func__); | ||
1580 | return -EINVAL; | ||
1581 | } | ||
1582 | |||
1583 | pr_debug("%s: Setting suspend-freq: %u\n", __func__, | ||
1584 | policy->suspend_freq); | ||
1585 | |||
1586 | ret = __cpufreq_driver_target(policy, policy->suspend_freq, | ||
1587 | CPUFREQ_RELATION_H); | ||
1588 | if (ret) | ||
1589 | pr_err("%s: unable to set suspend-freq: %u. err: %d\n", | ||
1590 | __func__, policy->suspend_freq, ret); | ||
1591 | |||
1592 | return ret; | ||
1593 | } | ||
1594 | EXPORT_SYMBOL(cpufreq_generic_suspend); | ||
1595 | |||
1570 | /** | 1596 | /** |
1571 | * cpufreq_suspend() - Suspend CPUFreq governors | 1597 | * cpufreq_suspend() - Suspend CPUFreq governors |
1572 | * | 1598 | * |