From 9cb875949ce48239fa5d179d6047285de534cc46 Mon Sep 17 00:00:00 2001 From: fuzhibo Date: Thu, 10 Dec 2020 14:45:41 +0800 Subject: [PATCH] fix: RTC_FAST_MEM always power on if used for heap --- components/esp32/sleep_modes.c | 13 ++++++++----- components/esp32s2/sleep_modes.c | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/components/esp32/sleep_modes.c b/components/esp32/sleep_modes.c index 2fa606a509..efa23660d6 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -668,14 +668,17 @@ static uint32_t get_power_down_flags(void) s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; } - // RTC_FAST_MEM is needed for deep sleep stub. - // If RTC_FAST_MEM is Auto, keep it powered on, so that deep sleep stub - // can run. - // In the new chip revision, deep sleep stub will be optional, - // and this can be changed. +#if !CONFIG_ESP32_ALLOW_RTC_FAST_MEM_AS_HEAP + /* RTC_FAST_MEM is needed for deep sleep stub. + If RTC_FAST_MEM is Auto, keep it powered on, so that deep sleep stub can run. + In the new chip revision, deep sleep stub will be optional, and this can be changed. */ if (s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] == ESP_PD_OPTION_AUTO) { s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] = ESP_PD_OPTION_ON; } +#else + /* If RTC_FAST_MEM is used for heap, force RTC_FAST_MEM to be powered on. */ + s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] = ESP_PD_OPTION_ON; +#endif // RTC_PERIPH is needed for EXT0 wakeup and GPIO wakeup. // If RTC_PERIPH is auto, and EXT0/GPIO aren't enabled, power down RTC_PERIPH. diff --git a/components/esp32s2/sleep_modes.c b/components/esp32s2/sleep_modes.c index b68255db4a..7ee29afda4 100644 --- a/components/esp32s2/sleep_modes.c +++ b/components/esp32s2/sleep_modes.c @@ -682,14 +682,17 @@ static uint32_t get_power_down_flags(void) s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; } - // RTC_FAST_MEM is needed for deep sleep stub. - // If RTC_FAST_MEM is Auto, keep it powered on, so that deep sleep stub - // can run. - // In the new chip revision, deep sleep stub will be optional, - // and this can be changed. +#if !CONFIG_ESP32S2_ALLOW_RTC_FAST_MEM_AS_HEAP + /* RTC_FAST_MEM is needed for deep sleep stub. + If RTC_FAST_MEM is Auto, keep it powered on, so that deep sleep stub can run. + In the new chip revision, deep sleep stub will be optional, and this can be changed. */ if (s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] == ESP_PD_OPTION_AUTO) { s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] = ESP_PD_OPTION_ON; } +#else + /* If RTC_FAST_MEM is used for heap, force RTC_FAST_MEM to be powered on. */ + s_config.pd_options[ESP_PD_DOMAIN_RTC_FAST_MEM] = ESP_PD_OPTION_ON; +#endif // RTC_PERIPH is needed for EXT0 wakeup and GPIO wakeup. // If RTC_PERIPH is auto, and EXT0/GPIO aren't enabled, power down RTC_PERIPH.