Skip to content

Commit 5748738

Browse files
petrip-slabkartben
authored andcommitted
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 <[email protected]>
1 parent c235e1c commit 5748738

File tree

3 files changed

+74
-30
lines changed

3 files changed

+74
-30
lines changed

drivers/bluetooth/hci/Kconfig

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ config BT_STM32WB0
116116
ST STM32WB0 HCI Bluetooth interface
117117

118118
config BT_SILABS_EFR32
119-
bool
119+
bool "Silabs EFR32 HCI driver"
120120
default y
121121
depends on DT_HAS_SILABS_BT_HCI_EFR32_ENABLED
122122
depends on ZEPHYR_HAL_SILABS_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS
@@ -136,6 +136,7 @@ config BT_SILABS_EFR32
136136
help
137137
Use Silicon Labs binary Bluetooth library to connect to the
138138
controller.
139+
source "drivers/bluetooth/hci/Kconfig.silabs"
139140

140141
config BT_USERCHAN
141142
bool
@@ -297,14 +298,6 @@ config BT_DRV_RX_STACK_SIZE
297298
help
298299
Stack size for the HCI driver's RX thread.
299300

300-
config BT_SILABS_EFR32_BUFFER_MEMORY
301-
int "Silicon Labs Bluetooth Library memory buffer size"
302-
depends on BT_SILABS_EFR32
303-
default 6144
304-
help
305-
Select the size of allocated memory buffer for the Silicon Labs
306-
Bluetooth Library.
307-
308301
config BT_H4_NXP_CTLR
309302
bool "NXP Bluetooth Controller"
310303
select GPIO
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Copyright (c) 2025 Silicon Laboratories Inc.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
menu "EFR32 Bluetooth Controller Configuration"
5+
depends on BT_SILABS_EFR32
6+
7+
config BT_SILABS_EFR32_BUFFER_MEMORY
8+
int "Memory buffer size"
9+
default 6144
10+
help
11+
Select the size of allocated memory buffer for the Silicon Labs
12+
Bluetooth Library. If set too low the capacity of the link layer may
13+
suffer.
14+
15+
config BT_SILABS_EFR32_USER_ADVERTISERS
16+
int "User advertisement sets"
17+
default 0
18+
help
19+
Amount of advertisement sets reserved for application.
20+
21+
config BT_SILABS_EFR32_ACCEPT_LIST_SIZE
22+
int "Accept list size"
23+
default 1
24+
help
25+
Accept list size.
26+
27+
config BT_SILABS_EFR32_COMPLETED_PACKETS_THRESHOLD
28+
int "Completed packet reporting threshold"
29+
default 1
30+
help
31+
Completed packet reporting threshold value.
32+
33+
config BT_SILABS_EFR32_COMPLETED_PACKETS_TIMEOUT
34+
int "Completed packet report event timeout"
35+
default 3
36+
help
37+
Completed packet report event timeout.
38+
39+
config BT_SILABS_EFR32_ACCEPT_LINK_LAYER_STACK_SIZE
40+
int "Link layer stack size"
41+
default 1024
42+
help
43+
Link layer stack size.
44+
endmenu

drivers/bluetooth/hci/hci_silabs_efr32.c

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,19 @@ struct hci_data {
2121
bt_hci_recv_t recv;
2222
};
2323

24-
#define SL_BT_CONFIG_ACCEPT_LIST_SIZE 1
25-
#define SL_BT_CONFIG_MAX_CONNECTIONS 1
26-
#define SL_BT_CONFIG_USER_ADVERTISERS 1
27-
#define SL_BT_CONTROLLER_BUFFER_MEMORY CONFIG_BT_SILABS_EFR32_BUFFER_MEMORY
28-
#define SL_BT_CONTROLLER_LE_BUFFER_SIZE_MAX CONFIG_BT_BUF_ACL_TX_COUNT
29-
#define SL_BT_CONTROLLER_COMPLETED_PACKETS_THRESHOLD 1
30-
#define SL_BT_CONTROLLER_COMPLETED_PACKETS_EVENTS_TIMEOUT 3
31-
#define SL_BT_SILABS_LL_STACK_SIZE 1024
32-
33-
static K_KERNEL_STACK_DEFINE(slz_ll_stack, SL_BT_SILABS_LL_STACK_SIZE);
24+
#if defined(CONFIG_BT_MAX_CONN)
25+
#define MAX_CONN CONFIG_BT_MAX_CONN
26+
#else
27+
#define MAX_CONN 0
28+
#endif
29+
30+
#if defined(CONFIG_BT_CTLR_RL_SIZE)
31+
#define CTLR_RL_SIZE CONFIG_BT_CTLR_RL_SIZE
32+
#else
33+
#define CTLR_RL_SIZE 0
34+
#endif
35+
36+
static K_KERNEL_STACK_DEFINE(slz_ll_stack, CONFIG_BT_SILABS_EFR32_ACCEPT_LINK_LAYER_STACK_SIZE);
3437
static struct k_thread slz_ll_thread;
3538

