Merge branch 'fix/fix_tsens_power_after_modem_wakeup_v5.4' into 'release/v5.4'

fix(esp_hw_support): fix tsensor power enable failed after modem state wakeup (v5.4)

See merge request espressif/esp-idf!36228
This commit is contained in:
Jiang Jiang Jian
2025-01-17 11:45:25 +08:00
6 changed files with 40 additions and 13 deletions

View File

@@ -112,8 +112,8 @@ const pmu_hp_system_power_param_t * pmu_hp_system_power_param_default(pmu_hp_mod
// TODO PM-208 // TODO PM-208
#define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \ #define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \
.icg_func = 0, \ .icg_func = BIT(PMU_ICG_FUNC_ENA_SARADC), \
.icg_apb = 0, \ .icg_apb = BIT(PMU_ICG_APB_ENA_SARADC), \
.icg_modem = { \ .icg_modem = { \
.code = PMU_HP_ICG_MODEM_CODE_MODEM \ .code = PMU_HP_ICG_MODEM_CODE_MODEM \
}, \ }, \

View File

@@ -116,8 +116,8 @@ const pmu_hp_system_power_param_t * pmu_hp_system_power_param_default(pmu_hp_mod
} }
#define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \ #define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \
.icg_func = 0, \ .icg_func = BIT(PMU_ICG_FUNC_ENA_SARADC), \
.icg_apb = 0, \ .icg_apb = BIT(PMU_ICG_APB_ENA_SARADC), \
.icg_modem = { \ .icg_modem = { \
.code = PMU_HP_ICG_MODEM_CODE_MODEM \ .code = PMU_HP_ICG_MODEM_CODE_MODEM \
}, \ }, \

View File

@@ -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() { \ #define PMU_HP_MODEM_CLOCK_CONFIG_DEFAULT() { \
.icg_func = 0, \ .icg_func = BIT(PMU_ICG_FUNC_ENA_SARADC), \
.icg_apb = 0, \ .icg_apb = BIT(PMU_ICG_APB_ENA_SARADC), \
.icg_modem = { \ .icg_modem = { \
.code = PMU_HP_ICG_MODEM_CODE_MODEM \ .code = PMU_HP_ICG_MODEM_CODE_MODEM \
}, \ }, \

View File

@@ -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 * SPDX-License-Identifier: Apache-2.0
*/ */
#pragma once #pragma once
#include "sdkconfig.h"
#include "esp_phy_init.h" #include "esp_phy_init.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -231,6 +232,16 @@ uint32_t phy_ana_i2c_master_burst_bbpll_config(void);
uint32_t phy_ana_i2c_master_burst_rf_onoff(bool on); uint32_t phy_ana_i2c_master_burst_rf_onoff(bool on);
#endif #endif
#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 #ifdef __cplusplus
} }
#endif #endif

View File

@@ -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 * SPDX-License-Identifier: Apache-2.0
*/ */
#include <stdint.h> #include <stdint.h>
#include <string.h> #include <string.h>
#include "sdkconfig.h"
#include "esp_timer.h" #include "esp_timer.h"
#include "esp_log.h" #include "esp_log.h"
#include "esp_private/esp_gpio_reserve.h" #include "esp_private/esp_gpio_reserve.h"
@@ -17,6 +18,10 @@
#include "esp_phy.h" #include "esp_phy.h"
#include "esp_attr.h" #include "esp_attr.h"
#if SOC_TEMP_SENSOR_SUPPORTED && CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP
#include "hal/temperature_sensor_ll.h"
#endif
static const char* TAG = "phy_comm"; static const char* TAG = "phy_comm";
static volatile uint16_t s_phy_modem_flag = 0; static volatile uint16_t s_phy_modem_flag = 0;
@@ -347,4 +352,13 @@ uint32_t phy_ana_i2c_master_burst_rf_onoff(bool on)
return phy_ana_i2c_master_burst_config(cmd, size, on ? PHY_I2C_MST_CMD_TYPE_RF_ON : PHY_I2C_MST_CMD_TYPE_RF_OFF); return phy_ana_i2c_master_burst_config(cmd, size, on ? PHY_I2C_MST_CMD_TYPE_RF_ON : PHY_I2C_MST_CMD_TYPE_RF_OFF);
} }
#if CONFIG_ESP_WIFI_ENHANCED_LIGHT_SLEEP
void phy_wakeup_from_modem_state_extra_init(void)
{
#if SOC_TEMP_SENSOR_SUPPORTED
temperature_sensor_ll_enable(true);
#endif
}
#endif
#endif #endif

View File

@@ -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 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -312,6 +312,8 @@ void esp_phy_enable(esp_phy_modem_t modem)
} else { } else {
phy_wakeup_init(); phy_wakeup_init();
} }
} else {
phy_wakeup_from_modem_state_extra_init();
} }
#else #else
phy_wakeup_init(); phy_wakeup_init();
@@ -335,10 +337,10 @@ void esp_phy_enable(esp_phy_modem_t modem)
phy_track_pll_init(); phy_track_pll_init();
#endif #endif
if (phy_ant_need_update()) { if (phy_ant_need_update()) {
phy_ant_update(); phy_ant_update();
phy_ant_clr_update_flag(); phy_ant_clr_update_flag();
} }
} }
phy_set_modem_flag(modem); phy_set_modem_flag(modem);