From 5553f9e26f6f49a93ba732fd222eac6973a4cf35 Mon Sep 17 00:00:00 2001 From: Shawn Guo Date: Wed, 30 Jan 2013 14:27:49 +0000 Subject: 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 Reviewed-by: Viresh Kumar Acked-by: Mark Langsdorf Signed-off-by: Rafael J. Wysocki --- drivers/cpufreq/highbank-cpufreq.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers/cpufreq/highbank-cpufreq.c') 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 @@ #include #include #include +#include #define HB_CPUFREQ_CHANGE_NOTE 0x80000001 #define HB_CPUFREQ_IPC_LEN 7 @@ -65,6 +66,7 @@ static struct notifier_block hb_cpufreq_clk_nb = { static int hb_cpufreq_driver_init(void) { + struct platform_device_info devinfo = { .name = "cpufreq-cpu0", }; struct device *cpu_dev; struct clk *cpu_clk; struct device_node *np; @@ -104,6 +106,9 @@ static int hb_cpufreq_driver_init(void) goto out_put_node; } + /* Instantiate cpufreq-cpu0 */ + platform_device_register_full(&devinfo); + out_put_node: of_node_put(np); return ret; -- cgit v1.2.3