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