From: Viresh Kumar <viresh.kumar@linaro.org>
To: rjw@rjwysocki.net
Cc: linaro-kernel@lists.linaro.org, cpufreq@vger.kernel.org,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
nm@ti.com, swarren@wwwdotorg.org, kgene.kim@samsung.com,
jinchoi@broadcom.com, tianyu.lan@intel.com,
sebastian.capella@linaro.org, jhbird.choi@samsung.com,
Viresh Kumar <viresh.kumar@linaro.org>
Subject: [PATCH V5 7/7] cpufreq: Tegra: Use cpufreq_generic_suspend()
Date: Thu, 13 Feb 2014 12:20:22 +0530 [thread overview]
Message-ID: <5fde49355d4ea03dfdf2c6bdf7d63e8ef4af2166.1392273723.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1392273722.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1392273722.git.viresh.kumar@linaro.org>
Currently we have implemented PM notifiers to disable/enable ->target() routines
functionality during suspend/resume.
Now we have support present in cpufreq core, lets use it.
Tested-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
drivers/cpufreq/tegra-cpufreq.c | 46 +++++------------------------------------
1 file changed, 5 insertions(+), 41 deletions(-)
diff --git a/drivers/cpufreq/tegra-cpufreq.c b/drivers/cpufreq/tegra-cpufreq.c
index e652c1b..bcfed77 100644
--- a/drivers/cpufreq/tegra-cpufreq.c
+++ b/drivers/cpufreq/tegra-cpufreq.c
@@ -26,7 +26,6 @@
#include <linux/err.h>
#include <linux/clk.h>
#include <linux/io.h>
-#include <linux/suspend.h>
static struct cpufreq_frequency_table freq_table[] = {
{ .frequency = 216000 },
@@ -47,9 +46,6 @@ static struct clk *pll_x_clk;
static struct clk *pll_p_clk;
static struct clk *emc_clk;
-static DEFINE_MUTEX(tegra_cpu_lock);
-static bool is_suspended;
-
static int tegra_cpu_clk_set_rate(unsigned long rate)
{
int ret;
@@ -112,42 +108,9 @@ static int tegra_update_cpu_speed(struct cpufreq_policy *policy,
static int tegra_target(struct cpufreq_policy *policy, unsigned int index)
{
- int ret = -EBUSY;
-
- mutex_lock(&tegra_cpu_lock);
-
- if (!is_suspended)
- ret = tegra_update_cpu_speed(policy,
- freq_table[index].frequency);
-
- mutex_unlock(&tegra_cpu_lock);
- return ret;
+ return tegra_update_cpu_speed(policy, freq_table[index].frequency);
}
-static int tegra_pm_notify(struct notifier_block *nb, unsigned long event,
- void *dummy)
-{
- mutex_lock(&tegra_cpu_lock);
- if (event == PM_SUSPEND_PREPARE) {
- struct cpufreq_policy *policy = cpufreq_cpu_get(0);
- is_suspended = true;
- pr_info("Tegra cpufreq suspend: setting frequency to %d kHz\n",
- freq_table[0].frequency);
- if (clk_get_rate(cpu_clk) / 1000 != freq_table[0].frequency)
- tegra_update_cpu_speed(policy, freq_table[0].frequency);
- cpufreq_cpu_put(policy);
- } else if (event == PM_POST_SUSPEND) {
- is_suspended = false;
- }
- mutex_unlock(&tegra_cpu_lock);
-
- return NOTIFY_OK;
-}
-
-static struct notifier_block tegra_cpu_pm_notifier = {
- .notifier_call = tegra_pm_notify,
-};
-
static int tegra_cpu_init(struct cpufreq_policy *policy)
{
int ret;
@@ -166,10 +129,8 @@ static int tegra_cpu_init(struct cpufreq_policy *policy)
return ret;
}
- if (policy->cpu == 0)
- register_pm_notifier(&tegra_cpu_pm_notifier);
-
policy->clk = cpu_clk;
+ policy->suspend_freq = freq_table[0].frequency;
return 0;
}
@@ -190,6 +151,9 @@ static struct cpufreq_driver tegra_cpufreq_driver = {
.exit = tegra_cpu_exit,
.name = "tegra",
.attr = cpufreq_generic_attr,
+#ifdef CONFIG_PM
+ .suspend = cpufreq_generic_suspend,
+#endif
};
static int __init tegra_cpufreq_init(void)
--
1.7.12.rc2.18.g61b472e
next prev parent reply other threads:[~2014-02-13 6:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-13 6:50 [PATCH V5 0/7] cpufreq: suspend early/resume late: dpm_{suspend|resume}() Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 1/7] cpufreq: suspend governors on system suspend/hibernate Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 2/7] cpufreq: suspend governors from dpm_{suspend|resume}() Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 3/7] cpufreq: call driver's suspend/resume for each policy Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 4/7] cpufreq: Implement cpufreq_generic_suspend() Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 5/7] cpufreq: exynos: Use cpufreq_generic_suspend() Viresh Kumar
2014-02-13 6:50 ` [PATCH V5 6/7] cpufreq: s5pv210: " Viresh Kumar
2014-02-13 6:50 ` Viresh Kumar [this message]
2014-02-14 19:42 ` [PATCH V5 0/7] cpufreq: suspend early/resume late: dpm_{suspend|resume}() Stephen Warren
2014-02-14 20:22 ` Stephen Warren
2014-02-17 6:02 ` Viresh Kumar
2014-02-18 20:31 ` Stephen Warren
2014-02-14 22:23 ` Rafael J. Wysocki
2014-02-15 0:03 ` Stephen Warren
2014-02-17 9:20 ` Viresh Kumar
2014-02-18 20:18 ` Stephen Warren
2014-02-19 4:15 ` Viresh Kumar
2014-02-19 17:26 ` Stephen Warren
2014-02-20 1:49 ` Linaro
2014-02-20 1:50 ` Linaro
2014-02-20 17:40 ` Stephen Warren
2014-02-24 6:43 ` Viresh Kumar
2014-02-24 17:17 ` Stephen Warren
2014-02-17 6:08 ` Viresh Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5fde49355d4ea03dfdf2c6bdf7d63e8ef4af2166.1392273723.git.viresh.kumar@linaro.org \
--to=viresh.kumar@linaro.org \
--cc=cpufreq@vger.kernel.org \
--cc=jhbird.choi@samsung.com \
--cc=jinchoi@broadcom.com \
--cc=kgene.kim@samsung.com \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=nm@ti.com \
--cc=rjw@rjwysocki.net \
--cc=sebastian.capella@linaro.org \
--cc=swarren@wwwdotorg.org \
--cc=tianyu.lan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).