Merge branch 'feat/reduce_usage_of_iram_when_bt_in_single_mode_v5.1' into 'release/v5.1'

change(bt/bluedroid): Redirect app functions in controller based on the bluetooth mode(backport v5.1)

See merge request espressif/esp-idf!29305
This commit is contained in:
Jiang Jiang Jian 2024-03-05 10:48:17 +08:00
commit 2d2bfc1962
2 changed files with 21 additions and 2 deletions

View File

@ -89,7 +89,7 @@ do{\
} while(0) } while(0)
#define OSI_FUNCS_TIME_BLOCKING 0xffffffff #define OSI_FUNCS_TIME_BLOCKING 0xffffffff
#define OSI_VERSION 0x00010004 #define OSI_VERSION 0x00010005
#define OSI_MAGIC_VALUE 0xFADEBEAD #define OSI_MAGIC_VALUE 0xFADEBEAD
/* Types definition /* Types definition
@ -176,6 +176,7 @@ struct osi_funcs_t {
void (*_interrupt_l3_restore)(void); void (*_interrupt_l3_restore)(void);
void *(* _customer_queue_create)(uint32_t queue_len, uint32_t item_size); void *(* _customer_queue_create)(uint32_t queue_len, uint32_t item_size);
int (* _coex_version_get)(unsigned int *major, unsigned int *minor, unsigned int *patch); int (* _coex_version_get)(unsigned int *major, unsigned int *minor, unsigned int *patch);
void (* _patch_apply)(void);
uint32_t _magic; uint32_t _magic;
}; };
@ -243,6 +244,10 @@ extern uint32_t _nimble_data_end;
extern uint32_t _btdm_data_start; extern uint32_t _btdm_data_start;
extern uint32_t _btdm_data_end; extern uint32_t _btdm_data_end;
extern void config_bt_funcs_reset(void);
extern void config_ble_funcs_reset(void);
extern void config_btdm_funcs_reset(void);
/* Local Function Declare /* Local Function Declare
********************************************************************* *********************************************************************
*/ */
@ -315,6 +320,7 @@ static void *customer_queue_create_hlevel_wrapper(uint32_t queue_len, uint32_t i
static void interrupt_l3_disable(void); static void interrupt_l3_disable(void);
static void interrupt_l3_restore(void); static void interrupt_l3_restore(void);
static void bt_controller_deinit_internal(void); static void bt_controller_deinit_internal(void);
static void patch_apply(void);
/* Local variable definition /* Local variable definition
*************************************************************************** ***************************************************************************
@ -402,6 +408,7 @@ static const struct osi_funcs_t osi_funcs_ro = {
._customer_queue_create = NULL, ._customer_queue_create = NULL,
#endif /* CONFIG_BTDM_CTRL_HLI */ #endif /* CONFIG_BTDM_CTRL_HLI */
._coex_version_get = coex_version_get_wrapper, ._coex_version_get = coex_version_get_wrapper,
._patch_apply = patch_apply,
._magic = OSI_MAGIC_VALUE, ._magic = OSI_MAGIC_VALUE,
}; };
@ -1643,6 +1650,18 @@ static void bt_shutdown(void)
return; return;
} }
static void patch_apply(void)
{
config_btdm_funcs_reset();
#ifndef CONFIG_BTDM_CTRL_MODE_BLE_ONLY
config_bt_funcs_reset();
#endif
#ifndef CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY
config_ble_funcs_reset();
#endif
}
esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode) esp_err_t esp_bt_controller_enable(esp_bt_mode_t mode)
{ {

@ -1 +1 @@
Subproject commit e43c9b121f7fac89b73c56077ede5901f64643cd Subproject commit e42401b2e3535811f2076c5188813273d2fa976d