# SPDX-License-Identifier: GPL-2.0
#
# Wireless USB Core configuration
#
config USB_WUSB
	tristate "Enable Wireless USB extensions"
	depends on UWB
	select CRYPTO
	select CRYPTO_AES
	select CRYPTO_CCM
	help
	  Enable the host-side support for Wireless USB.

          To compile this support select Y (built in). It is safe to
	  select even if you don't have the hardware.

config USB_WUSB_CBAF
	tristate "Support WUSB Cable Based Association (CBA)"
	depends on USB
	help
	  Some WUSB devices support Cable Based Association. It's used to
	  enable the secure communication between the host and the
	  device.

	  Enable this option if your WUSB device must to be connected
	  via wired USB before establishing a wireless link.

	  It is safe to select even if you don't have a compatible
	  hardware.

config USB_WUSB_CBAF_DEBUG
	bool "Enable CBA debug messages"
	depends on USB_WUSB_CBAF
	help
	  Say Y here if you want the CBA to produce a bunch of debug messages
	  to the system log. Select this if you are having a problem with
	  CBA support and want to see more of what is going on.

