# 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_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_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
	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 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
	select BT_HCIUART_3WIRE
	select BT_RTL
	help
	  The Realtek protocol support enables Bluetooth HCI over 3-Wire
	  serial port internface 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_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_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
	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
	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
	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"
	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
	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
	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.

endmenu
