pm: update pm test cases to support esp32c2

This commit is contained in:
songruojing
2022-05-11 14:56:00 +08:00
committed by Song Ruo Jing
parent b84f9dd5cc
commit 280a241792
2 changed files with 20 additions and 14 deletions

View File

@ -450,8 +450,14 @@ static esp_err_t gptimer_select_periph_clock(gptimer_t *timer, gptimer_clock_sou
#endif // SOC_TIMER_GROUP_SUPPORT_APB #endif // SOC_TIMER_GROUP_SUPPORT_APB
#if SOC_TIMER_GROUP_SUPPORT_PLL_F40M #if SOC_TIMER_GROUP_SUPPORT_PLL_F40M
case GPTIMER_CLK_SRC_PLL_F40M: case GPTIMER_CLK_SRC_PLL_F40M:
// TODO: decide which kind of PM lock we should use for such clock
counter_src_hz = 40 * 1000 * 1000; counter_src_hz = 40 * 1000 * 1000;
#if CONFIG_PM_ENABLE
sprintf(timer->pm_lock_name, "gptimer_%d_%d", timer->group->group_id, timer_id); // e.g. gptimer_0_0
// PLL_F40M will be turned off when DFS switches CPU clock source to XTAL
ret = esp_pm_lock_create(ESP_PM_APB_FREQ_MAX, 0, timer->pm_lock_name, &timer->pm_lock);
ESP_RETURN_ON_ERROR(ret, TAG, "create APB_FREQ_MAX lock failed");
ESP_LOGD(TAG, "install APB_FREQ_MAX lock for timer (%d,%d)", timer->group->group_id, timer_id);
#endif
break; break;
#endif // SOC_TIMER_GROUP_SUPPORT_PLL_F40M #endif // SOC_TIMER_GROUP_SUPPORT_PLL_F40M
#if SOC_TIMER_GROUP_SUPPORT_AHB #if SOC_TIMER_GROUP_SUPPORT_AHB

View File

@ -39,8 +39,6 @@ TEST_CASE("Can dump power management lock stats", "[pm]")
#ifdef CONFIG_PM_ENABLE #ifdef CONFIG_PM_ENABLE
#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32C2)
//IDF-5053
static void switch_freq(int mhz) static void switch_freq(int mhz)
{ {
int xtal_freq_mhz = esp_clk_xtal_freq() / MHZ; int xtal_freq_mhz = esp_clk_xtal_freq() / MHZ;
@ -69,8 +67,13 @@ static void switch_freq(int mhz)
} }
} }
#if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32H2 #if CONFIG_IDF_TARGET_ESP32C3
static const int test_freqs[] = {40, 160, 80, 40, 80, 10, 80, 20, 40}; static const int test_freqs[] = {40, CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ, 80, 40, 80, 10, 80, 20, 40};
#elif CONFIG_IDF_TARGET_ESP32C2
static const int test_freqs[] = {CONFIG_XTAL_FREQ, CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ, 80, CONFIG_XTAL_FREQ, 80,
CONFIG_XTAL_FREQ / 2, CONFIG_XTAL_FREQ}; // C2 xtal has 40/26MHz option
#elif CONFIG_IDF_TARGET_ESP32H2
static const int test_freqs[] = {32, CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ, 32} // TODO: IDF-3786
#else #else
static const int test_freqs[] = {240, 40, 160, 240, 80, 40, 240, 40, 80, 10, 80, 20, 40}; static const int test_freqs[] = {240, 40, 160, 240, 80, 40, 240, 40, 80, 10, 80, 20, 40};
#endif #endif
@ -86,7 +89,6 @@ TEST_CASE("Can switch frequency using esp_pm_configure", "[pm]")
switch_freq(orig_freq_mhz); switch_freq(orig_freq_mhz);
} }
#endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32C2)
#if CONFIG_FREERTOS_USE_TICKLESS_IDLE #if CONFIG_FREERTOS_USE_TICKLESS_IDLE
@ -138,8 +140,6 @@ static void light_sleep_disable(void)
ESP_ERROR_CHECK( esp_pm_configure(&pm_config) ); ESP_ERROR_CHECK( esp_pm_configure(&pm_config) );
} }
#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32C2)
//IDF-5053
TEST_CASE("Automatic light occurs when tasks are suspended", "[pm]") TEST_CASE("Automatic light occurs when tasks are suspended", "[pm]")
{ {
gptimer_handle_t gptimer = NULL; gptimer_handle_t gptimer = NULL;
@ -159,7 +159,9 @@ TEST_CASE("Automatic light occurs when tasks are suspended", "[pm]")
// so we manually release the lock here // so we manually release the lock here
esp_pm_lock_handle_t gptimer_pm_lock; esp_pm_lock_handle_t gptimer_pm_lock;
TEST_ESP_OK(gptimer_get_pm_lock(gptimer, &gptimer_pm_lock)); TEST_ESP_OK(gptimer_get_pm_lock(gptimer, &gptimer_pm_lock));
TEST_ESP_OK(esp_pm_lock_release(gptimer_pm_lock)); if (gptimer_pm_lock) {
TEST_ESP_OK(esp_pm_lock_release(gptimer_pm_lock));
}
light_sleep_enable(); light_sleep_enable();
@ -185,17 +187,16 @@ TEST_CASE("Automatic light occurs when tasks are suspended", "[pm]")
} }
light_sleep_disable(); light_sleep_disable();
TEST_ESP_OK(esp_pm_lock_acquire(gptimer_pm_lock)); if (gptimer_pm_lock) {
TEST_ESP_OK(esp_pm_lock_acquire(gptimer_pm_lock));
}
TEST_ESP_OK(gptimer_stop(gptimer)); TEST_ESP_OK(gptimer_stop(gptimer));
TEST_ESP_OK(gptimer_disable(gptimer)); TEST_ESP_OK(gptimer_disable(gptimer));
TEST_ESP_OK(gptimer_del_timer(gptimer)); TEST_ESP_OK(gptimer_del_timer(gptimer));
} }
#endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32C2)
#if CONFIG_ULP_COPROC_TYPE_FSM #if CONFIG_ULP_COPROC_TYPE_FSM
#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) #if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3)
#if !DISABLED_FOR_TARGETS(ESP32C3)
// No ULP on C3
// Fix failure on ESP32 when running alone; passes when the previous test is run before this one // Fix failure on ESP32 when running alone; passes when the previous test is run before this one
TEST_CASE("Can wake up from automatic light sleep by GPIO", "[pm][ignore]") TEST_CASE("Can wake up from automatic light sleep by GPIO", "[pm][ignore]")
@ -264,7 +265,6 @@ TEST_CASE("Can wake up from automatic light sleep by GPIO", "[pm][ignore]")
light_sleep_disable(); light_sleep_disable();
} }
#endif //!DISABLED_FOR_TARGETS(ESP32C3)
#endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) #endif //!TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3)
#endif //CONFIG_ULP_COPROC_TYPE_FSM #endif //CONFIG_ULP_COPROC_TYPE_FSM