diff --git a/components/esp_phy/src/phy_override.c b/components/esp_phy/src/phy_override.c index 3f746411d6..f374b36f1c 100644 --- a/components/esp_phy/src/phy_override.c +++ b/components/esp_phy/src/phy_override.c @@ -18,6 +18,8 @@ */ static bool s_wifi_adc_xpd_flag; +static bool s_wifi_pwdet_xpd_flag; +static bool s_wifi_tsens_xpd_flag; void include_esp_phy_override(void) { @@ -55,6 +57,12 @@ IRAM_ATTR void phy_i2c_exit_critical(void) void phy_set_pwdet_power(bool en) { + if (s_wifi_pwdet_xpd_flag == en) { + /* ignore repeated calls to phy_set_pwdet_power when the state is already correct */ + return; + } + + s_wifi_pwdet_xpd_flag = en; if (en) { sar_periph_ctrl_pwdet_power_acquire(); } else { @@ -64,6 +72,12 @@ void phy_set_pwdet_power(bool en) void phy_set_tsens_power(bool en) { + if (s_wifi_tsens_xpd_flag == en) { + /* ignore repeated calls to phy_set_tsens_power when the state is already correct */ + return; + } + + s_wifi_tsens_xpd_flag = en; if (en) { temperature_sensor_power_acquire(); } else {