Commit 63b951ed authored by Santosh Shilimkar's avatar Santosh Shilimkar Committed by Kevin Hilman
Browse files

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: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: default avatarKevin Hilman <khilman@linaro.org>
parent dbd1ba6a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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;
	}

+5 −1
Original line number Diff line number Diff line
@@ -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;
		}
	}