diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2013-04-23 04:54:39 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-04-23 07:45:22 -0400 |
commit | 0e9e8b4b918a7d2fc622bc93ee77e82ecae37d40 (patch) | |
tree | d033531f9eed9056b41ca3b81b60702a7d2dbae4 /arch | |
parent | 3cf4bc36f534550cfd4b0902e1a0408aded33a66 (diff) |
ARM: OMAP4: cpuidle: use init/exit common routine
Remove the duplicated code and use the cpuidle common code for initialization.
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Reviewed-by: Kevin Hilman <khilman@linaro.org>
Tested-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap2/cpuidle44xx.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c index d1bfb21feb74..5a286b56205e 100644 --- a/arch/arm/mach-omap2/cpuidle44xx.c +++ b/arch/arm/mach-omap2/cpuidle44xx.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/cpu_pm.h> | 15 | #include <linux/cpu_pm.h> |
16 | #include <linux/export.h> | 16 | #include <linux/export.h> |
17 | 17 | ||
18 | #include <asm/cpuidle.h> | ||
18 | #include <asm/proc-fns.h> | 19 | #include <asm/proc-fns.h> |
19 | 20 | ||
20 | #include "common.h" | 21 | #include "common.h" |
@@ -159,8 +160,6 @@ fail: | |||
159 | return index; | 160 | return index; |
160 | } | 161 | } |
161 | 162 | ||
162 | static DEFINE_PER_CPU(struct cpuidle_device, omap_idle_dev); | ||
163 | |||
164 | static struct cpuidle_driver omap4_idle_driver = { | 163 | static struct cpuidle_driver omap4_idle_driver = { |
165 | .name = "omap4_idle", | 164 | .name = "omap4_idle", |
166 | .owner = THIS_MODULE, | 165 | .owner = THIS_MODULE, |
@@ -209,9 +208,6 @@ static struct cpuidle_driver omap4_idle_driver = { | |||
209 | */ | 208 | */ |
210 | int __init omap4_idle_init(void) | 209 | int __init omap4_idle_init(void) |
211 | { | 210 | { |
212 | struct cpuidle_device *dev; | ||
213 | unsigned int cpu_id = 0; | ||
214 | |||
215 | mpu_pd = pwrdm_lookup("mpu_pwrdm"); | 211 | mpu_pd = pwrdm_lookup("mpu_pwrdm"); |
216 | cpu_pd[0] = pwrdm_lookup("cpu0_pwrdm"); | 212 | cpu_pd[0] = pwrdm_lookup("cpu0_pwrdm"); |
217 | cpu_pd[1] = pwrdm_lookup("cpu1_pwrdm"); | 213 | cpu_pd[1] = pwrdm_lookup("cpu1_pwrdm"); |
@@ -223,23 +219,5 @@ int __init omap4_idle_init(void) | |||
223 | if (!cpu_clkdm[0] || !cpu_clkdm[1]) | 219 | if (!cpu_clkdm[0] || !cpu_clkdm[1]) |
224 | return -ENODEV; | 220 | return -ENODEV; |
225 | 221 | ||
226 | if (cpuidle_register_driver(&omap4_idle_driver)) { | 222 | return cpuidle_register(&omap4_idle_driver, cpu_online_mask); |
227 | pr_err("%s: CPUidle driver register failed\n", __func__); | ||
228 | return -EIO; | ||
229 | } | ||
230 | |||
231 | for_each_cpu(cpu_id, cpu_online_mask) { | ||
232 | dev = &per_cpu(omap_idle_dev, cpu_id); | ||
233 | dev->cpu = cpu_id; | ||
234 | #ifdef CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED | ||
235 | dev->coupled_cpus = *cpu_online_mask; | ||
236 | #endif | ||
237 | if (cpuidle_register_device(dev)) { | ||
238 | pr_err("%s: CPUidle register failed\n", __func__); | ||
239 | cpuidle_unregister_driver(&omap4_idle_driver); | ||
240 | return -EIO; | ||
241 | } | ||
242 | } | ||
243 | |||
244 | return 0; | ||
245 | } | 223 | } |