feat(phy): add a config for pll track feature

This commit is contained in:
Zhangwx
2025-06-13 12:17:49 +08:00
committed by BOT
parent 9c4aa443b0
commit 5deab445d3
4 changed files with 35 additions and 4 deletions
+5 -1
View File
@@ -26,6 +26,7 @@ static const char* TAG = "phy_comm";
static volatile uint16_t s_phy_modem_flag = 0;
#if !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
extern void phy_param_track_tot(bool en_wifi, bool en_ble_154);
static esp_timer_handle_t phy_track_pll_timer;
#if CONFIG_ESP_WIFI_ENABLED
@@ -34,8 +35,9 @@ static volatile int64_t s_wifi_prev_timestamp;
#if CONFIG_IEEE802154_ENABLED || CONFIG_BT_ENABLED
static volatile int64_t s_bt_154_prev_timestamp;
#endif
#define PHY_TRACK_PLL_PERIOD_IN_US 1000000
#define PHY_TRACK_PLL_PERIOD_IN_US (CONFIG_ESP_PHY_PLL_TRACK_PERIOD_MS * 1000)
static void phy_track_pll_internal(void);
#endif
static esp_phy_ant_gpio_config_t s_phy_ant_gpio_config = { 0 };
static esp_phy_ant_config_t s_phy_ant_config = { 0 };
@@ -47,6 +49,7 @@ bool phy_enabled_modem_contains(esp_phy_modem_t modem)
}
#endif
#if !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
void phy_track_pll(void)
{
// Light sleep scenario: enabling and disabling PHY frequently, the timer will not get triggered.
@@ -121,6 +124,7 @@ void phy_track_pll_deinit(void)
ESP_ERROR_CHECK(esp_timer_stop(phy_track_pll_timer));
ESP_ERROR_CHECK(esp_timer_delete(phy_track_pll_timer));
}
#endif
void phy_set_modem_flag(esp_phy_modem_t modem)
{
+3 -3
View File
@@ -329,7 +329,7 @@ void esp_phy_enable(esp_phy_modem_t modem)
#endif
// ESP32 will track pll in the wifi/BT modem interrupt handler.
#if !CONFIG_IDF_TARGET_ESP32
#if !CONFIG_IDF_TARGET_ESP32 && !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
phy_track_pll_init();
#endif
@@ -340,7 +340,7 @@ void esp_phy_enable(esp_phy_modem_t modem)
}
phy_set_modem_flag(modem);
#if !CONFIG_IDF_TARGET_ESP32
#if !CONFIG_IDF_TARGET_ESP32 && !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
// Immediately track pll when phy enabled.
phy_track_pll();
#endif
@@ -360,7 +360,7 @@ void esp_phy_disable(esp_phy_modem_t modem)
phy_clr_modem_flag(modem);
if (phy_get_modem_flag() == 0) {
// ESP32 will track pll in the wifi/BT modem interrupt handler.
#if !CONFIG_IDF_TARGET_ESP32
#if !CONFIG_IDF_TARGET_ESP32 && !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
phy_track_pll_deinit();
#endif
#if SOC_PM_MODEM_RETENTION_BY_BACKUPDMA
@@ -113,11 +113,15 @@ void esp_phy_enable(esp_phy_modem_t modem)
} else {
phy_wakeup_init();
}
#if !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
phy_track_pll_init();
#endif
}
phy_set_modem_flag(modem);
// Immediately track pll when phy enabled.
#if !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
phy_track_pll();
#endif
#if CONFIG_ESP_PHY_RECORD_USED_TIME
phy_record_time(true, modem);
#endif
@@ -133,7 +137,9 @@ void esp_phy_disable(esp_phy_modem_t modem)
phy_clr_modem_flag(modem);
if (phy_get_modem_flag() == 0) {
#if !CONFIG_ESP_PHY_DISABLE_PLL_TRACK
phy_track_pll_deinit();
#endif
phy_close_rf();
phy_xpd_tsens();
#if SOC_MODEM_CLOCK_IS_INDEPENDENT