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