|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | menu "Bluetooth device drivers" | 
|  | depends on BT | 
|  |  | 
|  | config BT_INTEL | 
|  | tristate | 
|  | select REGMAP | 
|  |  | 
|  | config BT_BCM | 
|  | tristate | 
|  | select FW_LOADER | 
|  |  | 
|  | config BT_RTL | 
|  | tristate | 
|  | select FW_LOADER | 
|  |  | 
|  | config BT_QCA | 
|  | tristate | 
|  | select FW_LOADER | 
|  |  | 
|  | config BT_MTK | 
|  | tristate | 
|  | select FW_LOADER | 
|  |  | 
|  | config BT_HCIBTUSB | 
|  | tristate "HCI USB driver" | 
|  | depends on USB | 
|  | select BT_INTEL | 
|  | help | 
|  | Bluetooth HCI USB driver. | 
|  | This driver is required if you want to use Bluetooth devices with | 
|  | USB interface. | 
|  |  | 
|  | Say Y here to compile support for Bluetooth USB devices into the | 
|  | kernel or say M to compile it as module (btusb). | 
|  |  | 
|  | config BT_HCIBTUSB_AUTOSUSPEND | 
|  | bool "Enable USB autosuspend for Bluetooth USB devices by default" | 
|  | depends on BT_HCIBTUSB | 
|  | help | 
|  | Say Y here to enable USB autosuspend for Bluetooth USB devices by | 
|  | default. | 
|  |  | 
|  | This can be overridden by passing btusb.enable_autosuspend=[y|n] | 
|  | on the kernel commandline. | 
|  |  | 
|  | config BT_HCIBTUSB_POLL_SYNC | 
|  | bool "Enable USB poll_sync for Bluetooth USB devices by default" | 
|  | depends on BT_HCIBTUSB | 
|  | default y | 
|  | help | 
|  | poll_sync synchronizes the USB data and event endpoints by | 
|  | prioritizing the later. | 
|  |  | 
|  | Say Y here to enable USB poll_sync for Bluetooth USB devices by | 
|  | default. | 
|  |  | 
|  | config BT_HCIBTUSB_BCM | 
|  | bool "Broadcom protocol support" | 
|  | depends on BT_HCIBTUSB | 
|  | select BT_BCM | 
|  | default y | 
|  | help | 
|  | The Broadcom protocol support enables firmware and patchram | 
|  | download support for Broadcom Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Broadcom protocol. | 
|  |  | 
|  | config BT_HCIBTUSB_MTK | 
|  | bool "MediaTek protocol support" | 
|  | depends on BT_HCIBTUSB | 
|  | select BT_MTK | 
|  | default n | 
|  | help | 
|  | The MediaTek protocol support enables firmware download | 
|  | support and chip initialization for MediaTek Bluetooth | 
|  | USB controllers. | 
|  |  | 
|  | Say Y here to compile support for MediaTek protocol. | 
|  |  | 
|  | config BT_HCIBTUSB_RTL | 
|  | bool "Realtek protocol support" | 
|  | depends on BT_HCIBTUSB | 
|  | select BT_RTL | 
|  | default y | 
|  | help | 
|  | The Realtek protocol support enables firmware and configuration | 
|  | download support for Realtek Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Realtek protocol. | 
|  |  | 
|  | config BT_HCIBTSDIO | 
|  | tristate "HCI SDIO driver" | 
|  | depends on MMC | 
|  | help | 
|  | Bluetooth HCI SDIO driver. | 
|  | This driver is required if you want to use Bluetooth device with | 
|  | SDIO interface. | 
|  |  | 
|  | Say Y here to compile support for Bluetooth SDIO devices into the | 
|  | kernel or say M to compile it as module (btsdio). | 
|  |  | 
|  | config BT_HCIUART | 
|  | tristate "HCI UART driver" | 
|  | depends on SERIAL_DEV_BUS || !SERIAL_DEV_BUS | 
|  | depends on NVMEM || !NVMEM | 
|  | depends on POWER_SEQUENCING || !POWER_SEQUENCING | 
|  | depends on TTY | 
|  | help | 
|  | Bluetooth HCI UART driver. | 
|  | This driver is required if you want to use Bluetooth devices with | 
|  | serial port interface. You will also need this driver if you have | 
|  | UART based Bluetooth PCMCIA and CF devices like Xircom Credit Card | 
|  | adapter and BrainBoxes Bluetooth PC Card. | 
|  |  | 
|  | Say Y here to compile support for Bluetooth UART devices into the | 
|  | kernel or say M to compile it as module (hci_uart). | 
|  |  | 
|  | config BT_HCIUART_SERDEV | 
|  | bool | 
|  | depends on SERIAL_DEV_BUS && BT_HCIUART | 
|  | default y | 
|  |  | 
|  | config BT_HCIUART_H4 | 
|  | bool "UART (H4) protocol support" | 
|  | depends on BT_HCIUART | 
|  | help | 
|  | UART (H4) is serial protocol for communication between Bluetooth | 
|  | device and host. This protocol is required for most Bluetooth devices | 
|  | with UART interface, including PCMCIA and CF cards. | 
|  |  | 
|  | Say Y here to compile support for HCI UART (H4) protocol. | 
|  |  | 
|  | config BT_HCIUART_NOKIA | 
|  | tristate "UART Nokia H4+ protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | depends on GPIOLIB | 
|  | depends on PM | 
|  | select BT_HCIUART_H4 | 
|  | select BT_BCM | 
|  | help | 
|  | Nokia H4+ is serial protocol for communication between Bluetooth | 
|  | device and host. This protocol is required for Bluetooth devices | 
|  | with UART interface in Nokia devices. | 
|  |  | 
|  | Say Y here to compile support for Nokia's H4+ protocol. | 
|  |  | 
|  | config BT_HCIUART_BCSP | 
|  | bool "BCSP protocol support" | 
|  | depends on BT_HCIUART | 
|  | select BITREVERSE | 
|  | help | 
|  | BCSP (BlueCore Serial Protocol) is serial protocol for communication | 
|  | between Bluetooth device and host. This protocol is required for non | 
|  | USB Bluetooth devices based on CSR BlueCore chip, including PCMCIA and | 
|  | CF cards. | 
|  |  | 
|  | Say Y here to compile support for HCI BCSP protocol. | 
|  |  | 
|  | config BT_HCIUART_ATH3K | 
|  | bool "Atheros AR300x serial support" | 
|  | depends on BT_HCIUART | 
|  | select BT_HCIUART_H4 | 
|  | help | 
|  | HCIATH3K (HCI Atheros AR300x) is a serial protocol for | 
|  | communication between host and Atheros AR300x Bluetooth devices. | 
|  | This protocol enables AR300x chips to be enabled with | 
|  | power management support. | 
|  | Enable this if you have Atheros AR300x serial Bluetooth device. | 
|  |  | 
|  | Say Y here to compile support for HCI UART ATH3K protocol. | 
|  |  | 
|  | config BT_HCIUART_LL | 
|  | bool "HCILL protocol support" | 
|  | depends on BT_HCIUART_SERDEV | 
|  | select BT_HCIUART_H4 | 
|  | help | 
|  | HCILL (HCI Low Level) is a serial protocol for communication | 
|  | between Bluetooth device and host. This protocol is required for | 
|  | serial Bluetooth devices that are based on Texas Instruments' | 
|  | BRF chips. | 
|  |  | 
|  | Say Y here to compile support for HCILL protocol. | 
|  |  | 
|  | config BT_HCIUART_3WIRE | 
|  | bool "Three-wire UART (H5) protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | help | 
|  | The HCI Three-wire UART Transport Layer makes it possible to | 
|  | user the Bluetooth HCI over a serial port interface. The HCI | 
|  | Three-wire UART Transport Layer assumes that the UART | 
|  | communication may have bit errors, overrun errors or burst | 
|  | errors and thereby making CTS/RTS lines unnecessary. | 
|  |  | 
|  | Say Y here to compile support for Three-wire UART protocol. | 
|  |  | 
|  | config BT_HCIUART_INTEL | 
|  | bool "Intel protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on GPIOLIB | 
|  | select BT_HCIUART_H4 | 
|  | select BT_INTEL | 
|  | help | 
|  | The Intel protocol support enables Bluetooth HCI over serial | 
|  | port interface for Intel Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Intel protocol. | 
|  |  | 
|  | config BT_HCIUART_BCM | 
|  | bool "Broadcom protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | depends on (!ACPI || SERIAL_DEV_CTRL_TTYPORT) | 
|  | depends on GPIOLIB | 
|  | select BT_HCIUART_H4 | 
|  | select BT_BCM | 
|  | help | 
|  | The Broadcom protocol support enables Bluetooth HCI over serial | 
|  | port interface for Broadcom Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Broadcom protocol. | 
|  |  | 
|  | config BT_HCIUART_RTL | 
|  | bool "Realtek protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | depends on GPIOLIB | 
|  | depends on (ACPI || SERIAL_DEV_CTRL_TTYPORT) | 
|  | select BT_HCIUART_3WIRE | 
|  | select BT_RTL | 
|  | help | 
|  | The Realtek protocol support enables Bluetooth HCI over 3-Wire | 
|  | serial port interface for Realtek Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Realtek protocol. | 
|  |  | 
|  | config BT_HCIUART_QCA | 
|  | bool "Qualcomm Atheros protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | select BT_HCIUART_H4 | 
|  | select BT_QCA | 
|  | help | 
|  | The Qualcomm Atheros protocol supports HCI In-Band Sleep feature | 
|  | over serial port interface(H4) between controller and host. | 
|  | This protocol is required for UART clock control for QCA Bluetooth | 
|  | devices. | 
|  |  | 
|  | Say Y here to compile support for QCA protocol. | 
|  |  | 
|  | config BT_HCIUART_AG6XX | 
|  | bool "Intel AG6XX protocol support" | 
|  | depends on BT_HCIUART | 
|  | select BT_HCIUART_H4 | 
|  | select BT_INTEL | 
|  | help | 
|  | The Intel/AG6XX protocol support enables Bluetooth HCI over serial | 
|  | port interface for Intel ibt 2.1 Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for Intel AG6XX protocol. | 
|  |  | 
|  | config BT_HCIUART_MRVL | 
|  | bool "Marvell protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | select BT_HCIUART_H4 | 
|  | help | 
|  | Marvell is serial protocol for communication between Bluetooth | 
|  | device and host. This protocol is required for most Marvell Bluetooth | 
|  | devices with UART interface. | 
|  |  | 
|  | Say Y here to compile support for HCI MRVL protocol. | 
|  |  | 
|  | config BT_HCIUART_AML | 
|  | bool "Amlogic protocol support" | 
|  | depends on BT_HCIUART | 
|  | depends on BT_HCIUART_SERDEV | 
|  | select BT_HCIUART_H4 | 
|  | select FW_LOADER | 
|  | help | 
|  | The Amlogic protocol support enables Bluetooth HCI over serial | 
|  | port interface for Amlogic Bluetooth controllers. | 
|  |  | 
|  | Say Y here to compile support for HCI AML protocol. | 
|  |  | 
|  | config BT_HCIBCM203X | 
|  | tristate "HCI BCM203x USB driver" | 
|  | depends on USB | 
|  | select FW_LOADER | 
|  | help | 
|  | Bluetooth HCI BCM203x USB driver. | 
|  | This driver provides the firmware loading mechanism for the Broadcom | 
|  | Blutonium based devices. | 
|  |  | 
|  | Say Y here to compile support for HCI BCM203x devices into the | 
|  | kernel or say M to compile it as module (bcm203x). | 
|  |  | 
|  |  | 
|  | config BT_HCIBCM4377 | 
|  | tristate "HCI BCM4377/4378/4387/4388 PCIe driver" | 
|  | depends on PCI | 
|  | select FW_LOADER | 
|  | help | 
|  | Support for Broadcom BCM4377/4378/4387/4388 Bluetooth chipsets | 
|  | attached via PCIe. These are usually found in Apple machines. | 
|  |  | 
|  | Say Y here to compile support for HCI BCM4377 family devices into the | 
|  | kernel or say M to compile it as module (hci_bcm4377). | 
|  |  | 
|  | config BT_HCIBPA10X | 
|  | tristate "HCI BPA10x USB driver" | 
|  | depends on USB | 
|  | help | 
|  | Bluetooth HCI BPA10x USB driver. | 
|  | This driver provides support for the Digianswer BPA 100/105 Bluetooth | 
|  | sniffer devices. | 
|  |  | 
|  | Say Y here to compile support for HCI BPA10x devices into the | 
|  | kernel or say M to compile it as module (bpa10x). | 
|  |  | 
|  | config BT_HCIBFUSB | 
|  | tristate "HCI BlueFRITZ! USB driver" | 
|  | depends on USB | 
|  | select FW_LOADER | 
|  | help | 
|  | Bluetooth HCI BlueFRITZ! USB driver. | 
|  | This driver provides support for Bluetooth USB devices with AVM | 
|  | interface: | 
|  | AVM BlueFRITZ! USB | 
|  |  | 
|  | Say Y here to compile support for HCI BFUSB devices into the | 
|  | kernel or say M to compile it as module (bfusb). | 
|  |  | 
|  | config BT_HCIDTL1 | 
|  | tristate "HCI DTL1 (PC Card) driver" | 
|  | depends on PCMCIA && HAS_IOPORT | 
|  | help | 
|  | Bluetooth HCI DTL1 (PC Card) driver. | 
|  | This driver provides support for Bluetooth PCMCIA devices with | 
|  | Nokia DTL1 interface: | 
|  | Nokia Bluetooth Card | 
|  | Socket Bluetooth CF Card | 
|  |  | 
|  | Say Y here to compile support for HCI DTL1 devices into the | 
|  | kernel or say M to compile it as module (dtl1_cs). | 
|  |  | 
|  | config BT_HCIBT3C | 
|  | tristate "HCI BT3C (PC Card) driver" | 
|  | depends on PCMCIA && HAS_IOPORT | 
|  | select FW_LOADER | 
|  | help | 
|  | Bluetooth HCI BT3C (PC Card) driver. | 
|  | This driver provides support for Bluetooth PCMCIA devices with | 
|  | 3Com BT3C interface: | 
|  | 3Com Bluetooth Card (3CRWB6096) | 
|  | HP Bluetooth Card | 
|  |  | 
|  | Say Y here to compile support for HCI BT3C devices into the | 
|  | kernel or say M to compile it as module (bt3c_cs). | 
|  |  | 
|  | config BT_HCIBLUECARD | 
|  | tristate "HCI BlueCard (PC Card) driver" | 
|  | depends on PCMCIA && HAS_IOPORT | 
|  | help | 
|  | Bluetooth HCI BlueCard (PC Card) driver. | 
|  | This driver provides support for Bluetooth PCMCIA devices with | 
|  | Anycom BlueCard interface: | 
|  | Anycom Bluetooth PC Card | 
|  | Anycom Bluetooth CF Card | 
|  |  | 
|  | Say Y here to compile support for HCI BlueCard devices into the | 
|  | kernel or say M to compile it as module (bluecard_cs). | 
|  |  | 
|  | config BT_HCIVHCI | 
|  | tristate "HCI VHCI (Virtual HCI device) driver" | 
|  | select WANT_DEV_COREDUMP | 
|  | help | 
|  | Bluetooth Virtual HCI device driver. | 
|  | This driver is required if you want to use HCI Emulation software. | 
|  |  | 
|  | Say Y here to compile support for virtual HCI devices into the | 
|  | kernel or say M to compile it as module (hci_vhci). | 
|  |  | 
|  | config BT_MRVL | 
|  | tristate "Marvell Bluetooth driver support" | 
|  | help | 
|  | The core driver to support Marvell Bluetooth devices. | 
|  |  | 
|  | This driver is required if you want to support | 
|  | Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8987/8997. | 
|  |  | 
|  | Say Y here to compile Marvell Bluetooth driver | 
|  | into the kernel or say M to compile it as module. | 
|  |  | 
|  | config BT_MRVL_SDIO | 
|  | tristate "Marvell BT-over-SDIO driver" | 
|  | depends on BT_MRVL && MMC | 
|  | select FW_LOADER | 
|  | select WANT_DEV_COREDUMP | 
|  | help | 
|  | The driver for Marvell Bluetooth chipsets with SDIO interface. | 
|  |  | 
|  | This driver is required if you want to use Marvell Bluetooth | 
|  | devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997 | 
|  | chipsets are supported. | 
|  |  | 
|  | Say Y here to compile support for Marvell BT-over-SDIO driver | 
|  | into the kernel or say M to compile it as module. | 
|  |  | 
|  | config BT_ATH3K | 
|  | tristate "Atheros firmware download driver" | 
|  | depends on BT_HCIBTUSB | 
|  | select FW_LOADER | 
|  | help | 
|  | Bluetooth firmware download driver. | 
|  | This driver loads the firmware into the Atheros Bluetooth | 
|  | chipset. | 
|  |  | 
|  | Say Y here to compile support for "Atheros firmware download driver" | 
|  | into the kernel or say M to compile it as module (ath3k). | 
|  |  | 
|  | config BT_MTKSDIO | 
|  | tristate "MediaTek HCI SDIO driver" | 
|  | depends on MMC | 
|  | depends on USB || !BT_HCIBTUSB_MTK | 
|  | select BT_MTK | 
|  | help | 
|  | MediaTek Bluetooth HCI SDIO driver. | 
|  | This driver is required if you want to use MediaTek Bluetooth | 
|  | with SDIO interface. | 
|  |  | 
|  | Say Y here to compile support for MediaTek Bluetooth SDIO devices | 
|  | into the kernel or say M to compile it as module (btmtksdio). | 
|  |  | 
|  | config BT_MTKUART | 
|  | tristate "MediaTek HCI UART driver" | 
|  | depends on SERIAL_DEV_BUS | 
|  | depends on USB || !BT_HCIBTUSB_MTK | 
|  | select BT_MTK | 
|  | help | 
|  | MediaTek Bluetooth HCI UART driver. | 
|  | This driver is required if you want to use MediaTek Bluetooth | 
|  | with serial interface. | 
|  |  | 
|  | Say Y here to compile support for MediaTek Bluetooth UART devices | 
|  | into the kernel or say M to compile it as module (btmtkuart). | 
|  |  | 
|  | config BT_QCOMSMD | 
|  | tristate "Qualcomm SMD based HCI support" | 
|  | depends on RPMSG || (COMPILE_TEST && RPMSG=n) | 
|  | depends on QCOM_WCNSS_CTRL || (COMPILE_TEST && QCOM_WCNSS_CTRL=n) | 
|  | select BT_QCA | 
|  | help | 
|  | Qualcomm SMD based HCI driver. | 
|  | This driver is used to bridge HCI data onto the shared memory | 
|  | channels to the WCNSS core. | 
|  |  | 
|  | Say Y here to compile support for HCI over Qualcomm SMD into the | 
|  | kernel or say M to compile as a module. | 
|  |  | 
|  | config BT_HCIRSI | 
|  | tristate | 
|  | help | 
|  | Redpine BT driver. | 
|  | This driver handles BT traffic from upper layers and pass | 
|  | to the RSI_91x coex module for further scheduling to device | 
|  |  | 
|  | Say Y here to compile support for HCI over Redpine into the | 
|  | kernel or say M to compile as a module. | 
|  |  | 
|  | config BT_VIRTIO | 
|  | tristate "Virtio Bluetooth driver" | 
|  | depends on VIRTIO | 
|  | help | 
|  | Virtio Bluetooth support driver. | 
|  | This driver supports Virtio Bluetooth devices. | 
|  |  | 
|  | Say Y here to compile support for HCI over Virtio into the | 
|  | kernel or say M to compile as a module. | 
|  |  | 
|  | config BT_NXPUART | 
|  | tristate "NXP protocol support" | 
|  | depends on SERIAL_DEV_BUS | 
|  | select CRC32 | 
|  | select CRC8 | 
|  | help | 
|  | NXP is serial driver required for NXP Bluetooth | 
|  | devices with UART interface. | 
|  |  | 
|  | Say Y here to compile support for NXP Bluetooth UART device into | 
|  | the kernel, or say M here to compile as a module (btnxpuart). | 
|  |  | 
|  | config BT_INTEL_PCIE | 
|  | tristate "Intel HCI PCIe driver" | 
|  | depends on PCI | 
|  | select BT_INTEL | 
|  | select FW_LOADER | 
|  | help | 
|  | Intel Bluetooth transport driver for PCIe. | 
|  | This driver is required if you want to use Intel Bluetooth device | 
|  | with PCIe interface. | 
|  |  | 
|  | Say Y here to compiler support for Intel Bluetooth PCIe device into | 
|  | the kernel or say M to compile it as module (btintel_pcie) | 
|  | endmenu |