All of lore.kernel.org
 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,
	linux-arm-kernel@lists.infradead.org,
	Viresh Kumar <viresh.kumar@linaro.org>
Subject: [PATCH 23/34] cpufreq: pmac: remove calls to cpufreq_notify_transition()
Date: Fri, 16 Aug 2013 07:55:20 +0530	[thread overview]
Message-ID: <673811dacec594f14dd42197450f4a5b62e9b20c.1376619363.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1376619363.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1376619363.git.viresh.kumar@linaro.org>

Most of the drivers do following in their ->target_index() routines:

	struct cpufreq_freqs freqs;
	freqs.old = old freq...
	freqs.new = new freq...

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);

	/* Change rate here */

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

This is replicated over all cpufreq drivers today and there doesn't exists a
good enough reason why this shouldn't be moved to cpufreq core instead.

Earlier patches have added support in cpufreq core to do cpufreq notification on
frequency change, this one removes it from this driver.

Some related minor cleanups are also done along with it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/cpufreq/pmac32-cpufreq.c | 20 ++++----------------
 drivers/cpufreq/pmac64-cpufreq.c | 18 +-----------------
 2 files changed, 5 insertions(+), 33 deletions(-)

diff --git a/drivers/cpufreq/pmac32-cpufreq.c b/drivers/cpufreq/pmac32-cpufreq.c
index 47c227c..c8f5d2c 100644
--- a/drivers/cpufreq/pmac32-cpufreq.c
+++ b/drivers/cpufreq/pmac32-cpufreq.c
@@ -330,21 +330,11 @@ static int pmu_set_cpu_speed(int low_speed)
 	return 0;
 }
 
-static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode,
-		int notify)
+static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode)
 {
-	struct cpufreq_freqs freqs;
 	unsigned long l3cr;
 	static unsigned long prev_l3cr;
 
-	freqs.old = cur_freq;
-	freqs.new = (speed_mode == CPUFREQ_HIGH) ? hi_freq : low_freq;
-
-	if (freqs.old == freqs.new)
-		return 0;
-
-	if (notify)
-		cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
 	if (speed_mode == CPUFREQ_LOW &&
 	    cpu_has_feature(CPU_FTR_L3CR)) {
 		l3cr = _get_L3CR();
@@ -360,8 +350,6 @@ static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode,
 		if ((prev_l3cr & L3CR_L3E) && l3cr != prev_l3cr)
 			_set_L3CR(prev_l3cr);
 	}
-	if (notify)
-		cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
 	cur_freq = (speed_mode == CPUFREQ_HIGH) ? hi_freq : low_freq;
 
 	return 0;
@@ -377,7 +365,7 @@ static int pmac_cpufreq_target(	struct cpufreq_policy *policy,
 {
 	int		rc;
 
-	rc = do_set_cpu_speed(policy, index, 1);
+	rc = do_set_cpu_speed(policy, index);
 
 	ppc_proc_freq = cur_freq * 1000ul;
 	return rc;
@@ -424,7 +412,7 @@ static int pmac_cpufreq_suspend(struct cpufreq_policy *policy)
 	no_schedule = 1;
 	sleep_freq = cur_freq;
 	if (cur_freq == low_freq && !is_pmu_based)
-		do_set_cpu_speed(policy, CPUFREQ_HIGH, 0);
+		do_set_cpu_speed(policy, CPUFREQ_HIGH);
 	return 0;
 }
 
@@ -441,7 +429,7 @@ static int pmac_cpufreq_resume(struct cpufreq_policy *policy)
 	 * probably high speed due to our suspend() routine
 	 */
 	do_set_cpu_speed(policy, sleep_freq == low_freq ?
-			 CPUFREQ_LOW : CPUFREQ_HIGH, 0);
+			 CPUFREQ_LOW : CPUFREQ_HIGH);
 
 	ppc_proc_freq = cur_freq * 1000ul;
 
diff --git a/drivers/cpufreq/pmac64-cpufreq.c b/drivers/cpufreq/pmac64-cpufreq.c
index 63f9642..2557f16 100644
--- a/drivers/cpufreq/pmac64-cpufreq.c
+++ b/drivers/cpufreq/pmac64-cpufreq.c
@@ -78,8 +78,6 @@ static void (*g5_switch_volt)(int speed_mode);
 static int (*g5_switch_freq)(int speed_mode);
 static int (*g5_query_freq)(void);
 
-static DEFINE_MUTEX(g5_switch_mutex);
-
 static unsigned long transition_latency;
 
 #ifdef CONFIG_PMAC_SMU
@@ -313,21 +311,7 @@ static int g5_pfunc_query_freq(void)
 
 static int g5_cpufreq_target(struct cpufreq_policy *policy, unsigned int index)
 {
-	struct cpufreq_freqs freqs;
-	int rc;
-
-	mutex_lock(&g5_switch_mutex);
-
-	freqs.old = g5_cpu_freqs[g5_pmode_cur].frequency;
-	freqs.new = g5_cpu_freqs[index].frequency;
-
-	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
-	rc = g5_switch_freq(index);
-	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
-
-	mutex_unlock(&g5_switch_mutex);
-
-	return rc;
+	return g5_switch_freq(index);
 }
 
 static unsigned int g5_cpufreq_get_speed(unsigned int cpu)
-- 
1.7.12.rc2.18.g61b472e


WARNING: multiple messages have this Message-ID (diff)
From: viresh.kumar@linaro.org (Viresh Kumar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 23/34] cpufreq: pmac: remove calls to cpufreq_notify_transition()
Date: Fri, 16 Aug 2013 07:55:20 +0530	[thread overview]
Message-ID: <673811dacec594f14dd42197450f4a5b62e9b20c.1376619363.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1376619363.git.viresh.kumar@linaro.org>

Most of the drivers do following in their ->target_index() routines:

	struct cpufreq_freqs freqs;
	freqs.old = old freq...
	freqs.new = new freq...

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);

	/* Change rate here */

	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);

