kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'bugfix/bcn_timeout_with_power_down' into 'master'
components/coex: Fix bcn timeout with MAC BB power down See merge request espressif/esp-idf!12285pull/7261/head
commit
919e674f6e
|
@ -63,7 +63,7 @@ static uint8_t s_phy_access_ref = 0;
|
||||||
|
|
||||||
#if CONFIG_MAC_BB_PD
|
#if CONFIG_MAC_BB_PD
|
||||||
/* Reference of powering down MAC and BB */
|
/* Reference of powering down MAC and BB */
|
||||||
static uint8_t s_mac_bb_pd_ref = 0;
|
static bool s_mac_bb_pu = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_IDF_TARGET_ESP32
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
@ -271,7 +271,7 @@ void esp_mac_bb_pd_mem_init(void)
|
||||||
|
|
||||||
IRAM_ATTR void esp_mac_bb_power_up(void)
|
IRAM_ATTR void esp_mac_bb_power_up(void)
|
||||||
{
|
{
|
||||||
if (s_mac_bb_pd_mem != NULL && s_mac_bb_pd_ref == 0) {
|
if (s_mac_bb_pd_mem != NULL && (!s_mac_bb_pu)) {
|
||||||
esp_phy_common_clock_enable();
|
esp_phy_common_clock_enable();
|
||||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PD);
|
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PD);
|
||||||
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_BB_RST | SYSTEM_FE_RST);
|
SET_PERI_REG_MASK(SYSCON_WIFI_RST_EN_REG, SYSTEM_BB_RST | SYSTEM_FE_RST);
|
||||||
|
@ -279,23 +279,19 @@ IRAM_ATTR void esp_mac_bb_power_up(void)
|
||||||
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_ISO);
|
CLEAR_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_ISO);
|
||||||
phy_freq_mem_backup(false, s_mac_bb_pd_mem);
|
phy_freq_mem_backup(false, s_mac_bb_pd_mem);
|
||||||
esp_phy_common_clock_disable();
|
esp_phy_common_clock_disable();
|
||||||
|
s_mac_bb_pu = true;
|
||||||
}
|
}
|
||||||
s_mac_bb_pd_ref++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
IRAM_ATTR void esp_mac_bb_power_down(void)
|
IRAM_ATTR void esp_mac_bb_power_down(void)
|
||||||
{
|
{
|
||||||
if (s_mac_bb_pd_ref == 0) {
|
if (s_mac_bb_pd_mem != NULL && s_mac_bb_pu) {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
s_mac_bb_pd_ref--;
|
|
||||||
if (s_mac_bb_pd_mem != NULL && s_mac_bb_pd_ref == 0) {
|
|
||||||
esp_phy_common_clock_enable();
|
esp_phy_common_clock_enable();
|
||||||
phy_freq_mem_backup(true, s_mac_bb_pd_mem);
|
phy_freq_mem_backup(true, s_mac_bb_pd_mem);
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_ISO);
|
SET_PERI_REG_MASK(RTC_CNTL_DIG_ISO_REG, RTC_CNTL_WIFI_FORCE_ISO);
|
||||||
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PD);
|
SET_PERI_REG_MASK(RTC_CNTL_DIG_PWC_REG, RTC_CNTL_WIFI_FORCE_PD);
|
||||||
esp_phy_common_clock_disable();
|
esp_phy_common_clock_disable();
|
||||||
|
s_mac_bb_pu = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Ładowanie…
Reference in New Issue