silabs: drivers: bluetooth: Move configurations to Kconfig
Several driver setting were as defines in driver file which made hard to change by application programmers. Fixed by adding silicon labs specific Kconfig file for bluetooth driver configurations. Also some cleaning for handling Kconfig conditional to conform preferred style. Signed-off-by: Petri Pitkanen <petri.pitkanen@silabs.com>
This commit is contained in:
parent
c235e1cadd
commit
5748738c60
3 changed files with 73 additions and 29 deletions
|
@ -116,7 +116,7 @@ config BT_STM32WB0
|
|||
ST STM32WB0 HCI Bluetooth interface
|
||||
|
||||
config BT_SILABS_EFR32
|
||||
bool
|
||||
bool "Silabs EFR32 HCI driver"
|
||||
default y
|
||||
depends on DT_HAS_SILABS_BT_HCI_EFR32_ENABLED
|
||||
depends on ZEPHYR_HAL_SILABS_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS
|
||||
|
@ -136,6 +136,7 @@ config BT_SILABS_EFR32
|
|||
help
|
||||
Use Silicon Labs binary Bluetooth library to connect to the
|
||||
controller.
|
||||
source "drivers/bluetooth/hci/Kconfig.silabs"
|
||||
|
||||
config BT_USERCHAN
|
||||
bool
|
||||
|
@ -297,14 +298,6 @@ config BT_DRV_RX_STACK_SIZE
|
|||
help
|
||||
Stack size for the HCI driver's RX thread.
|
||||
|
||||
config BT_SILABS_EFR32_BUFFER_MEMORY
|
||||
int "Silicon Labs Bluetooth Library memory buffer size"
|
||||
depends on BT_SILABS_EFR32
|
||||
default 6144
|
||||
help
|
||||
Select the size of allocated memory buffer for the Silicon Labs
|
||||
Bluetooth Library.
|
||||
|
||||
config BT_H4_NXP_CTLR
|
||||
bool "NXP Bluetooth Controller"
|
||||
select GPIO
|
||||
|
|
44
drivers/bluetooth/hci/Kconfig.silabs
Normal file
44
drivers/bluetooth/hci/Kconfig.silabs
Normal file
|
@ -0,0 +1,44 @@
|
|||
# Copyright (c) 2025 Silicon Laboratories Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
menu "EFR32 Bluetooth Controller Configuration"
|
||||
depends on BT_SILABS_EFR32
|
||||
|
||||
config BT_SILABS_EFR32_BUFFER_MEMORY
|
||||
int "Memory buffer size"
|
||||
default 6144
|
||||
help
|
||||
Select the size of allocated memory buffer for the Silicon Labs
|
||||
Bluetooth Library. If set too low the capacity of the link layer may
|
||||
suffer.
|
||||
|
||||
config BT_SILABS_EFR32_USER_ADVERTISERS
|
||||
int "User advertisement sets"
|
||||
default 0
|
||||
help
|
||||
Amount of advertisement sets reserved for application.
|
||||
|
||||
config BT_SILABS_EFR32_ACCEPT_LIST_SIZE
|
||||
int "Accept list size"
|
||||
default 1
|
||||
help
|
||||
Accept list size.
|
||||
|
||||
config BT_SILABS_EFR32_COMPLETED_PACKETS_THRESHOLD
|
||||
int "Completed packet reporting threshold"
|
||||
default 1
|
||||
help
|
||||
Completed packet reporting threshold value.
|
||||
|
||||
config BT_SILABS_EFR32_COMPLETED_PACKETS_TIMEOUT
|
||||
int "Completed packet report event timeout"
|
||||
default 3
|
||||
help
|
||||
Completed packet report event timeout.
|
||||
|
||||
config BT_SILABS_EFR32_ACCEPT_LINK_LAYER_STACK_SIZE
|
||||
int "Link layer stack size"
|
||||
default 1024
|
||||
help
|
||||
Link layer stack size.
|
||||
endmenu
|
|
@ -21,16 +21,19 @@ struct hci_data {
|
|||
bt_hci_recv_t recv;
|
||||
};
|
||||
|
||||
#define SL_BT_CONFIG_ACCEPT_LIST_SIZE 1
|
||||
#define SL_BT_CONFIG_MAX_CONNECTIONS 1
|
||||
#define SL_BT_CONFIG_USER_ADVERTISERS 1
|
||||
#define SL_BT_CONTROLLER_BUFFER_MEMORY CONFIG_BT_SILABS_EFR32_BUFFER_MEMORY
|
||||
#define SL_BT_CONTROLLER_LE_BUFFER_SIZE_MAX CONFIG_BT_BUF_ACL_TX_COUNT
|
||||
#define SL_BT_CONTROLLER_COMPLETED_PACKETS_THRESHOLD 1
|
||||
#define SL_BT_CONTROLLER_COMPLETED_PACKETS_EVENTS_TIMEOUT 3
|
||||
#define SL_BT_SILABS_LL_STACK_SIZE 1024
|
||||
#if defined(CONFIG_BT_MAX_CONN)
|
||||
#define MAX_CONN CONFIG_BT_MAX_CONN
|
||||
#else
|
||||
#define MAX_CONN 0
|
||||
#endif
|
||||
|
||||
static K_KERNEL_STACK_DEFINE(slz_ll_stack, SL_BT_SILABS_LL_STACK_SIZE);
|
||||
#if defined(CONFIG_BT_CTLR_RL_SIZE)
|
||||
#define CTLR_RL_SIZE CONFIG_BT_CTLR_RL_SIZE
|
||||
#else
|
||||
#define CTLR_RL_SIZE 0
|
||||
#endif
|
||||
|
||||
static K_KERNEL_STACK_DEFINE(slz_ll_stack, CONFIG_BT_SILABS_EFR32_ACCEPT_LINK_LAYER_STACK_SIZE);
|
||||
static struct k_thread slz_ll_thread;
|
||||
|
||||
/* Semaphore for Link Layer */
|
||||
|
@ -172,13 +175,18 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
|
|||
sl_btctrl_disable_coded_phy();
|
||||
|
||||
/* sl_btctrl_init_mem returns the number of memory buffers allocated */
|
||||
ret = sl_btctrl_init_mem(SL_BT_CONTROLLER_BUFFER_MEMORY);
|
||||
ret = sl_btctrl_init_mem(CONFIG_BT_SILABS_EFR32_BUFFER_MEMORY);
|
||||
if (!ret) {
|
||||
LOG_ERR("Failed to allocate memory %d", ret);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
sl_btctrl_configure_le_buffer_size(SL_BT_CONTROLLER_LE_BUFFER_SIZE_MAX);
|
||||
sl_btctrl_configure_le_buffer_size(CONFIG_BT_BUF_ACL_TX_COUNT);
|
||||
|
||||
if (IS_ENABLED(CONFIG_BT_CTLR_PRIVACY)) {
|
||||
sl_btctrl_allocate_resolving_list_memory(CTLR_RL_SIZE);
|
||||
sl_btctrl_init_privacy();
|
||||
}
|
||||
|
||||
ret = sl_btctrl_init_ll();
|
||||
if (ret) {
|
||||
|
@ -206,17 +214,18 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
|
|||
}
|
||||
}
|
||||
|
||||
ret = sl_btctrl_init_basic(SL_BT_CONFIG_MAX_CONNECTIONS,
|
||||
SL_BT_CONFIG_USER_ADVERTISERS,
|
||||
SL_BT_CONFIG_ACCEPT_LIST_SIZE);
|
||||
ret = sl_btctrl_init_basic(MAX_CONN, CONFIG_BT_SILABS_EFR32_USER_ADVERTISERS,
|
||||
CONFIG_BT_SILABS_EFR32_ACCEPT_LIST_SIZE);
|
||||
if (ret) {
|
||||
LOG_ERR("Failed to initialize the controller %d", ret);
|
||||
goto deinit;
|
||||
}
|
||||
|
||||
sl_btctrl_configure_completed_packets_reporting(
|
||||
SL_BT_CONTROLLER_COMPLETED_PACKETS_THRESHOLD,
|
||||
SL_BT_CONTROLLER_COMPLETED_PACKETS_EVENTS_TIMEOUT);
|
||||
if (IS_ENABLED(CONFIG_BT_CONN)) {
|
||||
sl_btctrl_configure_completed_packets_reporting(
|
||||
CONFIG_BT_SILABS_EFR32_COMPLETED_PACKETS_THRESHOLD,
|
||||
CONFIG_BT_SILABS_EFR32_COMPLETED_PACKETS_TIMEOUT);
|
||||
}
|
||||
|
||||
sl_bthci_init_upper();
|
||||
sl_btctrl_hci_parser_init_default();
|
||||
|
@ -228,8 +237,7 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
|
|||
}
|
||||
sl_btctrl_hci_parser_init_phy();
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_PM)) {
|
||||
RAIL_ConfigSleep(BTLE_LL_GetRadioHandle(), RAIL_SLEEP_CONFIG_TIMERSYNC_ENABLED);
|
||||
RAIL_Status_t status = RAIL_InitPowerManager();
|
||||
|
||||
|
@ -240,7 +248,6 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
|
|||
goto deinit;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
hci->recv = recv;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue