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 32# Removed: Here only to give the user a warning about its removal 33# Remove after 3.7.0 is released 34config BT_RPMSG 35 bool "[REMOVED] HCI using RPMsg" 36 help 37 Use BT_HCI_IPC instead 38 39config BT_HCI_IPC 40 bool "HCI using the IPC subsystem" 41 default y 42 depends on DT_HAS_ZEPHYR_BT_HCI_IPC_ENABLED 43 select BT_HAS_HCI_VS 44 select IPC_SERVICE 45 select MBOX 46 help 47 Bluetooth HCI driver for communication with another CPU 48 using the IPC subsystem. 49 50config BT_SPI 51 bool "SPI HCI" 52 select SPI 53 help 54 Supports Bluetooth ICs using SPI as the communication protocol. 55 HCI packets are sent and received as single Byte transfers, 56 prepended after a known header. Headers may vary per device, so 57 additional platform specific knowledge may need to be added as 58 devices are. 59 60config BT_STM32_IPM 61 bool "IPM HCI" 62 default y 63 depends on DT_HAS_ST_STM32WB_RF_ENABLED 64 select USE_STM32_HAL_CORTEX 65 select HAS_STM32LIB 66 help 67 TODO 68 69config BT_STM32WBA 70 bool "STM32WBA HCI driver" 71 default y 72 depends on DT_HAS_ST_HCI_STM32WBA_ENABLED 73 select HAS_STM32LIB 74 select BT_HCI_SET_PUBLIC_ADDR 75 help 76 ST STM32WBA HCI Bluetooth interface 77 78config BT_SILABS_HCI 79 bool "Silicon Labs Bluetooth interface" 80 default y 81 depends on DT_HAS_SILABS_BT_HCI_ENABLED 82 depends on !PM || SOC_GECKO_PM_BACKEND_PMGR 83 select SOC_GECKO_USE_RAIL 84 select ENTROPY_GENERATOR 85 select MBEDTLS 86 select MBEDTLS_PSA_CRYPTO_C 87 select MBEDTLS_ENTROPY_ENABLED 88 select MBEDTLS_ZEPHYR_ENTROPY 89 help 90 Use Silicon Labs binary Bluetooth library to connect to the 91 controller. 92 93config BT_USERCHAN 94 bool "HCI User Channel based driver" 95 depends on BOARD_NATIVE_POSIX 96 default y 97 depends on DT_HAS_ZEPHYR_BT_HCI_USERCHAN_ENABLED 98 help 99 This driver provides access to the local Linux host's Bluetooth 100 adapter using a User Channel HCI socket to the Linux kernel. It 101 is only intended to be used with the native POSIX build of Zephyr. 102 The Bluetooth adapter must be powered off in order for Zephyr to 103 be able to use it. 104 105config BT_ESP32 106 bool "ESP32 HCI driver" 107 default y 108 depends on DT_HAS_ESPRESSIF_ESP32_BT_HCI_ENABLED 109 help 110 Espressif HCI bluetooth interface 111 112config BT_PSOC6_BLESS 113 bool "PSOC6 BLESS driver" 114 default y 115 depends on DT_HAS_INFINEON_CAT1_BLESS_HCI_ENABLED 116 select BT_HCI_SETUP 117 help 118 PSOC6 BLESS driver with BLE Controller which operates in 119 Single CPU mode. 120 121config BT_DA1469X 122 bool "DA1469x HCI driver" 123 default y 124 depends on DT_HAS_RENESAS_BT_HCI_DA1469X_ENABLED 125 help 126 Bluetooth HCI driver for communication with CMAC core 127 on DA1469x MCU. 128 129config BT_NXP 130 bool "NXP HCI driver" 131 default y 132 depends on DT_HAS_NXP_HCI_BLE_ENABLED 133 select BT_HCI_SETUP 134 help 135 NXP HCI bluetooth interface 136 137config BT_CYW208XX 138 bool "CYW208XX BLE driver" 139 default y 140 depends on DT_HAS_INFINEON_CYW208XX_HCI_ENABLED 141 help 142 Infineon CYW208XX HCI bluetooth interface 143 144config BT_AMBIQ_HCI 145 bool "AMBIQ BT HCI driver" 146 default y 147 depends on DT_HAS_AMBIQ_BT_HCI_SPI_ENABLED 148 select SPI 149 select GPIO if SOC_SERIES_APOLLO4X 150 select CLOCK_CONTROL if SOC_SERIES_APOLLO4X 151 select BT_HCI_SETUP 152 help 153 Supports Ambiq Bluetooth SoC using SPI as the communication protocol. 154 HCI packets are sent and received as single Byte transfers. 155 156 157if BT_SPI 158 159config BT_SPI_INIT_PRIORITY 160 int "BT SPI init priority" 161 default 75 162 163config BT_BLUENRG_ACI 164 bool "ACI message with BlueNRG-based devices" 165 select BT_HCI_SET_PUBLIC_ADDR 166 help 167 Enable support for devices compatible with the BlueNRG Bluetooth 168 Stack. Current driver supports: ST BLUENRG-MS. 169 170endif # BT_SPI 171 172config BT_HCI_INIT_PRIORITY 173 int "BT HCI init priority" 174 default 75 if BT_AMBIQ_HCI 175 default KERNEL_INIT_PRIORITY_DEVICE 176 help 177 The priority of BT HCI driver initialization. 178 179config BT_STM32_IPM_RX_STACK_SIZE 180 int "STM32 IPM stack size for RX thread" 181 depends on BT_STM32_IPM 182 default 512 183 184menuconfig BT_AIROC 185 bool "AIROC BT connectivity" 186 default y 187 select GPIO if BT_H4 188 select UART if BT_H4 189 select UART_USE_RUNTIME_CONFIGURE if BT_H4 190 select BT_HCI_SETUP 191 select USE_INFINEON_ABSTRACTION_RTOS if BT_CYW208XX 192 select EVENTS if BT_CYW208XX 193 depends on DT_HAS_INFINEON_CYW43XXX_BT_HCI_ENABLED || DT_HAS_INFINEON_CYW208XX_HCI_ENABLED 194 help 195 Infineon's AIROC™ Wi-Fi & combos portfolio integrates 196 IEEE 802.11a/b/g/n/ac/ax Wi-Fi and Bluetooth® 5.2 in a single-chip 197 solution to enable small-form-factor IoT designs. 198source "drivers/bluetooth/hci/Kconfig.infineon" 199source "drivers/bluetooth/hci/Kconfig.nxp" 200 201config BT_DRIVER_QUIRK_NO_AUTO_DLE 202 bool "Host auto-initiated Data Length Update quirk" 203 depends on BT_AUTO_DATA_LEN_UPDATE 204 default y if BT_HCI_IPC || BT_ESP32 205 help 206 Enable the quirk wherein BT Host stack will auto-initiate Data Length 207 Update procedure for new connections for controllers that do not 208 auto-initiate the procedure if the default data length parameters are 209 not equal to the initial parameters. 210 211 This has to be enabled when the BLE controller connected is Zephyr 212 open source controller. 213 214config BT_HCI_SET_PUBLIC_ADDR 215 bool 216 select BT_HCI_SETUP 217 help 218 Pass the controller's public address to the HCI driver in setup() 219 220 This option should be enabled by drivers for controllers that support setting the 221 public identity through vendor-specific commands. They can then implement the 222 setup() HCI driver API function and get the address to set from the public_addr field. 223 224 From the application side, the public address is set using the first call to 225 bt_id_create(), before calling bt_enable(). 226 227config BT_HCI_SETUP 228 bool 229 help 230 Enable the HCI vendor-specific Setup function. 231 232 This option has to be enabled when the BT Controller requires execution 233 of the vendor-specific commands sequence to initialize the BT Controller 234 before the BT Host executes a Reset sequence. 235 236 The user should generally avoid changing it via menuconfig or in 237 configuration files. This option are enabled by the vendor-specific 238 HCI extension, where the Setup function is implemented. 239 240config BT_DRV_TX_STACK_SIZE 241 int 242 default 256 243 help 244 Stack size for the HCI driver's TX thread. 245 246config BT_DRV_RX_STACK_SIZE 247 int 248 default 640 if (BT_SPI || BT_AMBIQ_HCI) 249 default BT_RX_STACK_SIZE if (BT_H4 || BT_HCI_RAW_H4) 250 default BT_STM32_IPM_RX_STACK_SIZE if BT_STM32_IPM 251 default 256 252 help 253 Stack size for the HCI driver's RX thread. 254 255config BT_SILABS_HCI_BUFFER_MEMORY 256 int "Silicon Labs Bluetooth Library memory buffer size" 257 depends on BT_SILABS_HCI 258 default 6144 259 help 260 Select the size of allocated memory buffer for the Silicon Labs 261 Bluetooth Library. 262 263config BT_H4_NXP_CTLR 264 bool "NXP Bluetooth Controller" 265 select GPIO 266 depends on BT_H4 267 select CRC 268 default y 269 depends on DT_HAS_NXP_BT_HCI_UART_ENABLED 270 help 271 Enables support for NXP Bluetooth Controller. 272 More inforamtion about NXP Bluetooth profuct could be found on 273 https://www.nxp.com/products/wireless-connectivity/wi-fi-plus-bluetooth-plus-802-15-4:WIFI-BLUETOOTH 274 275if BT_H4_NXP_CTLR 276 277config BT_H4_NXP_CTLR_WAIT_HDR_SIG_TIMEOUT 278 int "Timeout for waiting HDR Signure" 279 range 1000 60000 280 default 2500 281 help 282 Timeout for waiting HDR Signure. Unit is millisecond. 283 284config BT_H4_NXP_CTLR_WAIT_TIME_AFTER_UPLOAD 285 int "Waiting time after firmware is uploaded" 286 range 1000 5000 287 default 1000 288 help 289 Waiting time after firmware is uploaded. Unit is millisecond. 290 291endif #BT_H4_NXP_CTLR 292