aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/highbank-cpufreq.c
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2013-01-30 09:27:49 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-02-01 18:01:16 -0500
commit5553f9e26f6f49a93ba732fd222eac6973a4cf35 (patch)
tree039a24ab646dc51c047f7b6695dcbb73f190a6e0 /drivers/cpufreq/highbank-cpufreq.c
parent58ddcead4f163a01cef96aa5ba88f374011d8aea (diff)
cpufreq: instantiate cpufreq-cpu0 as a platform_driver
As multiplatform build is being adopted by more and more ARM platforms, initcall function should be used very carefully. For example, when GENERIC_CPUFREQ_CPU0 is built in the kernel, cpu0_cpufreq_driver_init() will be called on all the platforms to initialize cpufreq-cpu0 driver. To eliminate this undesired the effect, the patch changes cpufreq-cpu0 driver to have it instantiated as a platform_driver. Then it will only run on platforms that create the platform_device "cpufreq-cpu0". Along with the change, it also changes cpu_dev to be &pdev->dev, so that managed functions can start working, and module build gets supported too. The highbank-cpufreq driver is also updated accordingly to adapt the changes on cpufreq-cpu0. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org> Acked-by: Mark Langsdorf <mark.langsdorf@calxeda.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq/highbank-cpufreq.c')
-rw-r--r--drivers/cpufreq/highbank-cpufreq.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/cpufreq/highbank-cpufreq.c b/drivers/cpufreq/highbank-cpufreq.c
index 53f25e5aa6b7..66e3a71b81a3 100644
--- a/drivers/cpufreq/highbank-cpufreq.c
+++ b/drivers/cpufreq/highbank-cpufreq.c
@@ -20,6 +20,7 @@
20#include <linux/err.h> 20#include <linux/err.h>
21#include <linux/of.h> 21#include <linux/of.h>
22#include <linux/mailbox.h> 22#include <linux/mailbox.h>
23#include <linux/platform_device.h>
23 24
24#define HB_CPUFREQ_CHANGE_NOTE 0x80000001 25#define HB_CPUFREQ_CHANGE_NOTE 0x80000001
25#define HB_CPUFREQ_IPC_LEN 7 26#define HB_CPUFREQ_IPC_LEN 7
@@ -65,6 +66,7 @@ static struct notifier_block hb_cpufreq_clk_nb = {
65 66
66static int hb_cpufreq_driver_init(void) 67static int hb_cpufreq_driver_init(void)
67{ 68{
69 struct platform_device_info devinfo = { .name = "cpufreq-cpu0", };
68 struct device *cpu_dev; 70 struct device *cpu_dev;
69 struct clk *cpu_clk; 71 struct clk *cpu_clk;
70 struct device_node *np; 72 struct device_node *np;
@@ -104,6 +106,9 @@ static int hb_cpufreq_driver_init(void)
104 goto out_put_node; 106 goto out_put_node;
105 } 107 }
106 108
109 /* Instantiate cpufreq-cpu0 */
110 platform_device_register_full(&devinfo);
111
107out_put_node: 112out_put_node:
108 of_node_put(np); 113 of_node_put(np);
109 return ret; 114 return ret;