From b4d11d00ca211401c9d4d8fff559cf4777406198 Mon Sep 17 00:00:00 2001 From: xueyunfei Date: Wed, 20 Jul 2022 14:15:43 +0800 Subject: [PATCH] bugfix for phy init failed when wifi deinit --- components/esp_phy/src/phy_init.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/esp_phy/src/phy_init.c b/components/esp_phy/src/phy_init.c index a7aeaab436..4ecd516833 100644 --- a/components/esp_phy/src/phy_init.c +++ b/components/esp_phy/src/phy_init.c @@ -59,6 +59,8 @@ static DRAM_ATTR struct { /* Indicate PHY is calibrated or not */ static bool s_is_phy_calibrated = false; +static bool s_is_phy_reg_stored = false; + /* Reference count of enabling PHY */ static uint8_t s_phy_access_ref = 0; @@ -213,12 +215,13 @@ static inline void phy_digital_regs_store(void) { if (s_phy_digital_regs_mem != NULL) { phy_dig_reg_backup(true, s_phy_digital_regs_mem); + s_is_phy_reg_stored = true; } } static inline void phy_digital_regs_load(void) { - if (s_phy_digital_regs_mem != NULL) { + if (s_is_phy_reg_stored && s_phy_digital_regs_mem != NULL) { phy_dig_reg_backup(false, s_phy_digital_regs_mem); } } @@ -325,7 +328,7 @@ void esp_phy_pd_mem_deinit(void) s_phy_backup_mem_ref--; if (s_phy_backup_mem_ref == 0) { - s_is_phy_calibrated = false; + s_is_phy_reg_stored = false; free(s_phy_digital_regs_mem); s_phy_digital_regs_mem = NULL; }