xref: /linux/drivers/bluetooth/Kconfig (revision 4003c9e78778e93188a09d6043a74f7154449d43)
1# SPDX-License-Identifier: GPL-2.0
2
3menu "Bluetooth device drivers"
4	depends on BT
5
6config BT_INTEL
7	tristate
8	select REGMAP
9
10config BT_BCM
11	tristate
12	select FW_LOADER
13
14config BT_RTL
15	tristate
16	select FW_LOADER
17
18config BT_QCA
19	tristate
20	select FW_LOADER
21
22config BT_MTK
23	tristate
24	select FW_LOADER
25
26config BT_HCIBTUSB
27	tristate "HCI USB driver"
28	depends on USB
29	select BT_INTEL
30	help
31	  Bluetooth HCI USB driver.
32	  This driver is required if you want to use Bluetooth devices with
33	  USB interface.
34
35	  Say Y here to compile support for Bluetooth USB devices into the
36	  kernel or say M to compile it as module (btusb).
37
38config BT_HCIBTUSB_AUTOSUSPEND
39	bool "Enable USB autosuspend for Bluetooth USB devices by default"
40	depends on BT_HCIBTUSB
41	help
42	  Say Y here to enable USB autosuspend for Bluetooth USB devices by
43	  default.
44
45	  This can be overridden by passing btusb.enable_autosuspend=[y|n]
46	  on the kernel commandline.
47
48config BT_HCIBTUSB_POLL_SYNC
49	bool "Enable USB poll_sync for Bluetooth USB devices by default"
50	depends on BT_HCIBTUSB
51	default y
52	help
53	  poll_sync synchronizes the USB data and event endpoints by
54	  prioritizing the later.
55
56	  Say Y here to enable USB poll_sync for Bluetooth USB devices by
57	  default.
58
59config BT_HCIBTUSB_AUTO_ISOC_ALT
60	bool "Automatically adjust alternate setting for Isoc endpoints"
61	depends on BT_HCIBTUSB
62	default y if CHROME_PLATFORMS
63	help
64	  Say Y here to automatically adjusting the alternate setting for
65	  HCI_USER_CHANNEL whenever a SCO link is established.
66
67	  When enabled, btusb intercepts the HCI_EV_SYNC_CONN_COMPLETE packets
68	  and configures isoc endpoint alternate setting automatically when
69	  HCI_USER_CHANNEL is in use.
70
71config BT_HCIBTUSB_BCM
72	bool "Broadcom protocol support"
73	depends on BT_HCIBTUSB
74	select BT_BCM
75	default y
76	help
77	  The Broadcom protocol support enables firmware and patchram
78	  download support for Broadcom Bluetooth controllers.
79
80	  Say Y here to compile support for Broadcom protocol.
81
82config BT_HCIBTUSB_MTK
83	bool "MediaTek protocol support"
84	depends on BT_HCIBTUSB
85	select BT_MTK
86	default n
87	help
88	  The MediaTek protocol support enables firmware download
89	  support and chip initialization for MediaTek Bluetooth
90	  USB controllers.
91
92	  Say Y here to compile support for MediaTek protocol.
93
94config BT_HCIBTUSB_RTL
95	bool "Realtek protocol support"
96	depends on BT_HCIBTUSB
97	select BT_RTL
98	default y
99	help
100	  The Realtek protocol support enables firmware and configuration
101	  download support for Realtek Bluetooth controllers.
102
103	  Say Y here to compile support for Realtek protocol.
104
105config BT_HCIBTSDIO
106	tristate "HCI SDIO driver"
107	depends on MMC
108	help
109	  Bluetooth HCI SDIO driver.
110	  This driver is required if you want to use Bluetooth device with
111	  SDIO interface.
112
113	  Say Y here to compile support for Bluetooth SDIO devices into the
114	  kernel or say M to compile it as module (btsdio).
115
116config BT_HCIUART
117	tristate "HCI UART driver"
118	depends on SERIAL_DEV_BUS || !SERIAL_DEV_BUS
119	depends on NVMEM || !NVMEM
120	depends on POWER_SEQUENCING || !POWER_SEQUENCING
121	depends on TTY
122	help
123	  Bluetooth HCI UART driver.
124	  This driver is required if you want to use Bluetooth devices with
125	  serial port interface. You will also need this driver if you have
126	  UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card
127	  adapter and BrainBoxes Bluetooth PC Card.
128
129	  Say Y here to compile support for Bluetooth UART devices into the
130	  kernel or say M to compile it as module (hci_uart).
131
132config BT_HCIUART_SERDEV
133	bool
134	depends on SERIAL_DEV_BUS && BT_HCIUART
135	default y
136
137config BT_HCIUART_H4
138	bool "UART (H4) protocol support"
139	depends on BT_HCIUART
140	help
141	  UART (H4) is serial protocol for communication between Bluetooth
142	  device and host. This protocol is required for most Bluetooth devices
143	  with UART interface, including PCMCIA and CF cards.
144
145	  Say Y here to compile support for HCI UART (H4) protocol.
146
147config BT_HCIUART_NOKIA
148	tristate "UART Nokia H4+ protocol support"
149	depends on BT_HCIUART
150	depends on BT_HCIUART_SERDEV
151	depends on GPIOLIB
152	depends on PM
153	select BT_HCIUART_H4
154	select BT_BCM
155	help
156	  Nokia H4+ is serial protocol for communication between Bluetooth
157	  device and host. This protocol is required for Bluetooth devices
158	  with UART interface in Nokia devices.
159
160	  Say Y here to compile support for Nokia's H4+ protocol.
161
162config BT_HCIUART_BCSP
163	bool "BCSP protocol support"
164	depends on BT_HCIUART
165	select BITREVERSE
166	help
167	  BCSP (BlueCore Serial Protocol) is serial protocol for communication
168	  between Bluetooth device and host. This protocol is required for non
169	  USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and
170	  CF cards.
171
172	  Say Y here to compile support for HCI BCSP protocol.
173
174config BT_HCIUART_ATH3K
175	bool "Atheros AR300x serial support"
176	depends on BT_HCIUART
177	select BT_HCIUART_H4
178	help
179	  HCIATH3K (HCI Atheros AR300x) is a serial protocol for
180	  communication between host and Atheros AR300x Bluetooth devices.
181	  This protocol enables AR300x chips to be enabled with
182	  power management support.
183	  Enable this if you have Atheros AR300x serial Bluetooth device.
184
185	  Say Y here to compile support for HCI UART ATH3K protocol.
186
187config BT_HCIUART_LL
188	bool "HCILL protocol support"
189	depends on BT_HCIUART_SERDEV
190	select BT_HCIUART_H4
191	help
192	  HCILL (HCI Low Level) is a serial protocol for communication
193	  between Bluetooth device and host. This protocol is required for
194	  serial Bluetooth devices that are based on Texas Instruments'
195	  BRF chips.
196
197	  Say Y here to compile support for HCILL protocol.
198
199config BT_HCIUART_3WIRE
200	bool "Three-wire UART (H5) protocol support"
201	depends on BT_HCIUART
202	depends on BT_HCIUART_SERDEV
203	help
204	  The HCI Three-wire UART Transport Layer makes it possible to
205	  user the Bluetooth HCI over a serial port interface. The HCI
206	  Three-wire UART Transport Layer assumes that the UART
207	  communication may have bit errors, overrun errors or burst
208	  errors and thereby making CTS/RTS lines unnecessary.
209
210	  Say Y here to compile support for Three-wire UART protocol.
211
212config BT_HCIUART_INTEL
213	bool "Intel protocol support"
214	depends on BT_HCIUART
215	depends on GPIOLIB
216	select BT_HCIUART_H4
217	select BT_INTEL
218	help
219	  The Intel protocol support enables Bluetooth HCI over serial
220	  port interface for Intel Bluetooth controllers.
221
222	  Say Y here to compile support for Intel protocol.
223
224config BT_HCIUART_BCM
225	bool "Broadcom protocol support"
226	depends on BT_HCIUART
227	depends on BT_HCIUART_SERDEV
228	depends on (!ACPI || SERIAL_DEV_CTRL_TTYPORT)
229	depends on GPIOLIB
230	select BT_HCIUART_H4
231	select BT_BCM
232	help
233	  The Broadcom protocol support enables Bluetooth HCI over serial
234	  port interface for Broadcom Bluetooth controllers.
235
236	  Say Y here to compile support for Broadcom protocol.
237
238config BT_HCIUART_RTL
239	bool "Realtek protocol support"
240	depends on BT_HCIUART
241	depends on BT_HCIUART_SERDEV
242	depends on GPIOLIB
243	depends on (ACPI || SERIAL_DEV_CTRL_TTYPORT)
244	select BT_HCIUART_3WIRE
245	select BT_RTL
246	help
247	  The Realtek protocol support enables Bluetooth HCI over 3-Wire
248	  serial port interface for Realtek Bluetooth controllers.
249
250	  Say Y here to compile support for Realtek protocol.
251
252config BT_HCIUART_QCA
253	bool "Qualcomm Atheros protocol support"
254	depends on BT_HCIUART
255	depends on BT_HCIUART_SERDEV
256	select BT_HCIUART_H4
257	select BT_QCA
258	help
259	  The Qualcomm Atheros protocol supports HCI In-Band Sleep feature
260	  over serial port interface(H4) between controller and host.
261	  This protocol is required for UART clock control for QCA Bluetooth
262	  devices.
263
264	  Say Y here to compile support for QCA protocol.
265
266config BT_HCIUART_AG6XX
267	bool "Intel AG6XX protocol support"
268	depends on BT_HCIUART
269	select BT_HCIUART_H4
270	select BT_INTEL
271	help
272	  The Intel/AG6XX protocol support enables Bluetooth HCI over serial
273	  port interface for Intel ibt 2.1 Bluetooth controllers.
274
275	  Say Y here to compile support for Intel AG6XX protocol.
276
277config BT_HCIUART_MRVL
278	bool "Marvell protocol support"
279	depends on BT_HCIUART
280	depends on BT_HCIUART_SERDEV
281	select BT_HCIUART_H4
282	help
283	  Marvell is serial protocol for communication between Bluetooth
284	  device and host. This protocol is required for most Marvell Bluetooth
285	  devices with UART interface.
286
287	  Say Y here to compile support for HCI MRVL protocol.
288
289config BT_HCIUART_AML
290	bool "Amlogic protocol support"
291	depends on BT_HCIUART
292	depends on BT_HCIUART_SERDEV
293	select BT_HCIUART_H4
294	select FW_LOADER
295	help
296	  The Amlogic protocol support enables Bluetooth HCI over serial
297	  port interface for Amlogic Bluetooth controllers.
298
299	  Say Y here to compile support for HCI AML protocol.
300
301config BT_HCIBCM203X
302	tristate "HCI BCM203x USB driver"
303	depends on USB
304	select FW_LOADER
305	help
306	  Bluetooth HCI BCM203x USB driver.
307	  This driver provides the firmware loading mechanism for the Broadcom
308	  Blutonium based devices.
309
310	  Say Y here to compile support for HCI BCM203x devices into the
311	  kernel or say M to compile it as module (bcm203x).
312
313
314config BT_HCIBCM4377
315	tristate "HCI BCM4377/4378/4387/4388 PCIe driver"
316	depends on PCI
317	select FW_LOADER
318	help
319	  Support for Broadcom BCM4377/4378/4387/4388 Bluetooth chipsets
320	  attached via PCIe. These are usually found in Apple machines.
321
322	  Say Y here to compile support for HCI BCM4377 family devices into the
323	  kernel or say M to compile it as module (hci_bcm4377).
324
325config BT_HCIBPA10X
326	tristate "HCI BPA10x USB driver"
327	depends on USB
328	help
329	  Bluetooth HCI BPA10x USB driver.
330	  This driver provides support for the Digianswer BPA 100/105 Bluetooth
331	  sniffer devices.
332
333	  Say Y here to compile support for HCI BPA10x devices into the
334	  kernel or say M to compile it as module (bpa10x).
335
336config BT_HCIBFUSB
337	tristate "HCI BlueFRITZ! USB driver"
338	depends on USB
339	select FW_LOADER
340	help
341	  Bluetooth HCI BlueFRITZ! USB driver.
342	  This driver provides support for Bluetooth USB devices with AVM
343	  interface:
344	     AVM BlueFRITZ! USB
345
346	  Say Y here to compile support for HCI BFUSB devices into the
347	  kernel or say M to compile it as module (bfusb).
348
349config BT_HCIDTL1
350	tristate "HCI DTL1 (PC Card) driver"
351	depends on PCMCIA && HAS_IOPORT
352	help
353	  Bluetooth HCI DTL1 (PC Card) driver.
354	  This driver provides support for Bluetooth PCMCIA devices with
355	  Nokia DTL1 interface:
356	     Nokia Bluetooth Card
357	     Socket Bluetooth CF Card
358
359	  Say Y here to compile support for HCI DTL1 devices into the
360	  kernel or say M to compile it as module (dtl1_cs).
361
362config BT_HCIBT3C
363	tristate "HCI BT3C (PC Card) driver"
364	depends on PCMCIA && HAS_IOPORT
365	select FW_LOADER
366	help
367	  Bluetooth HCI BT3C (PC Card) driver.
368	  This driver provides support for Bluetooth PCMCIA devices with
369	  3Com BT3C interface:
370	     3Com Bluetooth Card (3CRWB6096)
371	     HP Bluetooth Card
372
373	  Say Y here to compile support for HCI BT3C devices into the
374	  kernel or say M to compile it as module (bt3c_cs).
375
376config BT_HCIBLUECARD
377	tristate "HCI BlueCard (PC Card) driver"
378	depends on PCMCIA && HAS_IOPORT
379	help
380	  Bluetooth HCI BlueCard (PC Card) driver.
381	  This driver provides support for Bluetooth PCMCIA devices with
382	  Anycom BlueCard interface:
383	     Anycom Bluetooth PC Card
384	     Anycom Bluetooth CF Card
385
386	  Say Y here to compile support for HCI BlueCard devices into the
387	  kernel or say M to compile it as module (bluecard_cs).
388
389config BT_HCIVHCI
390	tristate "HCI VHCI (Virtual HCI device) driver"
391	select WANT_DEV_COREDUMP
392	help
393	  Bluetooth Virtual HCI device driver.
394	  This driver is required if you want to use HCI Emulation software.
395
396	  Say Y here to compile support for virtual HCI devices into the
397	  kernel or say M to compile it as module (hci_vhci).
398
399config BT_MRVL
400	tristate "Marvell Bluetooth driver support"
401	help
402	  The core driver to support Marvell Bluetooth devices.
403
404	  This driver is required if you want to support
405	  Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8987/8997.
406
407	  Say Y here to compile Marvell Bluetooth driver
408	  into the kernel or say M to compile it as module.
409
410config BT_MRVL_SDIO
411	tristate "Marvell BT-over-SDIO driver"
412	depends on BT_MRVL && MMC
413	select FW_LOADER
414	select WANT_DEV_COREDUMP
415	help
416	  The driver for Marvell Bluetooth chipsets with SDIO interface.
417
418	  This driver is required if you want to use Marvell Bluetooth
419	  devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997
420	  chipsets are supported.
421
422	  Say Y here to compile support for Marvell BT-over-SDIO driver
423	  into the kernel or say M to compile it as module.
424
425config BT_ATH3K
426	tristate "Atheros firmware download driver"
427	depends on BT_HCIBTUSB
428	select FW_LOADER
429	help
430	  Bluetooth firmware download driver.
431	  This driver loads the firmware into the Atheros Bluetooth
432	  chipset.
433
434	  Say Y here to compile support for "Atheros firmware download driver"
435	  into the kernel or say M to compile it as module (ath3k).
436
437config BT_MTKSDIO
438	tristate "MediaTek HCI SDIO driver"
439	depends on MMC
440	depends on USB || !BT_HCIBTUSB_MTK
441	select BT_MTK
442	help
443	  MediaTek Bluetooth HCI SDIO driver.
444	  This driver is required if you want to use MediaTek Bluetooth
445	  with SDIO interface.
446
447	  Say Y here to compile support for MediaTek Bluetooth SDIO devices
448	  into the kernel or say M to compile it as module (btmtksdio).
449
450config BT_MTKUART
451	tristate "MediaTek HCI UART driver"
452	depends on SERIAL_DEV_BUS
453	depends on USB || !BT_HCIBTUSB_MTK
454	select BT_MTK
455	help
456	  MediaTek Bluetooth HCI UART driver.
457	  This driver is required if you want to use MediaTek Bluetooth
458	  with serial interface.
459
460	  Say Y here to compile support for MediaTek Bluetooth UART devices
461	  into the kernel or say M to compile it as module (btmtkuart).
462
463config BT_QCOMSMD
464	tristate "Qualcomm SMD based HCI support"
465	depends on RPMSG || (COMPILE_TEST && RPMSG=n)
466	depends on QCOM_WCNSS_CTRL || (COMPILE_TEST && QCOM_WCNSS_CTRL=n)
467	select BT_QCA
468	help
469	  Qualcomm SMD based HCI driver.
470	  This driver is used to bridge HCI data onto the shared memory
471	  channels to the WCNSS core.
472
473	  Say Y here to compile support for HCI over Qualcomm SMD into the
474	  kernel or say M to compile as a module.
475
476config BT_HCIRSI
477	tristate
478	help
479	  Redpine BT driver.
480	  This driver handles BT traffic from upper layers and pass
481	  to the RSI_91x coex module for further scheduling to device
482
483	  Say Y here to compile support for HCI over Redpine into the
484	  kernel or say M to compile as a module.
485
486config BT_VIRTIO
487	tristate "Virtio Bluetooth driver"
488	depends on VIRTIO
489	help
490	  Virtio Bluetooth support driver.
491	  This driver supports Virtio Bluetooth devices.
492
493	  Say Y here to compile support for HCI over Virtio into the
494	  kernel or say M to compile as a module.
495
496config BT_NXPUART
497	tristate "NXP protocol support"
498	depends on SERIAL_DEV_BUS
499	select CRC32
500	select CRC8
501	help
502	  NXP is serial driver required for NXP Bluetooth
503	  devices with UART interface.
504
505	  Say Y here to compile support for NXP Bluetooth UART device into
506	  the kernel, or say M here to compile as a module (btnxpuart).
507
508config BT_INTEL_PCIE
509	tristate "Intel HCI PCIe driver"
510	depends on PCI
511	select BT_INTEL
512	select FW_LOADER
513	help
514	  Intel Bluetooth transport driver for PCIe.
515	  This driver is required if you want to use Intel Bluetooth device
516	  with PCIe interface.
517
518	  Say Y here to compiler support for Intel Bluetooth PCIe device into
519	  the kernel or say M to compile it as module (btintel_pcie)
520endmenu
521