summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorSantosh Shilimkar <santosh.shilimkar@ti.com>2013-03-25 10:05:05 (GMT)
committerKevin Hilman <khilman@linaro.org>2013-04-09 16:45:45 (GMT)
commit63b951ed5b82c2891982437d1f57cb94dc0b3757 (patch)
treec46595fae5a5691dacc7baf046d2af476209818d /arch
parentdbd1ba6a62408520e5c7a024b521af14e71b2987 (diff)
downloadlinux-fsl-qoriq-63b951ed5b82c2891982437d1f57cb94dc0b3757.tar.xz
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')
-rw-r--r--arch/arm/mach-omap2/cpuidle34xx.c6
-rw-r--r--arch/arm/mach-omap2/cpuidle44xx.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/cpuidle34xx.c b/arch/arm/mach-omap2/cpuidle34xx.c
index 4f67a5b..a300122 100644
--- a/arch/arm/mach-omap2/cpuidle34xx.c
+++ b/arch/arm/mach-omap2/cpuidle34xx.c
@@ -359,7 +359,10 @@ int __init omap3_idle_init(void)
if (!mpu_pd || !core_pd || !per_pd || !cam_pd)
return -ENODEV;
- cpuidle_register_driver(&omap3_idle_driver);
+ if (cpuidle_register_driver(&omap3_idle_driver)) {
+ pr_err("%s: CPUidle driver register failed\n", __func__);
+ return -EIO;
+ }
dev = &per_cpu(omap3_idle_dev, smp_processor_id());
dev->cpu = 0;
@@ -367,6 +370,7 @@ int __init omap3_idle_init(void)
if (cpuidle_register_device(dev)) {
printk(KERN_ERR "%s: CPUidle register device failed\n",
__func__);
+ cpuidle_unregister_driver(&omap3_idle_driver);
return -EIO;
}
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
index 72c5407..aeeb8e6 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)
if (!cpu_clkdm[0] || !cpu_clkdm[1])
return -ENODEV;
- cpuidle_register_driver(&omap4_idle_driver);
+ if (cpuidle_register_driver(&omap4_idle_driver)) {
+ pr_err("%s: CPUidle driver register failed\n", __func__);
+ return -EIO;
+ }
for_each_cpu(cpu_id, cpu_online_mask) {
dev = &per_cpu(omap4_idle_dev, cpu_id);
@@ -232,6 +235,7 @@ int __init omap4_idle_init(void)
#endif
if (cpuidle_register_device(dev)) {
pr_err("%s: CPUidle register failed\n", __func__);
+ cpuidle_unregister_driver(&omap4_idle_driver);
return -EIO;
}
}