SH: cpuidle: check error code at init
Daniel Lezcano [Wed, 17 Apr 2013 13:32:57 +0000 (13:32 +0000)]
Registering the driver, or the device, can fail, let's check the return code
and return the error code to the PM layer.

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Acked-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

arch/sh/include/asm/suspend.h
arch/sh/kernel/cpu/shmobile/cpuidle.c
arch/sh/kernel/cpu/shmobile/pm.c

index e14567a..70ae0b2 100644 (file)
@@ -14,9 +14,9 @@ struct swsusp_arch_regs {
 void sh_mobile_call_standby(unsigned long mode);
 
 #ifdef CONFIG_CPU_IDLE
-void sh_mobile_setup_cpuidle(void);
+int sh_mobile_setup_cpuidle(void);
 #else
-static inline void sh_mobile_setup_cpuidle(void) {}
+static inline int sh_mobile_setup_cpuidle(void) { return 0; }
 #endif
 
 /* notifier chains for pre/post sleep hooks */
index aae3468..ea6ab02 100644 (file)
@@ -91,14 +91,19 @@ static struct cpuidle_driver cpuidle_driver = {
        .state_count = 3,
 };
 
-void sh_mobile_setup_cpuidle(void)
+int __init sh_mobile_setup_cpuidle(void)
 {
+       int ret;
+
        if (sh_mobile_sleep_supported & SUSP_SH_SF)
                cpuidle_driver.states[1].disabled = false;
 
        if (sh_mobile_sleep_supported & SUSP_SH_STANDBY)
                cpuidle_driver.states[2].disabled = false;
 
-       if (!cpuidle_register_driver(&cpuidle_driver))
-               cpuidle_register_device(&cpuidle_dev);
+       ret = cpuidle_register_driver(&cpuidle_driver);
+       if (ret)
+               return ret;
+
+       return cpuidle_register_device(&cpuidle_dev);
 }
index 08d27fa..ac37b72 100644 (file)
@@ -150,8 +150,7 @@ static const struct platform_suspend_ops sh_pm_ops = {
 static int __init sh_pm_init(void)
 {
        suspend_set_ops(&sh_pm_ops);
-       sh_mobile_setup_cpuidle();
-       return 0;
+       return sh_mobile_setup_cpuidle();
 }
 
 late_initcall(sh_pm_init);