linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Viresh Kumar <viresh.kumar@linaro.org>
To: rjw@sisk.pl
Cc: cpufreq@vger.kernel.org, linux-pm@vger.kernel.org
Subject: [PATCH V2 Resend 30/44] cpufreq: sa11x0: Expose frequency table
Date: Mon, 16 Sep 2013 18:56:32 +0530	[thread overview]
Message-ID: <2e006771b497ea2d68a17e3dae276725e4817e7d.1379309339.git.viresh.kumar@linaro.org> (raw)
In-Reply-To: <cover.1379309339.git.viresh.kumar@linaro.org>
In-Reply-To: <cover.1379309339.git.viresh.kumar@linaro.org>

This patch exposes sa11x0's frequency table to cpufreq core. It always existed
but not as an array frequencies and not in the format cpufreq core wants it to.
Also it was present in the unit of 100kHz earlier which is made consistent with
cpufreq core now, i.e. kHz.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/arm/mach-sa1100/generic.c   | 45 ++++++++++++++++++++--------------------
 arch/arm/mach-sa1100/generic.h   |  1 +
 drivers/cpufreq/sa1100-cpufreq.c |  3 ++-
 drivers/cpufreq/sa1110-cpufreq.c |  3 ++-
 4 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c
index f25b611..5c8167b 100644
--- a/arch/arm/mach-sa1100/generic.c
+++ b/arch/arm/mach-sa1100/generic.c
@@ -42,23 +42,24 @@ EXPORT_SYMBOL(reset_status);
 /*
  * This table is setup for a 3.6864MHz Crystal.
  */
