Merge branch 'bugfix/unify_btbb_init' into 'master'

esp_phy: added API esp_btbb_disable

See merge request espressif/esp-idf!22806
This commit is contained in:
Jiang Jiang Jian
2023-03-23 20:34:03 +08:00
6 changed files with 30 additions and 9 deletions

View File

@@ -67,7 +67,6 @@
#define ACL_DATA_MBUF_LEADINGSPCAE 4
#endif // CONFIG_BT_BLUEDROID_ENABLED
#define PHY_ENABLE_VERSION_PRINT (1)
/* Types definition
************************************************************************
@@ -120,7 +119,6 @@ extern int esp_ble_ll_set_public_addr(const uint8_t *addr);
extern int esp_register_npl_funcs (struct npl_funcs_t *p_npl_func);
extern void esp_unregister_npl_funcs (void);
extern void npl_freertos_mempool_deinit(void);
extern void bt_bb_v2_init_cmplx(uint8_t i);
extern int os_msys_buf_alloc(void);
extern uint32_t r_os_cputime_get32(void);
extern uint32_t r_os_cputime_ticks_to_usecs(uint32_t ticks);
@@ -631,7 +629,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
modem_clock_select_lp_clock_source(PERIPH_BT_MODULE, MODEM_CLOCK_LPCLK_SRC_MAIN_XTAL, 249);
esp_phy_modem_init();
esp_phy_enable();
bt_bb_v2_init_cmplx(PHY_ENABLE_VERSION_PRINT);
esp_btbb_enable();
s_ble_active = true;
if (ble_osi_coex_funcs_register((struct osi_coex_funcs_t *)&s_osi_coex_funcs_ro) != 0) {
@@ -669,6 +667,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
free_controller:
controller_sleep_deinit();
ble_controller_deinit();
esp_btbb_disable();
esp_phy_disable();
esp_phy_modem_deinit();
modem_clock_deselect_lp_clock_source(PERIPH_BT_MODULE);
@@ -695,6 +694,8 @@ esp_err_t esp_bt_controller_deinit(void)
controller_sleep_deinit();
esp_btbb_disable();
if (s_ble_active) {
esp_phy_disable();
s_ble_active = false;

View File

@@ -67,7 +67,6 @@
#define ACL_DATA_MBUF_LEADINGSPCAE 4
#endif // CONFIG_BT_BLUEDROID_ENABLED
#define PHY_ENABLE_VERSION_PRINT (1)
/* Types definition
************************************************************************
@@ -120,7 +119,6 @@ extern int esp_ble_ll_set_public_addr(const uint8_t *addr);
extern int esp_register_npl_funcs (struct npl_funcs_t *p_npl_func);
extern void esp_unregister_npl_funcs (void);
extern void npl_freertos_mempool_deinit(void);
extern void bt_bb_v2_init_cmplx(uint8_t i);
extern int os_msys_buf_alloc(void);
extern uint32_t r_os_cputime_get32(void);
extern uint32_t r_os_cputime_ticks_to_usecs(uint32_t ticks);
@@ -659,6 +657,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
// modem_clock_select_lp_clock_source(PERIPH_BT_MODULE, MODEM_CLOCK_LPCLK_SRC_MAIN_XTAL, 249);
// esp_phy_modem_init();
esp_phy_enable();
esp_btbb_enable();
s_ble_active = true;
if (ble_osi_coex_funcs_register((struct osi_coex_funcs_t *)&s_osi_coex_funcs_ro) != 0) {
@@ -696,6 +695,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
free_controller:
controller_sleep_deinit();
ble_controller_deinit();
esp_btbb_disable();
esp_phy_disable();
// esp_phy_modem_deinit();
// modem_clock_deselect_lp_clock_source(PERIPH_BT_MODULE);
@@ -722,6 +722,8 @@ esp_err_t esp_bt_controller_deinit(void)
controller_sleep_deinit();
esp_btbb_disable();
if (s_ble_active) {
esp_phy_disable();
s_ble_active = false;

View File

@@ -123,7 +123,6 @@ extern int esp_ble_ll_set_public_addr(const uint8_t *addr);
extern int esp_register_npl_funcs (struct npl_funcs_t *p_npl_func);
extern void esp_unregister_npl_funcs (void);
extern void npl_freertos_mempool_deinit(void);
extern void bt_bb_v2_init_cmplx(uint8_t i);
extern int os_msys_buf_alloc(void);
extern uint32_t r_os_cputime_get32(void);
extern uint32_t r_os_cputime_ticks_to_usecs(uint32_t ticks);
@@ -641,6 +640,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
// init phy
esp_phy_enable();
esp_btbb_enable();
s_ble_active = true;
// set bb delay
bt_bb_set_le_tx_on_delay(50);
@@ -681,6 +681,7 @@ esp_err_t esp_bt_controller_init(esp_bt_controller_config_t *cfg)
free_controller:
controller_sleep_deinit();
ble_controller_deinit();
esp_btbb_disable();
esp_phy_disable();
#if CONFIG_BT_NIMBLE_ENABLED
ble_npl_eventq_deinit(nimble_port_get_dflt_eventq());
@@ -703,6 +704,8 @@ esp_err_t esp_bt_controller_deinit(void)
controller_sleep_deinit();
esp_btbb_disable();
if (s_ble_active) {
esp_phy_disable();
s_ble_active = false;
@@ -725,8 +728,6 @@ esp_err_t esp_bt_controller_deinit(void)
npl_freertos_mempool_deinit();
esp_phy_disable();
ble_controller_status = ESP_BT_CONTROLLER_STATUS_IDLE;
return ESP_OK;

View File

@@ -180,6 +180,15 @@ void esp_phy_disable(void);
*/
void esp_btbb_enable(void);
/**
* @brief Disable BTBB module
*
* Dsiable BTBB module, used by IEEE802154 or Bluetooth.
* Users should not call this API in their application.
*
*/
void esp_btbb_disable(void);
/**
* @brief Load calibration data from NVS and initialize PHY and RF module
*/

View File

@@ -23,3 +23,12 @@ void esp_btbb_enable(void)
s_btbb_access_ref++;
_lock_release(&s_btbb_access_lock);
}
void esp_btbb_disable(void)
{
_lock_acquire(&s_btbb_access_lock);
if (s_btbb_access_ref > 0) {
s_btbb_access_ref--;
}
_lock_release(&s_btbb_access_lock);
}

View File

@@ -48,7 +48,6 @@ void esp_phy_enable(void)
_lock_acquire(&s_phy_access_lock);
if (s_phy_access_ref == 0) {
register_chipv7_phy(NULL, NULL, PHY_RF_CAL_FULL);
bt_bb_v2_init_cmplx(PHY_ENABLE_VERSION_PRINT);
phy_version_print();
}