#define PM_SLEEP_SEL_EVENT 0x777
#define PM_SLEEP_TRACE_DEF_VAL 0x5a5a
#define PM_OS_US_TO_MS 1000
-
+#define RTC_TIMER_INT_STATUS 0x57024010
enum {
PM_SLEEP_STATE_IDLE,
PM_SLEEP_STATE_GOTO_DS,
return;
}
rtc_times /= PM_OS_US_TO_MS;
- if (sleep_ms > rtc_times && rtc_times != 0 && sleep_ms <= g_pm_sleep_threshold) {
+ if (sleep_ms > rtc_times && rtc_times != 0) {
sleep_ms = rtc_times;
}
if (sleep_ms <= PM_SLEEP_THRESHOLD_WFI_ONLY_MS || pm_get_sleep_veto()) {
pm_enter_deepsleep_set_flag();
status = pm_os_irq_lock();
- if ((sleep_ms <= g_pm_sleep_threshold) || pm_get_sleep_veto()) {
- pm_enter_deepsleep_cancel_flag();
+ if ((sleep_ms <= g_pm_sleep_threshold) || pm_get_sleep_veto() || (readw(RTC_TIMER_INT_STATUS) == 1)){
+ pm_enter_deepsleep_cancel_flag();
pm_enter_light_sleep();
} else {
#if CONFIG_PM_TICKLESS_EN == YES
void uapi_pm_enter_sleep(void)
{
- uint32_t status = pm_os_irq_lock();
uint32_t sleep_ms = pm_os_get_sleep_ms();
pm_enter_sleep(sleep_ms);
- pm_os_irq_restore(status);
}