-static const unsigned short cclk_frequency_100khz[NR_FREQS] = {
-	 590,	/*  59.0 MHz */
-	 737,	/*  73.7 MHz */
-	 885,	/*  88.5 MHz */
-	1032,	/* 103.2 MHz */
-	1180,	/* 118.0 MHz */
-	1327,	/* 132.7 MHz */
-	1475,	/* 147.5 MHz */
-	1622,	/* 162.2 MHz */
-	1769,	/* 176.9 MHz */
-	1917,	/* 191.7 MHz */
-	2064,	/* 206.4 MHz */
-	2212,	/* 221.2 MHz */
-	2359,	/* 235.9 MHz */
-	2507,	/* 250.7 MHz */
-	2654,	/* 265.4 MHz */
-	2802	/* 280.2 MHz */
+struct cpufreq_frequency_table sa11x0_freq_table[NR_FREQS+1] = {
+	{ .frequency = 59000,	/*  59.0 MHz */},
+	{ .frequency = 73700,	/*  73.7 MHz */},
+	{ .frequency = 88500,	/*  88.5 MHz */},
+	{ .frequency = 103200,	/* 103.2 MHz */},
+	{ .frequency = 118000,	/* 118.0 MHz */},
+	{ .frequency = 132700,	/* 132.7 MHz */},
+	{ .frequency = 147500,	/* 147.5 MHz */},
+	{ .frequency = 162200,	/* 162.2 MHz */},
+	{ .frequency = 176900,	/* 176.9 MHz */},
+	{ .frequency = 191700,	/* 191.7 MHz */},
+	{ .frequency = 206400,	/* 206.4 MHz */},
+	{ .frequency = 221200,	/* 221.2 MHz */},
+	{ .frequency = 235900,	/* 235.9 MHz */},
+	{ .frequency = 250700,	/* 250.7 MHz */},
+	{ .frequency = 265400,	/* 265.4 MHz */},
+	{ .frequency = 280200,	/* 280.2 MHz */},
+	{ .frequency = CPUFREQ_TABLE_END, },
 };
 
 /* rounds up(!)  */
@@ -66,10 +67,8 @@ unsigned int sa11x0_freq_to_ppcr(unsigned int khz)
 {
 	int i;
 
-	khz /= 100;
-
 	for (i = 0; i < NR_FREQS; i++)
-		if (cclk_frequency_100khz[i] >= khz)
+		if (sa11x0_freq_table[i].frequency >= khz)
 			break;
 
 	return i;
@@ -79,7 +78,7 @@ unsigned int sa11x0_ppcr_to_freq(unsigned int idx)
 {
 	unsigned int freq = 0;
 	if (idx < NR_FREQS)
-		freq = cclk_frequency_100khz[idx] * 100;
+		freq = sa11x0_freq_table[idx].frequency;
 	return freq;
 }
 
@@ -96,7 +95,7 @@ int sa11x0_verify_speed(struct cpufreq_policy *policy)
 	cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, policy->cpuinfo.max_freq);
 
 	/* make sure that at least one frequency is within the policy */
-	tmp = cclk_frequency_100khz[sa11x0_freq_to_ppcr(policy->min)] * 100;
+	tmp = sa11x0_freq_table[sa11x0_freq_to_ppcr(policy->min)].frequency;
 	if (tmp > policy->max)
 		policy->max = tmp;
 
@@ -109,7 +108,7 @@ unsigned int sa11x0_getspeed(unsigned int cpu)
 {
 	if (cpu)
 		return 0;
-	return cclk_frequency_100khz[PPCR & 0xf] * 100;
+	return sa11x0_freq_table[PPCR & 0xf].frequency;
 }
 
 /*
diff --git a/arch/arm/mach-sa1100/generic.h b/arch/arm/mach-sa1100/generic.h
index 9a33695..f5214ce 100644
--- a/arch/arm/mach-sa1100/generic.h
+++ b/arch/arm/mach-sa1100/generic.h
@@ -21,6 +21,7 @@ extern void sa1110_mb_disable(void);
 
 struct cpufreq_policy;
 
+extern struct cpufreq_frequency_table sa11x0_freq_table[];
 extern unsigned int sa11x0_freq_to_ppcr(unsigned int khz);
 extern int sa11x0_verify_speed(struct cpufreq_policy *policy);
 extern unsigned int sa11x0_getspeed(unsigned int cpu);
diff --git a/drivers/cpufreq/sa1100-cpufreq.c b/drivers/cpufreq/sa1100-cpufreq.c
index cff18e8..1323a69 100644
--- a/drivers/cpufreq/sa1100-cpufreq.c
+++ b/drivers/cpufreq/sa1100-cpufreq.c
@@ -224,7 +224,8 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy)
 	policy->cpuinfo.min_freq = 59000;
 	policy->cpuinfo.max_freq = 287000;
 	policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
-	return 0;
+
+	return cpufreq_table_validate_and_show(policy, sa11x0_freq_table);
 }
 
 static struct cpufreq_driver sa1100_driver __refdata = {
diff --git a/drivers/cpufreq/sa1110-cpufreq.c b/drivers/cpufreq/sa1110-cpufreq.c
index 39c90b6..adb0524 100644
--- a/drivers/cpufreq/sa1110-cpufreq.c
+++ b/drivers/cpufreq/sa1110-cpufreq.c
@@ -338,7 +338,8 @@ static int __init sa1110_cpu_init(struct cpufreq_policy *policy)
 	policy->cpuinfo.min_freq = 59000;
 	policy->cpuinfo.max_freq = 287000;
 	policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
-	return 0;
+
+	return cpufreq_table_validate_and_show(policy, sa11x0_freq_table);
 }
 
 /* sa1110_driver needs __refdata because it must remain after init registers
-- 
1.7.12.rc2.18.g61b472e


  parent reply	other threads:[~2013-09-16 13:26 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-16 13:26 [PATCH V2 Resend 00/44] CPUFreq Cleanup Series: Part I Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 01/44] cpufreq: Add new helper cpufreq_table_validate_and_show() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 02/44] cpufreq: pxa: call cpufreq_frequency_table_get_attr() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 03/44] cpufreq: s3cx4xx: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 04/44] cpufreq: sparc: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 05/44] cpufreq: acpi-cpufreq: use cpufreq_table_validate_and_show() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 06/44] cpufreq: arm_big_little: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 07/44] cpufreq: blackfin: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 08/44] cpufreq: cpufreq-cpu0: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 09/44] cpufreq: cris: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 10/44] cpufreq: davinci: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 11/44] cpufreq: dbx500: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 12/44] cpufreq: e_powersaver: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 13/44] cpufreq: elanfreq: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 14/44] cpufreq: exynos: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 15/44] cpufreq: ia64-acpi: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 16/44] cpufreq: imx6q: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 17/44] cpufreq: kirkwood: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 18/44] cpufreq: longhaul: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 19/44] cpufreq: loongson2: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 20/44] cpufreq: maple: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 21/44] cpufreq: omap: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 22/44] cpufreq: p4-clockmod: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 23/44] cpufreq: pasemi: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 24/44] cpufreq: pmac: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 25/44] cpufreq: powernow: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 26/44] cpufreq: ppc: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 27/44] cpufreq: pxa: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 28/44] cpufreq: s3cx4xx: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 29/44] cpufreq: s5pv210: " Viresh Kumar
2013-09-16 13:26 ` Viresh Kumar [this message]
2013-09-16 13:26 ` [PATCH V2 Resend 31/44] cpufreq: sa11x0: let cpufreq core initialize struct policy fields Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 32/44] cpufreq: sc520: use cpufreq_table_validate_and_show() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 33/44] cpufreq: sh: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 34/44] cpufreq: sparc: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 35/44] cpufreq: spear: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 36/44] cpufreq: speedstep: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 37/44] cpufreq: tegra: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 38/44] cpufreq: tegra: fix implementation of ->exit() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 39/44] cpufreq: at32ap: add frequency table Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 40/44] cpufreq: arm_big_little: call cpufreq_frequency_table_put_attr() Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 41/44] cpufreq: blackfin: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 42/44] cpufreq: exynos: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 43/44] cpufreq: loongson2: " Viresh Kumar
2013-09-16 13:26 ` [PATCH V2 Resend 44/44] cpufreq: omap: " 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=2e006771b497ea2d68a17e3dae276725e4817e7d.1379309339.git.viresh.kumar@linaro.org \
    --to=viresh.kumar@linaro.org \
    --cc=cpufreq@vger.kernel.org \
    --cc=linux-pm@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).