forked from espressif/esp-idf
change(esp_hw_support): force invalidate all cache before exiting the sleep flow when sleep iram is disabled
This commit is contained in:
@@ -1135,6 +1135,21 @@ static esp_err_t SLEEP_FN_ATTR esp_sleep_start(uint32_t sleep_flags, uint32_t cl
|
||||
|
||||
if (!deep_sleep) {
|
||||
if (result == ESP_OK) {
|
||||
#if !CONFIG_PM_SLP_IRAM_OPT && !CONFIG_IDF_TARGET_ESP32
|
||||
#if CONFIG_SPIRAM
|
||||
# if CONFIG_IDF_TARGET_ESP32P4
|
||||
cache_ll_writeback_all(CACHE_LL_LEVEL_ALL, CACHE_TYPE_DATA, CACHE_LL_ID_ALL);
|
||||
# else
|
||||
Cache_WriteBack_All();
|
||||
# endif
|
||||
#endif
|
||||
/* When the IRAM optimization for the sleep flow is disabled, all
|
||||
* cache contents are forcibly invalidated before exiting the sleep
|
||||
* flow. This ensures that the code execution time of sleep exit
|
||||
* flow remains consistent, allowing the use of ccount to
|
||||
* dynamically calculate the sleep adjustment time. */
|
||||
cache_ll_invalidate_all(CACHE_LL_LEVEL_ALL, CACHE_TYPE_ALL, CACHE_LL_ID_ALL);
|
||||
#endif
|
||||
s_config.ccount_ticks_record = esp_cpu_get_cycle_count();
|
||||
#if SOC_PM_RETENTION_SW_TRIGGER_REGDMA
|
||||
if (sleep_flags & PMU_SLEEP_PD_TOP) {
|
||||
|
Reference in New Issue
Block a user