Merge branch 'fix/brownout_restore_after_deepsleep_reject_v5.5' into 'release/v5.5'

fix(esp_hw_support): restore brownout after deep sleep rejection on ESP32-S2 (v5.5)

See merge request espressif/esp-idf!52646
This commit is contained in:
Jiang Jiang Jian
2026-09-10 15:55:10 +08:00
+8 -3
View File
@@ -1222,12 +1222,11 @@ static esp_err_t FORCE_IRAM_ATTR deep_sleep_start(bool allow_sleep_rejection)
}
}
#endif
#if CONFIG_IDF_TARGET_ESP32S2
#if CONFIG_IDF_TARGET_ESP32S2 && CONFIG_ESP_BROWNOUT_DET
/* Due to hardware limitations, on S2 the brownout detector sometimes trigger during deep sleep
to circumvent this we disable the brownout detector before sleeping */
esp_brownout_disable();
#endif //CONFIG_IDF_TARGET_ESP32S2
#endif //CONFIG_IDF_TARGET_ESP32S2 && CONFIG_ESP_BROWNOUT_DET && CONFIG_ESP_BROWNOUT_DET
esp_sync_timekeeping_timers();
@@ -1323,6 +1322,12 @@ static esp_err_t FORCE_IRAM_ATTR deep_sleep_start(bool allow_sleep_rejection)
esp_clk_private_unlock();
#endif
portEXIT_CRITICAL(&s_config.lock);
#if CONFIG_IDF_TARGET_ESP32S2 && CONFIG_ESP_BROWNOUT_DET
/* Brownout was disabled before attempting deep sleep; restore it after rejection. */
esp_brownout_init();
#endif //CONFIG_IDF_TARGET_ESP32S2 && CONFIG_ESP_BROWNOUT_DET
return err;
}