diff --git a/components/esp32/component.mk b/components/esp32/component.mk index e7a88571f..ae0f331cd 100644 --- a/components/esp32/component.mk +++ b/components/esp32/component.mk @@ -3,7 +3,7 @@ # COMPONENT_SRCDIRS := . hwcrypto -LIBS := core rtc rtc_clk +LIBS := core rtc rtc_clk rtc_pm ifdef CONFIG_PHY_ENABLED # BT || WIFI LIBS += phy coexist endif diff --git a/components/esp32/include/esp_phy_init.h b/components/esp32/include/esp_phy_init.h index 9990957e2..347d8acac 100644 --- a/components/esp32/include/esp_phy_init.h +++ b/components/esp32/include/esp_phy_init.h @@ -232,12 +232,11 @@ esp_err_t esp_phy_store_cal_data_to_nvs(const esp_phy_calibration_data_t* cal_da * function. * @param mode Calibration mode (Full, partial, or no calibration) * @param[inout] calibration_data - * @param is_sleep WiFi wakes up from sleep or not * @return ESP_OK on success. * @return ESP_FAIL on fail. */ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, - esp_phy_calibration_mode_t mode, esp_phy_calibration_data_t* calibration_data, bool is_sleep); + esp_phy_calibration_mode_t mode, esp_phy_calibration_data_t* calibration_data); /** * @brief De-initialize PHY and RF module diff --git a/components/esp32/ld/esp32.common.ld b/components/esp32/ld/esp32.common.ld index bc28e5ca9..30fa04d1c 100644 --- a/components/esp32/ld/esp32.common.ld +++ b/components/esp32/ld/esp32.common.ld @@ -84,6 +84,7 @@ SECTIONS *libphy.a:(.literal .text .literal.* .text.*) *librtc.a:(.literal .text .literal.* .text.*) *librtc_clk.a:(.literal .text .literal.* .text.*) + *librtc_pm.a:(.literal .text .literal.* .text.*) *libpp.a:pp.o(.literal .text .literal.* .text.*) *libpp.a:lmac.o(.literal .text .literal.* .text.*) *libpp.a:wdev.o(.literal .text .literal.* .text.*) diff --git a/components/esp32/lib b/components/esp32/lib index c88869b1a..a5287f930 160000 --- a/components/esp32/lib +++ b/components/esp32/lib @@ -1 +1 @@ -Subproject commit c88869b1aca5a062d1ebc5e0199fd8720cb08710 +Subproject commit a5287f9300491b423ffd30ba83e4e1cec6f96125 diff --git a/components/esp32/phy_init.c b/components/esp32/phy_init.c index 5fbeeb7c8..fb1158916 100644 --- a/components/esp32/phy_init.c +++ b/components/esp32/phy_init.c @@ -41,24 +41,16 @@ static const char* TAG = "phy_init"; /* Count value to indicate if there is peripheral that has initialized PHY and RF */ static int s_phy_rf_init_count = 0; -static bool s_mac_rst_flag = false; static _lock_t s_phy_rf_init_lock; esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, - esp_phy_calibration_mode_t mode, esp_phy_calibration_data_t* calibration_data, bool is_sleep) + esp_phy_calibration_mode_t mode, esp_phy_calibration_data_t* calibration_data) { assert((s_phy_rf_init_count <= 1) && (s_phy_rf_init_count >= 0)); _lock_acquire(&s_phy_rf_init_lock); if (s_phy_rf_init_count == 0) { - if (is_sleep == false) { - if (s_mac_rst_flag == false) { - s_mac_rst_flag = true; - REG_SET_BIT(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST); - REG_CLR_BIT(DPORT_CORE_RST_EN_REG, DPORT_MAC_RST); - } - } // Enable WiFi peripheral clock SET_PERI_REG_MASK(DPORT_WIFI_CLK_EN_REG, DPORT_WIFI_CLK_WIFI_EN | DPORT_WIFI_CLK_RNG_EN); ESP_LOGV(TAG, "register_chipv7_phy, init_data=%p, cal_data=%p, mode=%d", @@ -289,7 +281,7 @@ void esp_phy_load_cal_and_init(void) calibration_mode = PHY_RF_CAL_FULL; } - esp_phy_rf_init(init_data, calibration_mode, cal_data, false); + esp_phy_rf_init(init_data, calibration_mode, cal_data); if (calibration_mode != PHY_RF_CAL_NONE && err != ESP_OK) { err = esp_phy_store_cal_data_to_nvs(cal_data); @@ -299,7 +291,7 @@ void esp_phy_load_cal_and_init(void) esp_phy_release_init_data(init_data); free(cal_data); // PHY maintains a copy of calibration data, so we can free this #else - esp_phy_rf_init(NULL, PHY_RF_CAL_NONE, NULL, false); + esp_phy_rf_init(NULL, PHY_RF_CAL_NONE, NULL); #endif }