diff --git a/components/esp_hw_support/port/esp32c6/pmu_param.c b/components/esp_hw_support/port/esp32c6/pmu_param.c index 7abd70ba5d..379e058b29 100644 --- a/components/esp_hw_support/port/esp32c6/pmu_param.c +++ b/components/esp_hw_support/port/esp32c6/pmu_param.c @@ -115,8 +115,8 @@ const pmu_hp_system_power_param_t * pmu_hp_system_power_param_default(pmu_hp_mod } #define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \ - .icg_func = 0, \ - .icg_apb = 0, \ + .icg_func = BIT(PMU_ICG_FUNC_ENA_SARADC), \ + .icg_apb = BIT(PMU_ICG_APB_ENA_SARADC), \ .icg_modem = { \ .code = PMU_HP_ICG_MODEM_CODE_MODEM \ }, \ diff --git a/components/esp_phy/include/esp_private/phy.h b/components/esp_phy/include/esp_private/phy.h index a9d10ea6e6..c7fc984135 100644 --- a/components/esp_phy/include/esp_private/phy.h +++ b/components/esp_phy/include/esp_private/phy.h @@ -1,10 +1,11 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #pragma once +#include "sdkconfig.h" #include "esp_phy_init.h" #ifdef __cplusplus @@ -218,6 +219,16 @@ void phy_ant_clr_update_flag(void); void phy_ant_update(void); +#if CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP +/** + * @brief On sleep->modem->active wakeup process, since RF has been turned on by hardware in + * modem state, `sleep_modem_wifi_do_phy_retention` and `phy_wakeup_init` will be skipped + * in `esp_phy_enable`, but there are still some configurations that need to be restored + * by software, which are packed in this function. + */ +void phy_wakeup_from_modem_state_extra_init(void); +#endif + #ifdef __cplusplus } #endif diff --git a/components/esp_phy/src/phy_common.c b/components/esp_phy/src/phy_common.c index cabd9ee1eb..0178e6a1a2 100644 --- a/components/esp_phy/src/phy_common.c +++ b/components/esp_phy/src/phy_common.c @@ -1,11 +1,12 @@ /* - * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ #include #include +#include "sdkconfig.h" #include "esp_timer.h" #include "esp_log.h" #include "esp_private/esp_gpio_reserve.h" @@ -17,6 +18,10 @@ #include "esp_phy.h" #include "esp_attr.h" +#if CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP +#include "hal/temperature_sensor_ll.h" +#endif + static const char* TAG = "phy_comm"; static volatile uint16_t s_phy_modem_flag = 0; @@ -294,3 +299,10 @@ esp_err_t esp_phy_get_ant(esp_phy_ant_config_t *config) memcpy(config, &s_phy_ant_config, sizeof(esp_phy_ant_config_t)); return ESP_OK; } + +#if CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP +void phy_wakeup_from_modem_state_extra_init(void) +{ + temperature_sensor_ll_enable(true); +} +#endif diff --git a/components/esp_phy/src/phy_init.c b/components/esp_phy/src/phy_init.c index 78aed34e06..13c2a5bd09 100644 --- a/components/esp_phy/src/phy_init.c +++ b/components/esp_phy/src/phy_init.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -315,6 +315,8 @@ void esp_phy_enable(esp_phy_modem_t modem) } else { phy_wakeup_init(); } + } else { + phy_wakeup_from_modem_state_extra_init(); } #else phy_wakeup_init(); @@ -338,10 +340,10 @@ void esp_phy_enable(esp_phy_modem_t modem) phy_track_pll_init(); #endif - if (phy_ant_need_update()) { - phy_ant_update(); - phy_ant_clr_update_flag(); - } + if (phy_ant_need_update()) { + phy_ant_update(); + phy_ant_clr_update_flag(); + } } phy_set_modem_flag(modem);