# SPDX-License-Identifier: GPL-2.0-only
#
# Bluetooth subsystem configuration
#

menuconfig BT
	tristate "Bluetooth subsystem support"
	depends on !S390
	depends on RFKILL || !RFKILL
	select CRC16
	select CRYPTO
	select CRYPTO_SKCIPHER
	select CRYPTO_LIB_AES
	imply CRYPTO_AES
	select CRYPTO_CMAC
	select CRYPTO_ECB
	select CRYPTO_SHA256
	select CRYPTO_ECDH
	help
	  Bluetooth is low-cost, low-power, short-range wireless technology.
	  It was designed as a replacement for cables and other short-range
	  technologies like IrDA.  Bluetooth operates in personal area range
	  that typically extends up to 10 meters.  More information about
	  Bluetooth can be found at <https://www.bluetooth.com/>.

	  Linux Bluetooth subsystem consist of several layers:
	     Bluetooth Core
		HCI device and connection manager, scheduler
		SCO audio links
		L2CAP (Logical Link Control and Adaptation Protocol)
		SMP (Security Manager Protocol) on LE (Low Energy) links
		ISO isochronous links
	     HCI Device drivers (Interface to the hardware)
	     RFCOMM Module (RFCOMM Protocol)  
	     BNEP Module (Bluetooth Network Encapsulation Protocol)
	     CMTP Module (CAPI Message Transport Protocol)
	     HIDP Module (Human Interface Device Protocol)

	  Say Y here to compile Bluetooth support into the kernel or say M to
	  compile it as module (bluetooth).

	  To use Linux Bluetooth subsystem, you will need several user-space
	  utilities like hciconfig and bluetoothd.  These utilities and updates
	  to Bluetooth kernel modules are provided in the BlueZ packages.  For
	  more information, see <http://www.bluez.org/>.

config BT_BREDR
	bool "Bluetooth Classic (BR/EDR) features"
	depends on BT
	default y
	help
	  Bluetooth Classic includes support for Basic Rate (BR)
	  available with Bluetooth version 1.0b or later and support
	  for Enhanced Data Rate (EDR) available with Bluetooth
	  version 2.0 or later.

source "net/bluetooth/rfcomm/Kconfig"

source "net/bluetooth/bnep/Kconfig"

source "net/bluetooth/cmtp/Kconfig"

source "net/bluetooth/hidp/Kconfig"

config BT_HS
	bool "Bluetooth High Speed (HS) features"
	depends on BT_BREDR
	help
	  Bluetooth High Speed includes support for off-loading
	  Bluetooth connections via 802.11 (wifi) physical layer
	  available with Bluetooth version 3.0 or later.

config BT_LE
	bool "Bluetooth Low Energy (LE) features"
	depends on BT
	default y
	help
	  Bluetooth Low Energy includes support low-energy physical
	  layer available with Bluetooth version 4.0 or later.

config BT_LE_L2CAP_ECRED
	bool "Bluetooth L2CAP Enhanced Credit Flow Control"
	depends on BT_LE
	default y
	help
	  Bluetooth Low Energy L2CAP Enhanced Credit Flow Control available with
	  Bluetooth version 5.2 or later.

	  This can be overridden by passing bluetooth.enable_ecred=[1|0]
	  on the kernel commandline.

config BT_6LOWPAN
	tristate "Bluetooth 6LoWPAN support"
	depends on BT_LE && 6LOWPAN
	help
	  IPv6 compression over Bluetooth Low Energy.

config BT_LEDS
	bool "Enable LED triggers"
	depends on BT
	depends on LEDS_CLASS
	select LEDS_TRIGGERS
	help
	  This option selects a few LED triggers for different
	  Bluetooth events.

config BT_MSFTEXT
	bool "Enable Microsoft extensions"
	depends on BT
	help
	  This options enables support for the Microsoft defined HCI
	  vendor extensions.

config BT_AOSPEXT
	bool "Enable Android Open Source Project extensions"
	depends on BT
	help
	  This options enables support for the Android Open Source
	  Project defined HCI vendor extensions.

config BT_DEBUGFS
	bool "Export Bluetooth internals in debugfs"
	depends on BT && DEBUG_FS
	default y
	help
	  Provide extensive information about internal Bluetooth states
	  in debugfs.

config BT_SELFTEST
	bool "Bluetooth self testing support"
	depends on BT && DEBUG_KERNEL
	help
	  Run self tests when initializing the Bluetooth subsystem.  This
	  is a developer option and can cause significant delay when booting
	  the system.

	  When the Bluetooth subsystem is built as module, then the test
	  cases are run first thing at module load time.  When the Bluetooth
	  subsystem is compiled into the kernel image, then the test cases
	  are run late in the initcall hierarchy.

config BT_SELFTEST_ECDH
	bool "ECDH test cases"
	depends on BT_LE && BT_SELFTEST
	help
	  Run test cases for ECDH cryptographic functionality used by the
	  Bluetooth Low Energy Secure Connections feature.

config BT_SELFTEST_SMP
	bool "SMP test cases"
	depends on BT_LE && BT_SELFTEST
	help
	  Run test cases for SMP cryptographic functionality, including both
	  legacy SMP as well as the Secure Connections features.

config BT_FEATURE_DEBUG
	bool "Enable runtime option for debugging statements"
	depends on BT && !DYNAMIC_DEBUG
	help
	  This provides an option to enable/disable debugging statements
	  at runtime via the experimental features interface.

source "drivers/bluetooth/Kconfig"