From 0ddf00c6e1415d6b72b8e65ff9366489f7c47a3a Mon Sep 17 00:00:00 2001 From: ninh Date: Fri, 23 Apr 2021 17:44:50 +0800 Subject: [PATCH 1/2] esp_pm: allow dfs to swith down alltime if no lightsleep (backport to v4.3) --- components/esp_pm/pm_impl.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/components/esp_pm/pm_impl.c b/components/esp_pm/pm_impl.c index a0f360108f..53da0f289c 100644 --- a/components/esp_pm/pm_impl.c +++ b/components/esp_pm/pm_impl.c @@ -580,10 +580,12 @@ esp_err_t esp_pm_unregister_skip_light_sleep_callback(skip_light_sleep_cb_t cb) static inline bool IRAM_ATTR periph_should_skip_light_sleep(void) { - for (int i = 0; i < PERIPH_SKIP_LIGHT_SLEEP_NO; i++) { - if (s_periph_skip_light_sleep_cb[i]) { - if (s_periph_skip_light_sleep_cb[i]() == true) { - return true; + if (s_light_sleep_en) { + for (int i = 0; i < PERIPH_SKIP_LIGHT_SLEEP_NO; i++) { + if (s_periph_skip_light_sleep_cb[i]) { + if (s_periph_skip_light_sleep_cb[i]() == true) { + return true; + } } } } From 6dc067dda7bb3371581115dd1116b1025a6b4f53 Mon Sep 17 00:00:00 2001 From: ninh Date: Wed, 21 Apr 2021 15:17:16 +0800 Subject: [PATCH 2/2] esp_wifi: fix nolightsleep after wifi init (backport to v4.3) --- components/esp_system/include/esp_sleep.h | 6 ++++++ components/esp_system/sleep_modes.c | 9 +++++++++ components/esp_wifi/lib | 2 +- components/esp_wifi/src/wifi_init.c | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/components/esp_system/include/esp_sleep.h b/components/esp_system/include/esp_sleep.h index d84933cde5..a2bef497a6 100644 --- a/components/esp_system/include/esp_sleep.h +++ b/components/esp_system/include/esp_sleep.h @@ -303,6 +303,12 @@ esp_err_t esp_sleep_enable_uart_wakeup(int uart_num); */ esp_err_t esp_sleep_enable_wifi_wakeup(void); +/** + * @brief Disable wakeup by WiFi MAC + * @return + * - ESP_OK on success + */ +esp_err_t esp_sleep_disable_wifi_wakeup(void); /** * @brief Get the bit mask of GPIOs which caused wakeup (ext1) diff --git a/components/esp_system/sleep_modes.c b/components/esp_system/sleep_modes.c index 362d5c592f..3d9d43ba90 100644 --- a/components/esp_system/sleep_modes.c +++ b/components/esp_system/sleep_modes.c @@ -1172,6 +1172,15 @@ esp_err_t esp_sleep_enable_wifi_wakeup(void) #endif } +esp_err_t esp_sleep_disable_wifi_wakeup(void) +{ +#if SOC_PM_SUPPORT_WIFI_WAKEUP + s_config.wakeup_triggers &= (~RTC_WIFI_TRIG_EN); + return ESP_OK; +#else + return ESP_ERR_NOT_SUPPORTED; +#endif +} esp_sleep_wakeup_cause_t esp_sleep_get_wakeup_cause(void) { diff --git a/components/esp_wifi/lib b/components/esp_wifi/lib index bdcf44b772..6e096b5e7a 160000 --- a/components/esp_wifi/lib +++ b/components/esp_wifi/lib @@ -1 +1 @@ -Subproject commit bdcf44b772dedee0f71c27a51c8368a7b1842885 +Subproject commit 6e096b5e7a8b527732499f943c70d3203f2abd2f diff --git a/components/esp_wifi/src/wifi_init.c b/components/esp_wifi/src/wifi_init.c index f63527d79b..7fa30b9a83 100644 --- a/components/esp_wifi/src/wifi_init.c +++ b/components/esp_wifi/src/wifi_init.c @@ -150,6 +150,7 @@ esp_err_t esp_wifi_deinit(void) #if SOC_WIFI_HW_TSF esp_pm_unregister_skip_light_sleep_callback(esp_wifi_internal_is_tsf_active); esp_pm_unregister_inform_out_light_sleep_overhead_callback(esp_wifi_internal_update_light_sleep_wake_ahead_time); + esp_sleep_disable_wifi_wakeup(); #endif #if CONFIG_ESP_WIFI_SLP_IRAM_OPT esp_pm_unregister_light_sleep_default_params_config_callback();