3639
/* Semaphore for Link Layer */
@@ -172,13 +175,18 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
172175
sl_btctrl_disable_coded_phy();
173176

174177
/* sl_btctrl_init_mem returns the number of memory buffers allocated */
175-
ret = sl_btctrl_init_mem(SL_BT_CONTROLLER_BUFFER_MEMORY);
178+
ret = sl_btctrl_init_mem(CONFIG_BT_SILABS_EFR32_BUFFER_MEMORY);
176179
if (!ret) {
177180
LOG_ERR("Failed to allocate memory %d", ret);
178181
return -ENOMEM;
179182
}
180183

181-
sl_btctrl_configure_le_buffer_size(SL_BT_CONTROLLER_LE_BUFFER_SIZE_MAX);
184+
sl_btctrl_configure_le_buffer_size(CONFIG_BT_BUF_ACL_TX_COUNT);
185+
186+
if (IS_ENABLED(CONFIG_BT_CTLR_PRIVACY)) {
187+
sl_btctrl_allocate_resolving_list_memory(CTLR_RL_SIZE);
188+
sl_btctrl_init_privacy();
189+
}
182190

183191
ret = sl_btctrl_init_ll();
184192
if (ret) {
@@ -206,17 +214,18 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
206214
}
207215
}
208216

209-
ret = sl_btctrl_init_basic(SL_BT_CONFIG_MAX_CONNECTIONS,
210-
SL_BT_CONFIG_USER_ADVERTISERS,
211-
SL_BT_CONFIG_ACCEPT_LIST_SIZE);
217+
ret = sl_btctrl_init_basic(MAX_CONN, CONFIG_BT_SILABS_EFR32_USER_ADVERTISERS,
218+
CONFIG_BT_SILABS_EFR32_ACCEPT_LIST_SIZE);
212219
if (ret) {
213220
LOG_ERR("Failed to initialize the controller %d", ret);
214221
goto deinit;
215222
}
216223

217-
sl_btctrl_configure_completed_packets_reporting(
218-
SL_BT_CONTROLLER_COMPLETED_PACKETS_THRESHOLD,
219-
SL_BT_CONTROLLER_COMPLETED_PACKETS_EVENTS_TIMEOUT);
224+
if (IS_ENABLED(CONFIG_BT_CONN)) {
225+
sl_btctrl_configure_completed_packets_reporting(
226+
CONFIG_BT_SILABS_EFR32_COMPLETED_PACKETS_THRESHOLD,
227+
CONFIG_BT_SILABS_EFR32_COMPLETED_PACKETS_TIMEOUT);
228+
}
220229

221230
sl_bthci_init_upper();
222231
sl_btctrl_hci_parser_init_default();
@@ -228,8 +237,7 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
228237
}
229238
sl_btctrl_hci_parser_init_phy();
230239

231-
#ifdef CONFIG_PM
232-
{
240+
if (IS_ENABLED(CONFIG_PM)) {
233241
RAIL_ConfigSleep(BTLE_LL_GetRadioHandle(), RAIL_SLEEP_CONFIG_TIMERSYNC_ENABLED);
234242
RAIL_Status_t status = RAIL_InitPowerManager();
235243

@@ -240,7 +248,6 @@ static int slz_bt_open(const struct device *dev, bt_hci_recv_t recv)
240248
goto deinit;
241249
}
242250
}
243-
#endif
244251

245252
hci->recv = recv;
246253

0 commit comments

Comments
 (0)