Merge branch 'bugfix/phy_init_failed_when_wifi_deinit_4.4' into 'release/v4.4'

esp_wifi:bugfix for phy init failed when wifi deinit(4.4)

See merge request espressif/esp-idf!19137
This commit is contained in:
Jiang Jiang Jian 2022-07-25 10:52:28 +08:00
commit 47b6a8c85a

View File

@ -52,6 +52,8 @@ static DRAM_ATTR struct {
/* Indicate PHY is calibrated or not */ /* Indicate PHY is calibrated or not */
static bool s_is_phy_calibrated = false; static bool s_is_phy_calibrated = false;
static bool s_is_phy_reg_stored = false;
/* Reference count of enabling PHY */ /* Reference count of enabling PHY */
static uint8_t s_phy_access_ref = 0; static uint8_t s_phy_access_ref = 0;
@ -206,12 +208,13 @@ static inline void phy_digital_regs_store(void)
{ {
if (s_phy_digital_regs_mem != NULL) { if (s_phy_digital_regs_mem != NULL) {
phy_dig_reg_backup(true, s_phy_digital_regs_mem); phy_dig_reg_backup(true, s_phy_digital_regs_mem);
s_is_phy_reg_stored = true;
} }
} }
static inline void phy_digital_regs_load(void) 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); phy_dig_reg_backup(false, s_phy_digital_regs_mem);
} }
} }
@ -314,7 +317,7 @@ void esp_phy_pd_mem_deinit(void)
s_phy_backup_mem_ref--; s_phy_backup_mem_ref--;
if (s_phy_backup_mem_ref == 0) { if (s_phy_backup_mem_ref == 0) {
s_is_phy_calibrated = false; s_is_phy_reg_stored = false;
free(s_phy_digital_regs_mem); free(s_phy_digital_regs_mem);
s_phy_digital_regs_mem = NULL; s_phy_digital_regs_mem = NULL;
} }