sleep: enable sleep reject when entering light sleep
This commit is contained in:
parent
440574d13b
commit
4e30e8801c
3 changed files with 22 additions and 2 deletions
|
@ -202,6 +202,14 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_WAKEUP_FORCE_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_WAKEUP_FORCE_EN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t reject_triggers = 0;
|
||||||
|
if ((pd_flags & RTC_SLEEP_PD_DIG) == 0 && (s_config.wakeup_triggers & RTC_GPIO_TRIG_EN)) {
|
||||||
|
/* Light sleep, enable sleep reject for faster return from this function,
|
||||||
|
* in case the wakeup is already triggerred.
|
||||||
|
*/
|
||||||
|
reject_triggers = RTC_CNTL_LIGHT_SLP_REJECT_EN_M | RTC_CNTL_GPIO_REJECT_EN_M;
|
||||||
|
}
|
||||||
|
|
||||||
// Enter sleep
|
// Enter sleep
|
||||||
rtc_sleep_config_t config = RTC_SLEEP_CONFIG_DEFAULT(pd_flags);
|
rtc_sleep_config_t config = RTC_SLEEP_CONFIG_DEFAULT(pd_flags);
|
||||||
rtc_sleep_init(config);
|
rtc_sleep_init(config);
|
||||||
|
@ -211,7 +219,7 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
|
||||||
s_config.sleep_duration > 0) {
|
s_config.sleep_duration > 0) {
|
||||||
timer_wakeup_prepare();
|
timer_wakeup_prepare();
|
||||||
}
|
}
|
||||||
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, 0);
|
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, reject_triggers);
|
||||||
|
|
||||||
// Restore CPU frequency
|
// Restore CPU frequency
|
||||||
rtc_clk_cpu_freq_set_config(&cpu_freq_config);
|
rtc_clk_cpu_freq_set_config(&cpu_freq_config);
|
||||||
|
|
|
@ -207,6 +207,14 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
|
||||||
touch_wakeup_prepare();
|
touch_wakeup_prepare();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t reject_triggers = 0;
|
||||||
|
if ((pd_flags & RTC_SLEEP_PD_DIG) == 0) {
|
||||||
|
/* Light sleep, enable sleep reject for faster return from this function,
|
||||||
|
* in case the wakeup is already triggerred.
|
||||||
|
*/
|
||||||
|
reject_triggers = s_config.wakeup_triggers;
|
||||||
|
}
|
||||||
|
|
||||||
// Enter sleep
|
// Enter sleep
|
||||||
rtc_sleep_config_t config = RTC_SLEEP_CONFIG_DEFAULT(pd_flags);
|
rtc_sleep_config_t config = RTC_SLEEP_CONFIG_DEFAULT(pd_flags);
|
||||||
rtc_sleep_init(config);
|
rtc_sleep_init(config);
|
||||||
|
@ -216,7 +224,8 @@ static uint32_t IRAM_ATTR esp_sleep_start(uint32_t pd_flags)
|
||||||
s_config.sleep_duration > 0) {
|
s_config.sleep_duration > 0) {
|
||||||
timer_wakeup_prepare();
|
timer_wakeup_prepare();
|
||||||
}
|
}
|
||||||
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, 0, 1);
|
|
||||||
|
uint32_t result = rtc_sleep_start(s_config.wakeup_triggers, reject_triggers, 1);
|
||||||
|
|
||||||
// Restore CPU frequency
|
// Restore CPU frequency
|
||||||
rtc_clk_cpu_freq_set_config(&cpu_freq_config);
|
rtc_clk_cpu_freq_set_config(&cpu_freq_config);
|
||||||
|
|
|
@ -135,6 +135,9 @@ uint32_t rtc_sleep_start(uint32_t wakeup_opt, uint32_t reject_opt, uint32_t lslp
|
||||||
{
|
{
|
||||||
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
REG_SET_FIELD(RTC_CNTL_WAKEUP_STATE_REG, RTC_CNTL_WAKEUP_ENA, wakeup_opt);
|
||||||
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
REG_SET_FIELD(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_SLEEP_REJECT_ENA, reject_opt);
|
||||||
|
if (reject_opt != 0) {
|
||||||
|
REG_SET_BIT(RTC_CNTL_SLP_REJECT_CONF_REG, RTC_CNTL_LIGHT_SLP_REJECT_EN);
|
||||||
|
}
|
||||||
|
|
||||||
/* Start entry into sleep mode */
|
/* Start entry into sleep mode */
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
SET_PERI_REG_MASK(RTC_CNTL_STATE0_REG, RTC_CNTL_SLEEP_EN);
|
||||||
|
|
Loading…
Reference in a new issue