Merge branch 'bugfix/some_changes_relating_to_phy_v3900' into 'master'
esp32: some changes relating to phy v3900 See merge request idf/esp-idf!2421
This commit is contained in:
commit
b19afed31f
3 changed files with 17 additions and 3 deletions
|
@ -37,7 +37,9 @@ typedef struct {
|
||||||
* @brief Opaque PHY calibration data
|
* @brief Opaque PHY calibration data
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t opaque[1904]; /*!< calibration data */
|
uint8_t version[4]; /*!< PHY version */
|
||||||
|
uint8_t mac[6]; /*!< The MAC address of the station */
|
||||||
|
uint8_t opaque[1894]; /*!< calibration data */
|
||||||
} esp_phy_calibration_data_t;
|
} esp_phy_calibration_data_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define ESP_CAL_DATA_CHECK_FAIL 1
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file phy.h
|
* @file phy.h
|
||||||
* @brief Declarations for functions provided by libphy.a
|
* @brief Declarations for functions provided by libphy.a
|
||||||
|
@ -34,7 +36,7 @@ void phy_get_romfunc_addr(void);
|
||||||
* @param[in] init_data Initialization parameters to be used by the PHY
|
* @param[in] init_data Initialization parameters to be used by the PHY
|
||||||
* @param[inout] cal_data As input, calibration data previously obtained. As output, will contain new calibration data.
|
* @param[inout] cal_data As input, calibration data previously obtained. As output, will contain new calibration data.
|
||||||
* @param[in] cal_mode RF calibration mode
|
* @param[in] cal_mode RF calibration mode
|
||||||
* @return reserved for future use
|
* @return ESP_CAL_DATA_CHECK_FAIL if calibration data checksum fails, other values are reserved for future use
|
||||||
*/
|
*/
|
||||||
int register_chipv7_phy(const esp_phy_init_data_t* init_data, esp_phy_calibration_data_t *cal_data, esp_phy_calibration_mode_t cal_mode);
|
int register_chipv7_phy(const esp_phy_init_data_t* init_data, esp_phy_calibration_data_t *cal_data, esp_phy_calibration_mode_t cal_mode);
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,16 @@ esp_err_t esp_phy_rf_init(const esp_phy_init_data_t* init_data, esp_phy_calibrat
|
||||||
// Enable WiFi/BT common peripheral clock
|
// Enable WiFi/BT common peripheral clock
|
||||||
periph_module_enable(PERIPH_WIFI_BT_COMMON_MODULE);
|
periph_module_enable(PERIPH_WIFI_BT_COMMON_MODULE);
|
||||||
phy_set_wifi_mode_only(0);
|
phy_set_wifi_mode_only(0);
|
||||||
register_chipv7_phy(init_data, calibration_data, mode);
|
|
||||||
|
if (ESP_CAL_DATA_CHECK_FAIL == register_chipv7_phy(init_data, calibration_data, mode)) {
|
||||||
|
ESP_LOGW(TAG, "saving new calibration data because of checksum failure, mode(%d)", mode);
|
||||||
|
#ifdef CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE
|
||||||
|
if (mode != PHY_RF_CAL_FULL) {
|
||||||
|
esp_phy_store_cal_data_to_nvs(calibration_data);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
coex_bt_high_prio();
|
coex_bt_high_prio();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -476,6 +485,7 @@ static esp_err_t load_cal_data_from_nvs_handle(nvs_handle handle,
|
||||||
ESP_LOGD(TAG, "%s: invalid length of cal_data (%d)", __func__, length);
|
ESP_LOGD(TAG, "%s: invalid length of cal_data (%d)", __func__, length);
|
||||||
return ESP_ERR_INVALID_SIZE;
|
return ESP_ERR_INVALID_SIZE;
|
||||||
}
|
}
|
||||||
|
memcpy(out_cal_data->mac, sta_mac, 6);
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue