# SPDX-License-Identifier: GPL-2.0-only
menuconfig USB4
	tristate "Unified support for USB4 and Thunderbolt"
	depends on PCI
	select APPLE_PROPERTIES if EFI_STUB && X86
	select CRC32
	select CRYPTO_LIB_SHA256
	select CRYPTO_LIB_UTILS
	select NVMEM
	help
	  USB4 and Thunderbolt driver. USB4 is the public specification
	  based on the Thunderbolt 3 protocol. This driver is required if
	  you want to hotplug Thunderbolt and USB4 compliant devices on
	  Apple hardware or on PCs with Intel Falcon Ridge or newer.

	  To compile this driver a module, choose M here. The module will be
	  called thunderbolt.

if USB4

config USB4_DEBUGFS_WRITE
	bool "Enable write by debugfs to configuration spaces (DANGEROUS)"
	help
	  Enables writing to device configuration registers through
	  debugfs interface. You can use tools such as Thunderbolt/USB4
	  debugging tools to access these registers. For more
	  information see:

	    https://github.com/intel/tbtools

	  Only enable this if you know what you are doing! Never enable
	  this for production systems or distro kernels.

config USB4_DEBUGFS_MARGINING
	bool "Expose receiver lane margining operations under USB4 ports and retimers (DANGEROUS)"
	depends on DEBUG_FS
	depends on USB4_DEBUGFS_WRITE
	help
	  Enables hardware and software based receiver lane margining
	  support under each USB4 port and retimer, including retimers
	  on the other side of the cable. Used for electrical quality
	  and robustness validation during manufacturing. Should not be
	  enabled by distro kernels.

config USB4_KUNIT_TEST
	bool "KUnit tests" if !KUNIT_ALL_TESTS
	depends on USB4 && KUNIT=y
	default KUNIT_ALL_TESTS

config USB4_DMA_TEST
	tristate "DMA traffic test driver"
	depends on DEBUG_FS
	help
	  This allows sending and receiving DMA traffic through loopback
	  connection. Loopback connection can be done by either special
	  dongle that has TX/RX lines crossed, or by simply connecting a
	  cable back to the host. Only enable this if you know what you
	  are doing. Normal users and distro kernels should say N here.

	  To compile this driver a module, choose M here. The module will be
	  called thunderbolt_dma_test.

endif # USB4
