1# Bluetooth drivers configuration options 2 3# Copyright (c) 2016 Intel Corporation 4# SPDX-License-Identifier: Apache-2.0 5 6comment "Bluetooth HCI Driver Options" 7 8config BT_UART 9 bool 10 select SERIAL 11 select UART_INTERRUPT_DRIVEN 12 13config BT_H4 14 bool "H:4 UART" 15 select BT_UART 16 default y 17 depends on DT_HAS_ZEPHYR_BT_HCI_UART_ENABLED 18 help 19 Bluetooth H:4 UART driver. Requires hardware flow control 20 lines to be available. 21 22config BT_H5 23 bool "H:5 UART [EXPERIMENTAL]" 24 select BT_UART 25 select EXPERIMENTAL 26 default y 27 depends on DT_HAS_ZEPHYR_BT_HCI_3WIRE_UART_ENABLED 28 help 29 Bluetooth three-wire (H:5) UART driver. Implementation of HCI 30 Three-Wire UART Transport Layer. 31 32config BT_HCI_IPC 33 bool 34 default y 35 depends on DT_HAS_ZEPHYR_BT_HCI_IPC_ENABLED 36 select BT_HAS_HCI_VS 37 select IPC_SERVICE 38 select MBOX 39 help 40 Bluetooth HCI driver for communication with another CPU 41 using the IPC subsystem. 42 43config BT_HCI_IPC_SEND_RETRY_COUNT 44 int "HCI IPC send retry count" 45 depends on BT_HCI_IPC 46 default 3 47 help 48 Number of times to retry sending a message via IPC. 49 The retries occur in case of a failure to send a message 50 through IPC (-ENOMEM returned by ipc_service_send). 51 52config BT_HCI_IPC_SEND_RETRY_DELAY_US 53 int "HCI IPC send retry delay (us)" 54 depends on BT_HCI_IPC 55 default 75 56 help 57 Delay in microseconds between retries when sending a message via IPC. 58 When a single tick (CONFIG_SYS_CLOCK_TICKS_PER_SEC) is bigger then 59 the retry delay the k_busy_wait function is used. Set with care. 60 61config BT_HCI_IPC_ENDPOINT_BOUND_TIMEOUT_MS 62 int "HCI IPC binding timeout value in milliseconds" 63 depends on BT_HCI_IPC 64 default 2000 65 help 66 Timeout value that HCI will wait for an IPC endpoint to be bound, 67 in milliseconds. 68 69config BT_SPI 70 bool 71 select SPI 72 help 73 Supports Bluetooth ICs using SPI as the communication protocol. 74 HCI packets are sent and received as single Byte transfers, 75 prepended after a known header. Headers may vary per device, so 76 additional platform specific knowledge may need to be added as 77 devices are. 78 79config BT_SPI_INIT_PRIORITY 80 int "BT SPI init priority" 81 depends on BT_SPI 82 default 75 83 84config BT_SPI_ZEPHYR 85 bool 86 default y 87 depends on DT_HAS_ZEPHYR_BT_HCI_SPI_ENABLED 88 select BT_SPI 89 help 90 Bluetooth HCI over SPI driver for communication with Bluetooth 91 controllers running Zephyr. 92 93config BT_SPI_BLUENRG 94 bool 95 default y 96 depends on DT_HAS_ST_HCI_SPI_V1_ENABLED || DT_HAS_ST_HCI_SPI_V2_ENABLED 97 select BT_SPI 98 help 99 Bluetooth HCI over SPI driver for communication with 100 STMicroelectronics BlueNRG devices. 101 102config BT_BLUENRG_ACI 103 bool "ACI message with BlueNRG-based devices" 104 depends on BT_SPI_BLUENRG 105 select BT_HCI_SET_PUBLIC_ADDR 106 help 107 Enable support for devices compatible with the BlueNRG Bluetooth 108 Stack. Current driver supports: ST BLUENRG-MS. 109 110config BT_STM32_IPM 111 bool 112 default y 113 depends on DT_HAS_ST_STM32WB_RF_ENABLED 114 select USE_STM32_HAL_CORTEX 115 select HAS_STM32LIB 116 select BT_HCI_SETUP 117 help 118 TODO 119 120config BT_STM32WBA 121 bool 122 default y 123 depends on DT_HAS_ST_HCI_STM32WBA_ENABLED 124 depends on ZEPHYR_HAL_STM32_MODULE_BLOBS 125 select HAS_STM32LIB 126 select BT_HCI_SET_PUBLIC_ADDR if !BT_HCI_RAW 127 help 128 ST STM32WBA HCI Bluetooth interface 129 130config BT_STM32WB0 131 bool "STM32WB0 HCI driver" 132 default y 133 depends on DT_HAS_ST_HCI_STM32WB0_ENABLED 134 depends on ZEPHYR_HAL_STM32_MODULE_BLOBS 135 select HAS_STM32LIB 136 select USE_STM32_HAL_PKA 137 select USE_STM32_HAL_CORTEX 138 select USE_STM32_HAL_GPIO 139 select USE_STM32_HAL_RADIO 140 select USE_STM32_HAL_RADIO_TIMER 141 help 142 ST STM32WB0 HCI Bluetooth interface 143 144config BT_SILABS_EFR32 145 bool "Silabs EFR32 HCI driver" 146 default y 147 depends on DT_HAS_SILABS_BT_HCI_EFR32_ENABLED 148 depends on ZEPHYR_HAL_SILABS_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS 149 depends on !PM || SOC_GECKO_PM_BACKEND_PMGR 150 select SOC_GECKO_USE_RAIL 151 select MBEDTLS 152 select MBEDTLS_PSA_CRYPTO_C 153 select MBEDTLS_ENTROPY_C 154 select HAS_BT_CTLR 155 select BT_CTLR_PHY_UPDATE_SUPPORT 156 select BT_CTLR_PER_INIT_FEAT_XCHG_SUPPORT 157 select BT_CTLR_DATA_LEN_UPDATE_SUPPORT 158 select BT_CTLR_EXT_REJ_IND_SUPPORT 159 select BT_CTLR_CHAN_SEL_2_SUPPORT 160 select BT_CTLR_CONN_RSSI_SUPPORT 161 select BT_CTLR_ADV_EXT_SUPPORT 162 help 163 Use Silicon Labs binary Bluetooth library to connect to the 164 controller. 165 166source "drivers/bluetooth/hci/Kconfig.silabs" 167 168config BT_SILABS_SIWX91X 169 bool "Silabs SiWx91x Bluetooth interface" 170 default y 171 depends on DT_HAS_SILABS_SIWX91X_BT_HCI_ENABLED 172 select WISECONNECT_NETWORK_STACK 173 select ENTROPY_GENERATOR 174 help 175 Use Silicon Labs Wiseconnect 3.x Bluetooth library to connect to the controller. 176 177 # SiWx917 BLE controller currently does not support HCI Command: Host Number of Completed Packets 178 configdefault BT_HCI_ACL_FLOW_CONTROL 179 default n if BT_SILABS_SIWX91X 180 181config BT_USERCHAN 182 bool 183 depends on BOARD_NATIVE_SIM 184 default y 185 depends on DT_HAS_ZEPHYR_BT_HCI_USERCHAN_ENABLED 186 select NATIVE_USE_NSI_ERRNO 187 help 188 This driver provides access to the local Linux host's Bluetooth 189 adapter using a User Channel HCI socket to the Linux kernel. It 190 is only intended to be used with the native_sim[//64] build of Zephyr. 191 The Bluetooth adapter must be powered off in order for Zephyr to 192 be able to use it. 193 194config BT_ESP32 195 bool 196 default y 197 depends on DT_HAS_ESPRESSIF_ESP32_BT_HCI_ENABLED 198 depends on ZEPHYR_HAL_ESPRESSIF_MODULE_BLOBS || BUILD_ONLY_NO_BLOBS 199 select HAS_BT_CTLR 200 select BT_CTLR_ADV_EXT_SUPPORT if SOC_SERIES_ESP32S3 || SOC_SERIES_ESP32C3 201 help 202 Espressif HCI bluetooth interface 203 204config BT_PSOC6_BLESS 205 bool 206 default y 207 depends on DT_HAS_INFINEON_CAT1_BLESS_HCI_ENABLED 208 depends on ZEPHYR_HAL_INFINEON_MODULE_BLOBS 209 select BT_HCI_SETUP 210 help 211 PSOC 6 BLESS driver with BLE Controller which operates in 212 Single CPU mode. 213 214config BT_DA1453X 215 bool "DA1453x HCI driver" 216 default y 217 depends on DT_HAS_RENESAS_BT_HCI_DA1453X_ENABLED 218 select GPIO 219 help 220 Bluetooth HCI driver for communication with controller 221 running on DA1453x MCU. 222 223config BT_DA1469X 224 bool 225 default y 226 depends on DT_HAS_RENESAS_BT_HCI_DA1469X_ENABLED 227 help 228 Bluetooth HCI driver for communication with CMAC core 229 on DA1469x MCU. 230 231config BT_NXP 232 bool 233 default y 234 depends on DT_HAS_NXP_HCI_BLE_ENABLED 235 select BT_HCI_SETUP 236 help 237 NXP HCI bluetooth interface 238 239config BT_CYW208XX 240 bool 241 default y 242 depends on DT_HAS_INFINEON_CYW208XX_HCI_ENABLED 243 select BT_HCI_SET_PUBLIC_ADDR 244 help 245 Infineon CYW208XX HCI bluetooth interface 246 247config BT_AMBIQ_HCI 248 bool 249 default y 250 depends on DT_HAS_AMBIQ_BT_HCI_SPI_ENABLED 251 select SPI 252 select GPIO if SOC_SERIES_APOLLO4X 253 select CLOCK_CONTROL if SOC_SERIES_APOLLO4X 254 select BT_HCI_SETUP 255 select AMBIQ_COMPONENT_USE_BT 256 help 257 Supports Ambiq Bluetooth SoC using SPI as the communication protocol. 258 HCI packets are sent and received as single Byte transfers. 259 260config BT_HCI_INIT_PRIORITY 261 int "BT HCI init priority" 262 default 75 if BT_AMBIQ_HCI 263 default KERNEL_INIT_PRIORITY_DEVICE 264 help 265 The priority of BT HCI driver initialization. 266 267config BT_STM32_IPM_RX_STACK_SIZE 268 int "STM32 IPM stack size for RX thread" 269 depends on BT_STM32_IPM 270 default 512 271 272config BT_AIROC 273 bool "AIROC BT connectivity" 274 default y 275 select GPIO if BT_H4 276 select UART if BT_H4 277 select UART_USE_RUNTIME_CONFIGURE if BT_H4 278 select BT_HCI_SETUP 279 select USE_INFINEON_ABSTRACTION_RTOS if BT_CYW208XX 280 select EVENTS if BT_CYW208XX 281 depends on DT_HAS_INFINEON_CYW43XXX_BT_HCI_ENABLED || DT_HAS_INFINEON_CYW208XX_HCI_ENABLED 282 help 283 Infineon's AIROC™ Wi-Fi & combos portfolio integrates 284 IEEE 802.11a/b/g/n/ac/ax Wi-Fi and Bluetooth® 5.2 in a single-chip 285 solution to enable small-form-factor IoT designs. 286source "drivers/bluetooth/hci/Kconfig.esp32" 287source "drivers/bluetooth/hci/Kconfig.infineon" 288source "drivers/bluetooth/hci/Kconfig.nxp" 289 290config BT_DRIVER_QUIRK_NO_AUTO_DLE 291 bool "Host auto-initiated Data Length Update quirk" 292 depends on BT_AUTO_DATA_LEN_UPDATE 293 default y if BT_HCI_IPC || BT_ESP32 294 help 295 Enable the quirk wherein BT Host stack will auto-initiate Data Length 296 Update procedure for new connections for controllers that do not 297 auto-initiate the procedure if the default data length parameters are 298 not equal to the initial parameters. 299 300 This has to be enabled when the BLE controller connected is Zephyr 301 open source controller. 302 303config BT_HCI_SET_PUBLIC_ADDR 304 bool 305 select BT_HCI_SETUP 306 help 307 Pass the controller's public address to the HCI driver in setup() 308 309 This option should be enabled by drivers for controllers that support setting the 310 public identity through vendor-specific commands. They can then implement the 311 setup() HCI driver API function and get the address to set from the public_addr field. 312 313 From the application side, the public address is set using the first call to 314 bt_id_create(), before calling bt_enable(). 315 316config BT_HCI_SETUP 317 bool 318 help 319 Enable the HCI vendor-specific Setup function. 320 321 This option has to be enabled when the BT Controller requires execution 322 of the vendor-specific commands sequence to initialize the BT Controller 323 before the BT Host executes a Reset sequence. 324 325 The user should generally avoid changing it via menuconfig or in 326 configuration files. This option are enabled by the vendor-specific 327 HCI extension, where the Setup function is implemented. 328 329config BT_DRV_TX_STACK_SIZE 330 int 331 default 256 332 help 333 Stack size for the HCI driver's TX thread. 334 335config BT_DRV_RX_STACK_SIZE 336 int 337 default 640 if (BT_SPI || BT_AMBIQ_HCI) 338 default BT_RX_STACK_SIZE if (BT_H4 || BT_HCI_RAW_H4) 339 default BT_STM32_IPM_RX_STACK_SIZE if BT_STM32_IPM 340 default HCI_NXP_RX_STACK_SIZE if HCI_NXP_RX_THREAD 341 default 512 342 help 343 Stack size for the HCI driver's RX thread. 344 345config BT_H4_NXP_CTLR 346 bool "NXP Bluetooth Controller" 347 select GPIO 348 depends on BT_H4 349 select CRC 350 select BT_HCI_SETUP 351 default y 352 depends on DT_HAS_NXP_BT_HCI_UART_ENABLED 353 help 354 Enables support for NXP Bluetooth Controller. 355 More inforamtion about NXP Bluetooth profuct could be found on 356 https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4:WIFI-BLUETOOTH 357 358if BT_H4_NXP_CTLR 359 360config BT_H4_NXP_CTLR_WAIT_HDR_SIG_TIMEOUT 361 int "Timeout for waiting HDR Signure" 362 range 1000 60000 363 default 2500 364 help 365 Timeout for waiting HDR Signure. Unit is millisecond. 366 367config BT_H4_NXP_CTLR_WAIT_TIME_AFTER_UPLOAD 368 int "Waiting time after firmware is uploaded" 369 range 1000 5000 370 default 1000 371 help 372 Waiting time after firmware is uploaded. Unit is millisecond. 373 374config BT_H4_NXP_CTLR_WAIT_TIME_AFTER_BAUDRATE_UPDATE 375 int "Waiting time after controller baudrate is updated" 376 range 500 5000 377 default 500 378 help 379 Waiting time after controller baudrate is updated. Unit is millisecond. 380 381endif #BT_H4_NXP_CTLR 382