static int ux500_suspend_enter(suspend_state_t state) { if (ux500_suspend_enabled()) { if (ux500_suspend_deepsleep_enabled() && state == PM_SUSPEND_MEM) return suspend(true); if (ux500_suspend_sleep_enabled()) return suspend(false); /* For debugging, if Sleep and DeepSleep disabled, do Idle */ prcmu_set_power_state(PRCMU_AP_IDLE, true, true); } dsb(); __asm__ __volatile__("wfi\n\t" : : : "memory"); return 0; }
static int ux500_suspend_enter(suspend_state_t state) { if (ux500_suspend_enabled()) { if (ux500_suspend_deepsleep_enabled() && state == PM_SUSPEND_MEM) return suspend(true); if (ux500_suspend_sleep_enabled()) return suspend(false); } ux500_suspend_dbg_add_wake_on_uart(); ux500_pm_prcmu_set_ioforce(true); dsb(); __asm__ __volatile__("wfi\n\t" : : : "memory"); ux500_pm_prcmu_set_ioforce(false); ux500_suspend_dbg_remove_wake_on_uart(); return 0; }