* [PATCH 1/5] cpufreq: Give driver used for dbx500 family a more generic name
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
@ 2012-11-28 10:27 ` Ulf Hansson
2012-11-28 10:27 ` [PATCH 2/5] mfd: db8500: Update cpufreq device name Ulf Hansson
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ulf Hansson @ 2012-11-28 10:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Lee Jones <lee.jones@linaro.org>
This driver doesn't only handle cpufreq functionality for the
db8500 anymore. There are new variants which rely on it too.
Let's make the name a bit more generic.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/cpufreq/Makefile | 2 +-
drivers/cpufreq/db8500-cpufreq.c | 179 --------------------------------------
drivers/cpufreq/dbx500-cpufreq.c | 179 ++++++++++++++++++++++++++++++++++++++
3 files changed, 180 insertions(+), 180 deletions(-)
delete mode 100644 drivers/cpufreq/db8500-cpufreq.c
create mode 100644 drivers/cpufreq/dbx500-cpufreq.c
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 5b1413e..b842ba5 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -41,7 +41,7 @@ obj-$(CONFIG_X86_CPUFREQ_NFORCE2) += cpufreq-nforce2.o
##################################################################################
# ARM SoC drivers
-obj-$(CONFIG_UX500_SOC_DB8500) += db8500-cpufreq.o
+obj-$(CONFIG_UX500_SOC_DB8500) += dbx500-cpufreq.o
obj-$(CONFIG_ARM_S3C2416_CPUFREQ) += s3c2416-cpufreq.o
obj-$(CONFIG_ARM_S3C64XX_CPUFREQ) += s3c64xx-cpufreq.o
obj-$(CONFIG_ARM_S5PV210_CPUFREQ) += s5pv210-cpufreq.o
diff --git a/drivers/cpufreq/db8500-cpufreq.c b/drivers/cpufreq/db8500-cpufreq.c
deleted file mode 100644
index 4f154bc..0000000
--- a/drivers/cpufreq/db8500-cpufreq.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright (C) STMicroelectronics 2009
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License Terms: GNU General Public License v2
- * Author: Sundar Iyer <sundar.iyer@stericsson.com>
- * Author: Martin Persson <martin.persson@stericsson.com>
- * Author: Jonas Aaberg <jonas.aberg@stericsson.com>
- *
- */
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/cpufreq.h>
-#include <linux/delay.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-#include <linux/clk.h>
-#include <mach/id.h>
-
-static struct cpufreq_frequency_table *freq_table;
-static struct clk *armss_clk;
-
-static struct freq_attr *db8500_cpufreq_attr[] = {
- &cpufreq_freq_attr_scaling_available_freqs,
- NULL,
-};
-
-static int db8500_cpufreq_verify_speed(struct cpufreq_policy *policy)
-{
- return cpufreq_frequency_table_verify(policy, freq_table);
-}
-
-static int db8500_cpufreq_target(struct cpufreq_policy *policy,
- unsigned int target_freq,
- unsigned int relation)
-{
- struct cpufreq_freqs freqs;
- unsigned int idx;
-
- /* scale the target frequency to one of the extremes supported */
- if (target_freq < policy->cpuinfo.min_freq)
- target_freq = policy->cpuinfo.min_freq;
- if (target_freq > policy->cpuinfo.max_freq)
- target_freq = policy->cpuinfo.max_freq;
-
- /* Lookup the next frequency */
- if (cpufreq_frequency_table_target
- (policy, freq_table, target_freq, relation, &idx)) {
- return -EINVAL;
- }
-
- freqs.old = policy->cur;
- freqs.new = freq_table[idx].frequency;
-
- if (freqs.old == freqs.new)
- return 0;
-
- /* pre-change notification */
- for_each_cpu(freqs.cpu, policy->cpus)
- cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
-
- /* update armss clk frequency */
- if (clk_set_rate(armss_clk, freq_table[idx].frequency * 1000)) {
- pr_err("db8500-cpufreq: Failed to update armss clk\n");
- return -EINVAL;
- }
-
- /* post change notification */
- for_each_cpu(freqs.cpu, policy->cpus)
- cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
-
- return 0;
-}
-
-static unsigned int db8500_cpufreq_getspeed(unsigned int cpu)
-{
- int i = 0;
- unsigned long freq = clk_get_rate(armss_clk) / 1000;
-
- while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
- if (freq <= freq_table[i].frequency)
- return freq_table[i].frequency;
- i++;
- }
-
- /* We could not find a corresponding frequency. */
- pr_err("db8500-cpufreq: Failed to find cpufreq speed\n");
- return 0;
-}
-
-static int __cpuinit db8500_cpufreq_init(struct cpufreq_policy *policy)
-{
- int i = 0;
- int res;
-
- armss_clk = clk_get(NULL, "armss");
- if (IS_ERR(armss_clk)) {
- pr_err("db8500-cpufreq : Failed to get armss clk\n");
- return PTR_ERR(armss_clk);
- }
-
- pr_info("db8500-cpufreq : Available frequencies:\n");
- while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
- pr_info(" %d Mhz\n", freq_table[i].frequency/1000);
- i++;
- }
-
- /* get policy fields based on the table */
- res = cpufreq_frequency_table_cpuinfo(policy, freq_table);
- if (!res)
- cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
- else {
- pr_err("db8500-cpufreq : Failed to read policy table\n");
- clk_put(armss_clk);
- return res;
- }
-
- policy->min = policy->cpuinfo.min_freq;
- policy->max = policy->cpuinfo.max_freq;
- policy->cur = db8500_cpufreq_getspeed(policy->cpu);
- policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
-
- /*
- * FIXME : Need to take time measurement across the target()
- * function with no/some/all drivers in the notification
- * list.
- */
- policy->cpuinfo.transition_latency = 20 * 1000; /* in ns */
-
- /* policy sharing between dual CPUs */
- cpumask_copy(policy->cpus, cpu_present_mask);
-
- policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
-
- return 0;
-}
-
-static struct cpufreq_driver db8500_cpufreq_driver = {
- .flags = CPUFREQ_STICKY,
- .verify = db8500_cpufreq_verify_speed,
- .target = db8500_cpufreq_target,
- .get = db8500_cpufreq_getspeed,
- .init = db8500_cpufreq_init,
- .name = "DB8500",
- .attr = db8500_cpufreq_attr,
-};
-
-static int db8500_cpufreq_probe(struct platform_device *pdev)
-{
- freq_table = dev_get_platdata(&pdev->dev);
-
- if (!freq_table) {
- pr_err("db8500-cpufreq: Failed to fetch cpufreq table\n");
- return -ENODEV;
- }
-
- return cpufreq_register_driver(&db8500_cpufreq_driver);
-}
-
-static struct platform_driver db8500_cpufreq_plat_driver = {
- .driver = {
- .name = "cpufreq-u8500",
- .owner = THIS_MODULE,
- },
- .probe = db8500_cpufreq_probe,
-};
-
-static int __init db8500_cpufreq_register(void)
-{
- if (!cpu_is_u8500_family())
- return -ENODEV;
-
- pr_info("cpufreq for DB8500 started\n");
- return platform_driver_register(&db8500_cpufreq_plat_driver);
-}
-device_initcall(db8500_cpufreq_register);
-
-MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("cpufreq driver for DB8500");
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c
new file mode 100644
index 0000000..0a411b5
--- /dev/null
+++ b/drivers/cpufreq/dbx500-cpufreq.c
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) STMicroelectronics 2009
+ * Copyright (C) ST-Ericsson SA 2010
+ *
+ * License Terms: GNU General Public License v2
+ * Author: Sundar Iyer <sundar.iyer@stericsson.com>
+ * Author: Martin Persson <martin.persson@stericsson.com>
+ * Author: Jonas Aaberg <jonas.aberg@stericsson.com>
+ *
+ */
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/cpufreq.h>
+#include <linux/delay.h>
+#include <linux/slab.h>
+#include <linux/platform_device.h>
+#include <linux/clk.h>
+#include <mach/id.h>
+
+static struct cpufreq_frequency_table *freq_table;
+static struct clk *armss_clk;
+
+static struct freq_attr *dbx500_cpufreq_attr[] = {
+ &cpufreq_freq_attr_scaling_available_freqs,
+ NULL,
+};
+
+static int dbx500_cpufreq_verify_speed(struct cpufreq_policy *policy)
+{
+ return cpufreq_frequency_table_verify(policy, freq_table);
+}
+
+static int dbx500_cpufreq_target(struct cpufreq_policy *policy,
+ unsigned int target_freq,
+ unsigned int relation)
+{
+ struct cpufreq_freqs freqs;
+ unsigned int idx;
+
+ /* scale the target frequency to one of the extremes supported */
+ if (target_freq < policy->cpuinfo.min_freq)
+ target_freq = policy->cpuinfo.min_freq;
+ if (target_freq > policy->cpuinfo.max_freq)
+ target_freq = policy->cpuinfo.max_freq;
+
+ /* Lookup the next frequency */
+ if (cpufreq_frequency_table_target
+ (policy, freq_table, target_freq, relation, &idx)) {
+ return -EINVAL;
+ }
+
+ freqs.old = policy->cur;
+ freqs.new = freq_table[idx].frequency;
+
+ if (freqs.old == freqs.new)
+ return 0;
+
+ /* pre-change notification */
+ for_each_cpu(freqs.cpu, policy->cpus)
+ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
+
+ /* update armss clk frequency */
+ if (clk_set_rate(armss_clk, freq_table[idx].frequency * 1000)) {
+ pr_err("dbx500-cpufreq: Failed to update armss clk\n");
+ return -EINVAL;
+ }
+
+ /* post change notification */
+ for_each_cpu(freqs.cpu, policy->cpus)
+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
+
+ return 0;
+}
+
+static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)
+{
+ int i = 0;
+ unsigned long freq = clk_get_rate(armss_clk) / 1000;
+
+ while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
+ if (freq <= freq_table[i].frequency)
+ return freq_table[i].frequency;
+ i++;
+ }
+
+ /* We could not find a corresponding frequency. */
+ pr_err("dbx500-cpufreq: Failed to find cpufreq speed\n");
+ return 0;
+}
+
+static int __cpuinit dbx500_cpufreq_init(struct cpufreq_policy *policy)
+{
+ int i = 0;
+ int res;
+
+ armss_clk = clk_get(NULL, "armss");
+ if (IS_ERR(armss_clk)) {
+ pr_err("dbx500-cpufreq : Failed to get armss clk\n");
+ return PTR_ERR(armss_clk);
+ }
+
+ pr_info("dbx500-cpufreq : Available frequencies:\n");
+ while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
+ pr_info(" %d Mhz\n", freq_table[i].frequency/1000);
+ i++;
+ }
+
+ /* get policy fields based on the table */
+ res = cpufreq_frequency_table_cpuinfo(policy, freq_table);
+ if (!res)
+ cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
+ else {
+ pr_err("dbx500-cpufreq : Failed to read policy table\n");
+ clk_put(armss_clk);
+ return res;
+ }
+
+ policy->min = policy->cpuinfo.min_freq;
+ policy->max = policy->cpuinfo.max_freq;
+ policy->cur = dbx500_cpufreq_getspeed(policy->cpu);
+ policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
+
+ /*
+ * FIXME : Need to take time measurement across the target()
+ * function with no/some/all drivers in the notification
+ * list.
+ */
+ policy->cpuinfo.transition_latency = 20 * 1000; /* in ns */
+
+ /* policy sharing between dual CPUs */
+ cpumask_copy(policy->cpus, cpu_present_mask);
+
+ policy->shared_type = CPUFREQ_SHARED_TYPE_ALL;
+
+ return 0;
+}
+
+static struct cpufreq_driver dbx500_cpufreq_driver = {
+ .flags = CPUFREQ_STICKY,
+ .verify = dbx500_cpufreq_verify_speed,
+ .target = dbx500_cpufreq_target,
+ .get = dbx500_cpufreq_getspeed,
+ .init = dbx500_cpufreq_init,
+ .name = "DBX500",
+ .attr = dbx500_cpufreq_attr,
+};
+
+static int dbx500_cpufreq_probe(struct platform_device *pdev)
+{
+ freq_table = dev_get_platdata(&pdev->dev);
+
+ if (!freq_table) {
+ pr_err("dbx500-cpufreq: Failed to fetch cpufreq table\n");
+ return -ENODEV;
+ }
+
+ return cpufreq_register_driver(&dbx500_cpufreq_driver);
+}
+
+static struct platform_driver dbx500_cpufreq_plat_driver = {
+ .driver = {
+ .name = "cpufreq-ux500",
+ .owner = THIS_MODULE,
+ },
+ .probe = dbx500_cpufreq_probe,
+};
+
+static int __init dbx500_cpufreq_register(void)
+{
+ if (!cpu_is_u8500_family())
+ return -ENODEV;
+
+ pr_info("cpufreq for DBX500 started\n");
+ return platform_driver_register(&dbx500_cpufreq_plat_driver);
+}
+device_initcall(dbx500_cpufreq_register);
+
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("cpufreq driver for DBX500");
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/5] mfd: db8500: Update cpufreq device name
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
2012-11-28 10:27 ` [PATCH 1/5] cpufreq: Give driver used for dbx500 family a more generic name Ulf Hansson
@ 2012-11-28 10:27 ` Ulf Hansson
2012-11-30 10:50 ` Samuel Ortiz
2012-11-28 10:27 ` [PATCH 3/5] cpufreq: dbx500: Move clk_get to probe Ulf Hansson
` (3 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: Ulf Hansson @ 2012-11-28 10:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Lee Jones <lee.jones@linaro.org>
Since the cpufreq driver for ux500 has been renamed from
cpufreq-db8500 to cpufreq-dbx500, we need to change the
device name here as well.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Cc: Samuel Ortiz <sameo@linux.intel.com>
---
drivers/mfd/db8500-prcmu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index a1b295f..2900132 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -3072,8 +3072,8 @@ static struct mfd_cell db8500_prcmu_devs[] = {
.pdata_size = sizeof(db8500_regulators),
},
{
- .name = "cpufreq-u8500",
- .of_compatible = "stericsson,cpufreq-u8500",
+ .name = "cpufreq-ux500",
+ .of_compatible = "stericsson,cpufreq-ux500",
.platform_data = &db8500_cpufreq_table,
.pdata_size = sizeof(db8500_cpufreq_table),
},
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/5] mfd: db8500: Update cpufreq device name
2012-11-28 10:27 ` [PATCH 2/5] mfd: db8500: Update cpufreq device name Ulf Hansson
@ 2012-11-30 10:50 ` Samuel Ortiz
2012-11-30 11:54 ` Ulf Hansson
0 siblings, 1 reply; 10+ messages in thread
From: Samuel Ortiz @ 2012-11-30 10:50 UTC (permalink / raw)
To: linux-arm-kernel
Hi Ulf,
On Wed, Nov 28, 2012 at 11:27:41AM +0100, Ulf Hansson wrote:
> From: Lee Jones <lee.jones@linaro.org>
>
> Since the cpufreq driver for ux500 has been renamed from
> cpufreq-db8500 to cpufreq-dbx500, we need to change the
> device name here as well.
>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> ---
> drivers/mfd/db8500-prcmu.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
This one doesn't apply to my tree, it would make more sense to push this one
through Mike's tree.
Or I'll queue it to my for-next branch after the next merge window closes, as
you prefer.
Cheers,
Samuel.
--
Intel Open Source Technology Centre
http://oss.intel.com/
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] mfd: db8500: Update cpufreq device name
2012-11-30 10:50 ` Samuel Ortiz
@ 2012-11-30 11:54 ` Ulf Hansson
2012-11-30 12:44 ` Samuel Ortiz
0 siblings, 1 reply; 10+ messages in thread
From: Ulf Hansson @ 2012-11-30 11:54 UTC (permalink / raw)
To: linux-arm-kernel
On 30 November 2012 11:50, Samuel Ortiz <sameo@linux.intel.com> wrote:
> Hi Ulf,
>
> On Wed, Nov 28, 2012 at 11:27:41AM +0100, Ulf Hansson wrote:
>> From: Lee Jones <lee.jones@linaro.org>
>>
>> Since the cpufreq driver for ux500 has been renamed from
>> cpufreq-db8500 to cpufreq-dbx500, we need to change the
>> device name here as well.
>>
>> Signed-off-by: Lee Jones <lee.jones@linaro.org>
>> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
>> Cc: Samuel Ortiz <sameo@linux.intel.com>
>> ---
>> drivers/mfd/db8500-prcmu.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
> This one doesn't apply to my tree, it would make more sense to push this one
> through Mike's tree.
Yes, you are right! My earlier clock patches which was affecting
cpufreq and mfd was merged through Mikes tree.
I will suggest this complete patchset shall go though Mikes tree.
Do I have your ack for the mfd patch?
> Or I'll queue it to my for-next branch after the next merge window closes, as
> you prefer.
>
> Cheers,
> Samuel.
>
> --
> Intel Open Source Technology Centre
> http://oss.intel.com/
> --
> To unsubscribe from this list: send the line "unsubscribe cpufreq" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
Kind regards
Ulf Hansson
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] mfd: db8500: Update cpufreq device name
2012-11-30 11:54 ` Ulf Hansson
@ 2012-11-30 12:44 ` Samuel Ortiz
0 siblings, 0 replies; 10+ messages in thread
From: Samuel Ortiz @ 2012-11-30 12:44 UTC (permalink / raw)
To: linux-arm-kernel
Hi Ulf,
On Fri, Nov 30, 2012 at 12:54:29PM +0100, Ulf Hansson wrote:
> On 30 November 2012 11:50, Samuel Ortiz <sameo@linux.intel.com> wrote:
> > Hi Ulf,
> >
> > On Wed, Nov 28, 2012 at 11:27:41AM +0100, Ulf Hansson wrote:
> >> From: Lee Jones <lee.jones@linaro.org>
> >>
> >> Since the cpufreq driver for ux500 has been renamed from
> >> cpufreq-db8500 to cpufreq-dbx500, we need to change the
> >> device name here as well.
> >>
> >> Signed-off-by: Lee Jones <lee.jones@linaro.org>
> >> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> >> Cc: Samuel Ortiz <sameo@linux.intel.com>
> >> ---
> >> drivers/mfd/db8500-prcmu.c | 4 ++--
> >> 1 file changed, 2 insertions(+), 2 deletions(-)
> > This one doesn't apply to my tree, it would make more sense to push this one
> > through Mike's tree.
>
> Yes, you are right! My earlier clock patches which was affecting
> cpufreq and mfd was merged through Mikes tree.
> I will suggest this complete patchset shall go though Mikes tree.
>
> Do I have your ack for the mfd patch?
Yes:
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Cheers,
Samuel.
--
Intel Open Source Technology Centre
http://oss.intel.com/
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/5] cpufreq: dbx500: Move clk_get to probe
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
2012-11-28 10:27 ` [PATCH 1/5] cpufreq: Give driver used for dbx500 family a more generic name Ulf Hansson
2012-11-28 10:27 ` [PATCH 2/5] mfd: db8500: Update cpufreq device name Ulf Hansson
@ 2012-11-28 10:27 ` Ulf Hansson
2012-11-28 10:27 ` [PATCH 4/5] cpufreq: dbx500: Minor code cleanup Ulf Hansson
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Ulf Hansson @ 2012-11-28 10:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Ulf Hansson <ulf.hansson@linaro.org>
The armss clock shall only be fetched at probe thus move this here.
Same thing goes for the printing of the available frequencies.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Jonas Aaberg <jonas.aberg@stericsson.com>
---
drivers/cpufreq/dbx500-cpufreq.c | 29 ++++++++++++++---------------
1 file changed, 14 insertions(+), 15 deletions(-)
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c
index 0a411b5..d974a8e 100644
--- a/drivers/cpufreq/dbx500-cpufreq.c
+++ b/drivers/cpufreq/dbx500-cpufreq.c
@@ -90,28 +90,14 @@ static unsigned int dbx500_cpufreq_getspeed(unsigned int cpu)
static int __cpuinit dbx500_cpufreq_init(struct cpufreq_policy *policy)
{
- int i = 0;
int res;
- armss_clk = clk_get(NULL, "armss");
- if (IS_ERR(armss_clk)) {
- pr_err("dbx500-cpufreq : Failed to get armss clk\n");
- return PTR_ERR(armss_clk);
- }
-
- pr_info("dbx500-cpufreq : Available frequencies:\n");
- while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
- pr_info(" %d Mhz\n", freq_table[i].frequency/1000);
- i++;
- }
-
/* get policy fields based on the table */
res = cpufreq_frequency_table_cpuinfo(policy, freq_table);
if (!res)
cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
else {
pr_err("dbx500-cpufreq : Failed to read policy table\n");
- clk_put(armss_clk);
return res;
}
@@ -147,13 +133,26 @@ static struct cpufreq_driver dbx500_cpufreq_driver = {
static int dbx500_cpufreq_probe(struct platform_device *pdev)
{
- freq_table = dev_get_platdata(&pdev->dev);
+ int i = 0;
+ freq_table = dev_get_platdata(&pdev->dev);
if (!freq_table) {
pr_err("dbx500-cpufreq: Failed to fetch cpufreq table\n");
return -ENODEV;
}
+ armss_clk = clk_get(&pdev->dev, "armss");
+ if (IS_ERR(armss_clk)) {
+ pr_err("dbx500-cpufreq : Failed to get armss clk\n");
+ return PTR_ERR(armss_clk);
+ }
+
+ pr_info("dbx500-cpufreq : Available frequencies:\n");
+ while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
+ pr_info(" %d Mhz\n", freq_table[i].frequency/1000);
+ i++;
+ }
+
return cpufreq_register_driver(&dbx500_cpufreq_driver);
}
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] cpufreq: dbx500: Minor code cleanup
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
` (2 preceding siblings ...)
2012-11-28 10:27 ` [PATCH 3/5] cpufreq: dbx500: Move clk_get to probe Ulf Hansson
@ 2012-11-28 10:27 ` Ulf Hansson
2012-11-28 10:27 ` [PATCH 5/5] cpufreq: dbx500: Update file header Ulf Hansson
2012-11-30 12:04 ` [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
5 siblings, 0 replies; 10+ messages in thread
From: Ulf Hansson @ 2012-11-28 10:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Jonas Aaberg <jonas.aberg@stericsson.com>
Some minor code cleanup and some minor changes to printed
error messages.
Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/cpufreq/dbx500-cpufreq.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c
index d974a8e..d4cb782 100644
--- a/drivers/cpufreq/dbx500-cpufreq.c
+++ b/drivers/cpufreq/dbx500-cpufreq.c
@@ -36,6 +36,7 @@ static int dbx500_cpufreq_target(struct cpufreq_policy *policy,
{
struct cpufreq_freqs freqs;
unsigned int idx;
+ int ret;
/* scale the target frequency to one of the extremes supported */
if (target_freq < policy->cpuinfo.min_freq)
@@ -44,10 +45,9 @@ static int dbx500_cpufreq_target(struct cpufreq_policy *policy,
target_freq = policy->cpuinfo.max_freq;
/* Lookup the next frequency */
- if (cpufreq_frequency_table_target
- (policy, freq_table, target_freq, relation, &idx)) {
+ if (cpufreq_frequency_table_target(policy, freq_table, target_freq,
+ relation, &idx))
return -EINVAL;
- }
freqs.old = policy->cur;
freqs.new = freq_table[idx].frequency;
@@ -60,9 +60,12 @@ static int dbx500_cpufreq_target(struct cpufreq_policy *policy,
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
/* update armss clk frequency */
- if (clk_set_rate(armss_clk, freq_table[idx].frequency * 1000)) {
- pr_err("dbx500-cpufreq: Failed to update armss clk\n");
- return -EINVAL;
+ ret = clk_set_rate(armss_clk, freqs.new * 1000);
+
+ if (ret) {
+ pr_err("dbx500-cpufreq: Failed to set armss_clk to %d Hz: error %d\n",
+ freqs.new * 1000, ret);
+ return ret;
}
/* post change notification */
@@ -97,7 +100,7 @@ static int __cpuinit dbx500_cpufreq_init(struct cpufreq_policy *policy)
if (!res)
cpufreq_frequency_table_get_attr(freq_table, policy->cpu);
else {
- pr_err("dbx500-cpufreq : Failed to read policy table\n");
+ pr_err("dbx500-cpufreq: Failed to read policy table\n");
return res;
}
@@ -143,11 +146,11 @@ static int dbx500_cpufreq_probe(struct platform_device *pdev)
armss_clk = clk_get(&pdev->dev, "armss");
if (IS_ERR(armss_clk)) {
- pr_err("dbx500-cpufreq : Failed to get armss clk\n");
+ pr_err("dbx500-cpufreq: Failed to get armss clk\n");
return PTR_ERR(armss_clk);
}
- pr_info("dbx500-cpufreq : Available frequencies:\n");
+ pr_info("dbx500-cpufreq: Available frequencies:\n");
while (freq_table[i].frequency != CPUFREQ_TABLE_END) {
pr_info(" %d Mhz\n", freq_table[i].frequency/1000);
i++;
@@ -169,7 +172,6 @@ static int __init dbx500_cpufreq_register(void)
if (!cpu_is_u8500_family())
return -ENODEV;
- pr_info("cpufreq for DBX500 started\n");
return platform_driver_register(&dbx500_cpufreq_plat_driver);
}
device_initcall(dbx500_cpufreq_register);
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/5] cpufreq: dbx500: Update file header
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
` (3 preceding siblings ...)
2012-11-28 10:27 ` [PATCH 4/5] cpufreq: dbx500: Minor code cleanup Ulf Hansson
@ 2012-11-28 10:27 ` Ulf Hansson
2012-11-30 12:04 ` [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
5 siblings, 0 replies; 10+ messages in thread
From: Ulf Hansson @ 2012-11-28 10:27 UTC (permalink / raw)
To: linux-arm-kernel
From: Lee Jones <lee.jones@linaro.org>
Real simple patch to extend the ST-Ericsson copyright date and
remove unnecessary extra commented lines.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/cpufreq/dbx500-cpufreq.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/cpufreq/dbx500-cpufreq.c b/drivers/cpufreq/dbx500-cpufreq.c
index d4cb782..047fc4f 100644
--- a/drivers/cpufreq/dbx500-cpufreq.c
+++ b/drivers/cpufreq/dbx500-cpufreq.c
@@ -1,13 +1,13 @@
/*
* Copyright (C) STMicroelectronics 2009
- * Copyright (C) ST-Ericsson SA 2010
+ * Copyright (C) ST-Ericsson SA 2010-2012
*
* License Terms: GNU General Public License v2
* Author: Sundar Iyer <sundar.iyer@stericsson.com>
* Author: Martin Persson <martin.persson@stericsson.com>
* Author: Jonas Aaberg <jonas.aberg@stericsson.com>
- *
*/
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/cpufreq.h>
--
1.7.10
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts
2012-11-28 10:27 [PATCH 0/5] cpufreq: db8500: Rename driver and update some parts Ulf Hansson
` (4 preceding siblings ...)
2012-11-28 10:27 ` [PATCH 5/5] cpufreq: dbx500: Update file header Ulf Hansson
@ 2012-11-30 12:04 ` Ulf Hansson
5 siblings, 0 replies; 10+ messages in thread
From: Ulf Hansson @ 2012-11-30 12:04 UTC (permalink / raw)
To: linux-arm-kernel
On 28 November 2012 11:27, Ulf Hansson <ulf.hansson@stericsson.com> wrote:
> From: Ulf Hansson <ulf.hansson@linaro.org>
>
> This patchset starts by renaming the db8500 cpufreq driver to a more generic
> name. There are new variants which rely on it too, so instead we give it a
> family name of dbx500.
>
> On top of that a fixup patch for initialization of the driver and some minor
> cleanup patches are included as well.
>
> These patches can be material for 3.8, thus I think it should be fine if the
> patches are merged through different trees. Unless some of the maintainers
> are of other opinions.
>
> Jonas Aaberg (1):
> cpufreq: dbx500: Minor code cleanup
>
> Lee Jones (3):
> cpufreq: Give driver used for dbx500 family a more generic name
> mfd: db8500: Update cpufreq device name
> cpufreq: dbx500: Update file header
>
> Ulf Hansson (1):
> cpufreq: dbx500: Move clk_get to probe
>
> drivers/cpufreq/Makefile | 2 +-
> drivers/cpufreq/db8500-cpufreq.c | 179 -------------------------------------
> drivers/cpufreq/dbx500-cpufreq.c | 180 ++++++++++++++++++++++++++++++++++++++
> drivers/mfd/db8500-prcmu.c | 4 +-
> 4 files changed, 183 insertions(+), 182 deletions(-)
> delete mode 100644 drivers/cpufreq/db8500-cpufreq.c
> create mode 100644 drivers/cpufreq/dbx500-cpufreq.c
>
> --
> 1.7.10
>
Thanks to Samuel I realized that of course these patches would need to
go through Mike Turquette's clock tree. They are applying there.
This since we have merged clock patches which had dependencies to both
mfd and cpufreq.
Thus I will instead try to collect acks as a way forward.
Mike, please tell me if you are not happy with this setup or if you
would like me to resend.
Kind regards
Ulf Hansson
^ permalink raw reply [flat|nested] 10+ messages in thread