Previously omap3_idle_init() was called in device_init, while
omap_pm_init() is called at late_initcall. This causes the cpu idle
driver to call omap_sram_idle before it is properly initialized. This
patch fixes the issue by moving omap3_idle_init into omap3_pm_init.
Signed-off-by: Kalle Jokiniemi <ext-kalle.jokiniemi@nokia.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
* Registers the OMAP3 specific cpuidle driver with the cpuidle
* framework with the valid set of states.
*/
-int omap3_idle_init(void)
+int __init omap3_idle_init(void)
{
int i, count = 0;
struct omap3_processor_cx *cx;
return 0;
}
-device_initcall(omap3_idle_init);
+#else
+int __init omap3_idle_init(void)
+{
+ return 0;
+}
#endif /* CONFIG_CPU_IDLE */
extern void omap_sram_idle(void);
extern int omap3_can_sleep(void);
extern int set_pwrdm_state(struct powerdomain *pwrdm, u32 state);
+extern int omap3_idle_init(void);
extern int omap3_pm_get_suspend_state(struct powerdomain *pwrdm);
extern int omap3_pm_set_suspend_state(struct powerdomain *pwrdm, int state);
suspend_set_ops(&omap_pm_ops);
#endif /* CONFIG_SUSPEND */
-#ifndef CONFIG_CPU_IDLE
pm_idle = omap3_pm_idle;
-#endif
+ omap3_idle_init();
pwrdm_add_wkdep(neon_pwrdm, mpu_pwrdm);
/*