mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 18:57:19 +02:00
fix(esp_pm): update CPU frequency immediately after updating pm_config
Closes https://github.com/espressif/esp-idf/issues/13492
This commit is contained in:
@ -459,6 +459,7 @@ esp_err_t esp_pm_configure(const void* vconfig)
|
|||||||
s_config_changed = true;
|
s_config_changed = true;
|
||||||
portEXIT_CRITICAL(&s_switch_lock);
|
portEXIT_CRITICAL(&s_switch_lock);
|
||||||
|
|
||||||
|
do_switch(PM_MODE_CPU_MAX);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,7 +609,7 @@ static void IRAM_ATTR do_switch(pm_mode_t new_mode)
|
|||||||
#endif
|
#endif
|
||||||
portEXIT_CRITICAL_ISR(&s_switch_lock);
|
portEXIT_CRITICAL_ISR(&s_switch_lock);
|
||||||
} while (true);
|
} while (true);
|
||||||
if (new_mode == s_mode) {
|
if ((new_mode == s_mode) && !s_config_changed) {
|
||||||
portEXIT_CRITICAL_ISR(&s_switch_lock);
|
portEXIT_CRITICAL_ISR(&s_switch_lock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@ -54,12 +54,8 @@ static void switch_freq(int mhz)
|
|||||||
.min_freq_mhz = MIN(mhz, xtal_freq_mhz),
|
.min_freq_mhz = MIN(mhz, xtal_freq_mhz),
|
||||||
};
|
};
|
||||||
ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
|
ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
|
||||||
printf("Waiting for frequency to be set to %d MHz...\n", mhz);
|
TEST_ASSERT_EQUAL_UINT32(mhz, esp_clk_cpu_freq() / MHZ);
|
||||||
while (esp_clk_cpu_freq() / MHZ != mhz)
|
printf("Frequency is %d MHz\n", esp_clk_cpu_freq() / MHZ);
|
||||||
{
|
|
||||||
vTaskDelay(pdMS_TO_TICKS(200));
|
|
||||||
printf("Frequency is %d MHz\n", esp_clk_cpu_freq() / MHZ);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
|
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6
|
||||||
|
Reference in New Issue
Block a user