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