Skip to content

Commit

Permalink
Merge branch 'bugfix/reset_mac_cause_bt_cannot_rx_data' into 'master'
Browse files Browse the repository at this point in the history
Reset WIFI mac when wifi start and update wifi lib

1. reset wifi mac when wifi start

2. roll back rx hung workaround for beacon timeout

3. fix amsdu ap interface wrong issue

4. fix amsdu header parse error

5. fix amsdu flag wrong issue

6. PHY: V350, fix BT rssi bug

7. RTC: V225, fix bt will be not work when wifi is reset

See merge request !606
  • Loading branch information
jack0c committed Mar 24, 2017
2 parents 5cf9ccf + a30c98c commit 8ee6f82
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 15 deletions.
2 changes: 1 addition & 1 deletion components/esp32/component.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 1 addition & 2 deletions components/esp32/include/esp_phy_init.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions components/esp32/ld/esp32.common.ld
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,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.*)
Expand Down
2 changes: 1 addition & 1 deletion components/esp32/lib
14 changes: 3 additions & 11 deletions components/esp32/phy_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -293,7 +285,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);
Expand All @@ -303,7 +295,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
}

Expand Down

0 comments on commit 8ee6f82

Please sign in to comment.