mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: rjw@sisk.pl
Cc: linaro-kernel@lists.linaro.org, patches@linaro.org,
	cpufreq@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Viresh Kumar <viresh.kumar@linaro.org>,
	Kukjin Kim <kgene.kim@samsung.com>
Subject: [PATCH V2 Resend 28/34] cpufreq: s5pv210: Convert to light weight ->target_index() routine
Date: Fri, 18 Oct 2013 19:29:51 +0530	[thread overview]
Message-ID: <3f53bd310bfa52945a4eaa2ecad7c6c1923d3996.1382104515.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1382104514.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1382104514.git.viresh.kumar@linaro.org>

This patch converts existing .target() to newly defined light weight
.target_index() routine for this driver.

CPUFreq core will call cpufreq_frequency_table_target() before calling this
routine and will pass index to it.

This drivers wasn't as straight forward as other ones. It was doing some funny
stuff to disable driver while going into suspend mode. This part is simplified
as well to get this converted to ->target_index().

Cc: Kukjin Kim <kgene.kim@samsung.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/cpufreq/s5pv210-cpufreq.c | 54 ++++++++++-----------------------------
 1 file changed, 14 insertions(+), 40 deletions(-)

diff --git a/drivers/cpufreq/s5pv210-cpufreq.c b/drivers/cpufreq/s5pv210-cpufreq.c
index 600b4f4..5978b94 100644
--- a/drivers/cpufreq/s5pv210-cpufreq.c
+++ b/drivers/cpufreq/s5pv210-cpufreq.c
@@ -36,16 +36,7 @@ static DEFINE_MUTEX(set_freq_lock);
 /* Use 800MHz when entering sleep mode */
 #define SLEEP_FREQ	(800 * 1000)
 
-/*
- * relation has an additional symantics other than the standard of cpufreq
- * DISALBE_FURTHER_CPUFREQ: disable further access to target
- * ENABLE_FURTUER_CPUFREQ: enable access to target
- */
-enum cpufreq_access {
-	DISABLE_FURTHER_CPUFREQ = 0x10,
-	ENABLE_FURTHER_CPUFREQ = 0x20,
-};
-
+/* Tracks if cpu freqency can be updated anymore */
 static bool no_cpufreq_access;
 
 /*
@@ -182,12 +173,10 @@ static unsigned int s5pv210_getspeed(unsigned int cpu)
 	return clk_get_rate(cpu_clk) / 1000;
 }
 
-static int s5pv210_target(struct cpufreq_policy *policy,
-			  unsigned int target_freq,
-			  unsigned int relation)
+static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
 {
 	unsigned long reg;
-	unsigned int index, priv_index;
+	unsigned int priv_index;
 	unsigned int pll_changing = 0;
 	unsigned int bus_speed_changing = 0;
 	int arm_volt, int_volt;
@@ -195,9 +184,6 @@ static int s5pv210_target(struct cpufreq_policy *policy,
 
 	mutex_lock(&set_freq_lock);
 
-	if (relation & ENABLE_FURTHER_CPUFREQ)
-		no_cpufreq_access = false;
-
 	if (no_cpufreq_access) {
 #ifdef CONFIG_PM_VERBOSE
 		pr_err("%s:%d denied access to %s as it is disabled"
@@ -207,27 +193,13 @@ static int s5pv210_target(struct cpufreq_policy *policy,
 		goto exit;
 	}
 
-	if (relation & DISABLE_FURTHER_CPUFREQ)
-		no_cpufreq_access = true;
-
-	relation &= ~(ENABLE_FURTHER_CPUFREQ | DISABLE_FURTHER_CPUFREQ);
-
 	freqs.old = s5pv210_getspeed(0);
-
-	if (cpufreq_frequency_table_target(policy, s5pv210_freq_table,
-					   target_freq, relation, &index)) {
-		ret = -EINVAL;
-		goto exit;
-	}
-
 	freqs.new = s5pv210_freq_table[index].frequency;
 
-	if (freqs.new == freqs.old)
-		goto exit;
-
 	/* Finding current running level index */
 	if (cpufreq_frequency_table_target(policy, s5pv210_freq_table,
-					   freqs.old, relation, &priv_index)) {
+					   freqs.old, CPUFREQ_RELATION_H,
+					   &priv_index)) {
 		ret = -EINVAL;
 		goto exit;
 	}
