aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/cpuidle44xx.c
diff options
context:
space:
mode:
authorSantosh Shilimkar <santosh.shilimkar@ti.com>2013-03-25 06:05:05 -0400
committerKevin Hilman <khilman@linaro.org>2013-04-09 12:45:45 -0400
commit63b951ed5b82c2891982437d1f57cb94dc0b3757 (patch)
treec46595fae5a5691dacc7baf046d2af476209818d /arch/arm/mach-omap2/cpuidle44xx.c
parentdbd1ba6a62408520e5c7a024b521af14e71b2987 (diff)
ARM: OMAP: CPUidle: Unregister drivere on device registration failure
If the CPUidle device registration fails for some reason, we should unregister the driver on error path. Fix the code accordingly. Also when at it, check of the driver registration failure too. Acked-by: Nishanth Menon <nm@ti.com> Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com> Signed-off-by: Kevin Hilman <khilman@linaro.org>
Diffstat (limited to 'arch/arm/mach-omap2/cpuidle44xx.c')
-rw-r--r--arch/arm/mach-omap2/cpuidle44xx.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
index 72c5407fdd12..aeeb8e61406e 100644
--- a/arch/arm/mach-omap2/cpuidle44xx.c
+++ b/arch/arm/mach-omap2/cpuidle44xx.c
@@ -222,7 +222,10 @@ int __init omap4_idle_init(void)
222 if (!cpu_clkdm[0] || !cpu_clkdm[1]) 222 if (!cpu_clkdm[0] || !cpu_clkdm[1])
223 return -ENODEV; 223 return -ENODEV;
224 224
225 cpuidle_register_driver(&omap4_idle_driver); 225 if (cpuidle_register_driver(&omap4_idle_driver)) {
226 pr_err("%s: CPUidle driver register failed\n", __func__);
227 return -EIO;
228 }
226 229
227 for_each_cpu(cpu_id, cpu_online_mask) { 230 for_each_cpu(cpu_id, cpu_online_mask) {
228 dev = &per_cpu(omap4_idle_dev, cpu_id); 231 dev = &per_cpu(omap4_idle_dev, cpu_id);
@@ -232,6 +235,7 @@ int __init omap4_idle_init(void)
232#endif 235#endif
233 if (cpuidle_register_device(dev)) { 236 if (cpuidle_register_device(dev)) {
234 pr_err("%s: CPUidle register failed\n", __func__); 237 pr_err("%s: CPUidle register failed\n", __func__);
238 cpuidle_unregister_driver(&omap4_idle_driver);
235 return -EIO; 239 return -EIO;
236 } 240 }
237 } 241 }