# 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
	select CRYPTO_HASH
	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.

	  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 (DANGEROUS)"
	depends on DEBUG_FS
	depends on USB4_DEBUGFS_WRITE
	help
	  Enables hardware and software based receiver lane margining support
	  under each USB4 port. 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
