From 6602cfa760b4c1ea3d5e05c635cd2236a9d217fe Mon Sep 17 00:00:00 2001 From: Armando Date: Fri, 9 Jun 2023 20:26:37 +0800 Subject: [PATCH] phy: fix phy pwdet and tsens power cannot be set twice issue Closes https://github.com/espressif/esp-idf/issues/11627 --- components/esp_phy/src/phy_override.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 {