This is replicated over all cpufreq drivers today and there doesn't exists a
good enough reason why this shouldn't be moved to cpufreq core instead.

Earlier patches have added support in cpufreq core to do cpufreq notification on
frequency change, this one removes it from this driver.

Some related minor cleanups are also done along with it.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 drivers/cpufreq/pmac32-cpufreq.c | 20 ++++----------------
 drivers/cpufreq/pmac64-cpufreq.c | 18 +-----------------
 2 files changed, 5 insertions(+), 33 deletions(-)

diff --git a/drivers/cpufreq/pmac32-cpufreq.c b/drivers/cpufreq/pmac32-cpufreq.c
index 47c227c..c8f5d2c 100644
--- a/drivers/cpufreq/pmac32-cpufreq.c
+++ b/drivers/cpufreq/pmac32-cpufreq.c
@@ -330,21 +330,11 @@ static int pmu_set_cpu_speed(int low_speed)
 	return 0;
 }
 
-static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode,
-		int notify)
+static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode)
 {
-	struct cpufreq_freqs freqs;
 	unsigned long l3cr;
 	static unsigned long prev_l3cr;
 
-	freqs.old = cur_freq;
-	freqs.new = (speed_mode == CPUFREQ_HIGH) ? hi_freq : low_freq;
-
-	if (freqs.old == freqs.new)
-		return 0;
-
-	if (notify)
-		cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
 	if (speed_mode == CPUFREQ_LOW &&
 	    cpu_has_feature(CPU_FTR_L3CR)) {
 		l3cr = _get_L3CR();
@@ -360,8 +350,6 @@ static int do_set_cpu_speed(struct cpufreq_policy *policy, int speed_mode,
 		if ((prev_l3cr & L3CR_L3E) && l3cr != prev_l3cr)
 			_set_L3CR(prev_l3cr);
 	}
-	if (notify)
-		cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
 	cur_freq = (speed_mode == CPUFREQ_HIGH) ? hi_freq : low_freq;
 
 	return 0;
@@ -377,7 +365,7 @@ static int pmac_cpufreq_target(	struct cpufreq_policy *policy,
 {
 	int		rc;
 
-	rc = do_set_cpu_speed(policy, index, 1);
+	rc = do_set_cpu_speed(policy, index);
 
 	ppc_proc_freq = cur_freq * 1000ul;
 	return rc;
@@ -424,7 +412,7 @@ static int pmac_cpufreq_suspend(struct cpufreq_policy *policy)
 	no_schedule = 1;
 	sleep_freq = cur_freq;
 	if (cur_freq == low_freq && !is_pmu_based)
-		do_set_cpu_speed(policy, CPUFREQ_HIGH, 0);
+		do_set_cpu_speed(policy, CPUFREQ_HIGH);
 	return 0;
 }
 
@@ -441,7 +429,7 @@ static int pmac_cpufreq_resume(struct cpufreq_policy *policy)
 	 * probably high speed due to our suspend() routine
 	 */
 	do_set_cpu_speed(policy, sleep_freq == low_freq ?
-			 CPUFREQ_LOW : CPUFREQ_HIGH, 0);
+			 CPUFREQ_LOW : CPUFREQ_HIGH);
 
 	ppc_proc_freq = cur_freq * 1000ul;
 
diff --git a/drivers/cpufreq/pmac64-cpufreq.c b/drivers/cpufreq/pmac64-cpufreq.c
index 63f9642..2557f16 100644
--- a/drivers/cpufreq/pmac64-cpufreq.c
+++ b/drivers/cpufreq/pmac64-cpufreq.c
@@ -78,8 +78,6 @@ static void (*g5_switch_volt)(int speed_mode);
 static int (*g5_switch_freq)(int speed_mode);
 static int (*g5_query_freq)(void);
 
-static DEFINE_MUTEX(g5_switch_mutex);
-
 static unsigned long transition_latency;
 
 #ifdef CONFIG_PMAC_SMU
@@ -313,21 +311,7 @@ static int g5_pfunc_query_freq(void)
 
 static int g5_cpufreq_target(struct cpufreq_policy *policy, unsigned int index)
 {
-	struct cpufreq_freqs freqs;
-	int rc;
-
-	mutex_lock(&g5_switch_mutex);
-
-	freqs.old = g5_cpu_freqs[g5_pmode_cur].frequency;
-	freqs.new = g5_cpu_freqs[index].frequency;
-
-	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
-	rc = g5_switch_freq(index);
-	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
-
-	mutex_unlock(&g5_switch_mutex);
-
-	return rc;
+	return g5_switch_freq(index);
 }
 
 static unsigned int g5_cpufreq_get_speed(unsigned int cpu)
-- 
1.7.12.rc2.18.g61b472e

  parent reply	other threads:[~2013-08-16  2:28 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-16  2:24 [PATCH 00/34] CPUFreq: Move freq change notifications out of drivers Viresh Kumar
2013-08-16  2:36 ` Viresh Kumar
2013-08-16  2:24 ` Viresh Kumar
2013-08-16  2:24 ` Viresh Kumar
2013-08-16  2:24 ` [PATCH 01/34] cpufreq: move freq change notifications to cpufreq core Viresh Kumar
2013-08-16  2:36   ` Viresh Kumar
2013-08-16  2:24   ` Viresh Kumar
2013-08-16  2:24   ` Viresh Kumar
2013-08-16  2:24 ` [PATCH 02/34] cpufreq: acpi: remove calls to cpufreq_notify_transition() Viresh Kumar
2013-08-16  2:24   ` Viresh Kumar
     [not found]   ` <CAOLK0pz7e8nQVnZY0a-j_Fd_kFOqF8ZS4tRfYw1S+25Lv8GoFQ@mail.gmail.com>
     [not found]     ` <CAOLK0pyVDSc6x1u8Ro6ng1dH8ELqc3P9jPHamgiXBn6sWDgm8w@mail.gmail.com>
2013-08-16  7:59       ` Viresh Kumar
2013-08-16  7:59         ` Viresh Kumar
2013-08-16  7:59         ` Viresh Kumar
2013-08-16 15:30         ` Lan Tianyu
2013-08-16 15:30           ` Lan Tianyu
2013-08-16 15:30           ` Lan Tianyu
2013-08-16  2:25 ` [PATCH 03/34] cpufreq: arm_big_little: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 04/34] cpufreq: at32ap: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  5:58   ` Hans-Christian Egtvedt
2013-08-16  5:58     ` Hans-Christian Egtvedt
2013-08-16  2:25 ` [PATCH 05/34] cpufreq: blackfin: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 06/34] cpufreq: cpu0: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 07/34] cpufreq: cris: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2017-10-10  7:57   ` Jesper Nilsson
2017-10-10  7:57     ` Jesper Nilsson
2017-10-10  7:57     ` Jesper Nilsson
2017-10-10  9:13     ` Viresh Kumar
2017-10-10  9:13       ` Viresh Kumar
2017-10-10  9:13       ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 08/34] cpufreq: davinci: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 09/34] cpufreq: dbx500: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 10/34] cpufreq: e_powersaver: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 11/34] cpufreq: elanfreq: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 12/34] cpufreq: exynos: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 13/34] cpufreq: exynos5440: set CPUFREQ_NO_NOTIFICATION flag Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-18 10:54   ` amit daniel kachhap
2013-08-18 10:54     ` amit daniel kachhap
2013-08-18 21:57     ` Kukjin Kim
2013-08-18 21:57       ` Kukjin Kim
2013-08-19  3:42     ` amit daniel kachhap
2013-08-19  3:42       ` amit daniel kachhap
2013-08-19  4:40       ` Viresh Kumar
2013-08-19  4:40         ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 14/34] cpufreq: ia64-acpi: remove calls to cpufreq_notify_transition() Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 15/34] cpufreq: imx6q: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 16/34] cpufreq: kirkwood: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 17/34] cpufreq: longhaul: set CPUFREQ_NO_NOTIFICATION flag Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 18/34] cpufreq: loongson2: remove calls to cpufreq_notify_transition() Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 19/34] cpufreq: maple: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 20/34] cpufreq: omap: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 21/34] cpufreq: p4-clockmod: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 22/34] cpufreq: pasemi: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` Viresh Kumar [this message]
2013-08-16  2:25   ` [PATCH 23/34] cpufreq: pmac: " Viresh Kumar
2013-08-16  2:25 ` [PATCH 24/34] cpufreq: powernow: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 25/34] cpufreq: ppc: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 26/34] cpufreq: pxa: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 27/34] cpufreq: s3c: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 28/34] cpufreq: s5pv210: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 29/34] cpufreq: sa11x0: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 30/34] cpufreq: sc520: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 31/34] cpufreq: sparc: " Viresh Kumar
2013-08-16  2:37   ` Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 32/34] cpufreq: SPEAr: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 33/34] cpufreq: speedstep: " Viresh Kumar
2013-08-16  2:25   ` Viresh Kumar
2013-08-16  2:25 ` [PATCH 34/34] cpufreq: tegra: " Viresh Kumar
2013-08-16  2:25   ` 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=673811dacec594f14dd42197450f4a5b62e9b20c.1376619363.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=cpufreq@vger.kernel.org \
    --cc=linaro-kernel@lists.linaro.org \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.