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