@@ -559,16 +531,18 @@ static int s5pv210_cpufreq_notifier_event(struct notifier_block *this,
 
 	switch (event) {
 	case PM_SUSPEND_PREPARE:
-		ret = cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ,
-					    DISABLE_FURTHER_CPUFREQ);
+		ret = cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ, 0);
 		if (ret < 0)
 			return NOTIFY_BAD;
 
+		/* Disable updation of cpu frequency */
+		no_cpufreq_access = true;
 		return NOTIFY_OK;
 	case PM_POST_RESTORE:
 	case PM_POST_SUSPEND:
-		cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ,
-				      ENABLE_FURTHER_CPUFREQ);
+		/* Enable updation of cpu frequency */
+		no_cpufreq_access = false;
+		cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ, 0);
 
 		return NOTIFY_OK;
 	}
@@ -581,18 +555,18 @@ static int s5pv210_cpufreq_reboot_notifier_event(struct notifier_block *this,
 {
 	int ret;
 
-	ret = cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ,
-				    DISABLE_FURTHER_CPUFREQ);
+	ret = cpufreq_driver_target(cpufreq_cpu_get(0), SLEEP_FREQ, 0);
 	if (ret < 0)
 		return NOTIFY_BAD;
 
+	no_cpufreq_access = true;
 	return NOTIFY_DONE;
 }
 
 static struct cpufreq_driver s5pv210_driver = {
 	.flags		= CPUFREQ_STICKY,
 	.verify		= cpufreq_generic_frequency_table_verify,
-	.target		= s5pv210_target,
+	.target_index	= s5pv210_target,
 	.get		= s5pv210_getspeed,
 	.init		= s5pv210_cpu_init,
 	.name		= "s5pv210",
-- 
1.7.12.rc2.18.g61b472e


  parent reply	other threads:[~2013-10-18 14:03 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-18 13:59 [PATCH V2 Resend 00/34] CPUFreq Cleanup Part III Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 01/34] cpufreq: Implement light weight ->target_index() routine Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 02/34] cpufreq: acpi: Convert to " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 03/34] cpufreq: arm_big_little: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 04/34] cpufreq: at32ap: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 05/34] cpufreq: blackfin: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 06/34] cpufreq: cpu0: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 07/34] cpufreq: cris: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 08/34] cpufreq: davinci: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 09/34] cpufreq: dbx500: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 10/34] cpufreq: e_powersaver: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 11/34] cpufreq: elanfreq: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 12/34] cpufreq: exynos: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 13/34] cpufreq: ia64: " Viresh Kumar
2013-10-22 16:32   ` Luck, Tony
2013-10-18 13:59 ` [PATCH V2 Resend 14/34] cpufreq: imx6q: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 15/34] cpufreq: kirkwood: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 16/34] cpufreq: longhaul: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 17/34] cpufreq: loongson2: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 18/34] cpufreq: maple: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 19/34] cpufreq: omap: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 20/34] cpufreq: p4: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 21/34] cpufreq: pasemi: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 22/34] cpufreq: pmac32: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 23/34] cpufreq: powernow: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 24/34] cpufreq: ppc: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 25/34] cpufreq: pxa: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 26/34] cpufreq: s3c2416: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 27/34] cpufreq: s3c64xx: " Viresh Kumar
2013-10-18 13:59 ` Viresh Kumar [this message]
2013-10-18 13:59 ` [PATCH V2 Resend 29/34] cpufreq: sa11x0: " Viresh Kumar
2013-10-18 15:46   ` Russell King - ARM Linux
2013-10-21  9:23     ` Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 30/34] cpufreq: sc520: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 31/34] cpufreq: sparc: " Viresh Kumar
2013-10-18 17:30   ` David Miller
2013-10-18 13:59 ` [PATCH V2 Resend 32/34] cpufreq: SPEAr: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 33/34] cpufreq: speedstep: " Viresh Kumar
2013-10-18 13:59 ` [PATCH V2 Resend 34/34] cpufreq: tegra: " Viresh Kumar
2013-10-25 12:56 ` [PATCH V2 Resend 00/34] CPUFreq Cleanup Part III Rafael J. Wysocki
2013-10-25 13:55   ` Viresh Kumar
2013-10-25 14:12     ` Rafael J. Wysocki
2013-10-25 14:16       ` 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=3f53bd310bfa52945a4eaa2ecad7c6c1923d3996.1382104515.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=cpufreq@vger.kernel.org \
    --cc=kgene.kim@samsung.com \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=patches@linaro.org \
    --cc=rjw@sisk.pl \
    /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

all inboxes | Powered by JetHome®