162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_cimenuconfig USB4
362306a36Sopenharmony_ci	tristate "Unified support for USB4 and Thunderbolt"
462306a36Sopenharmony_ci	depends on PCI
562306a36Sopenharmony_ci	select APPLE_PROPERTIES if EFI_STUB && X86
662306a36Sopenharmony_ci	select CRC32
762306a36Sopenharmony_ci	select CRYPTO
862306a36Sopenharmony_ci	select CRYPTO_HASH
962306a36Sopenharmony_ci	select NVMEM
1062306a36Sopenharmony_ci	help
1162306a36Sopenharmony_ci	  USB4 and Thunderbolt driver. USB4 is the public specification
1262306a36Sopenharmony_ci	  based on the Thunderbolt 3 protocol. This driver is required if
1362306a36Sopenharmony_ci	  you want to hotplug Thunderbolt and USB4 compliant devices on
1462306a36Sopenharmony_ci	  Apple hardware or on PCs with Intel Falcon Ridge or newer.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	  To compile this driver a module, choose M here. The module will be
1762306a36Sopenharmony_ci	  called thunderbolt.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciif USB4
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig USB4_DEBUGFS_WRITE
2262306a36Sopenharmony_ci	bool "Enable write by debugfs to configuration spaces (DANGEROUS)"
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  Enables writing to device configuration registers through
2562306a36Sopenharmony_ci	  debugfs interface.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	  Only enable this if you know what you are doing! Never enable
2862306a36Sopenharmony_ci	  this for production systems or distro kernels.
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciconfig USB4_DEBUGFS_MARGINING
3162306a36Sopenharmony_ci	bool "Expose receiver lane margining operations under USB4 ports (DANGEROUS)"
3262306a36Sopenharmony_ci	depends on DEBUG_FS
3362306a36Sopenharmony_ci	depends on USB4_DEBUGFS_WRITE
3462306a36Sopenharmony_ci	help
3562306a36Sopenharmony_ci	  Enables hardware and software based receiver lane margining support
3662306a36Sopenharmony_ci	  under each USB4 port. Used for electrical quality and robustness
3762306a36Sopenharmony_ci	  validation during manufacturing. Should not be enabled by distro
3862306a36Sopenharmony_ci	  kernels.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig USB4_KUNIT_TEST
4162306a36Sopenharmony_ci	bool "KUnit tests" if !KUNIT_ALL_TESTS
4262306a36Sopenharmony_ci	depends on USB4 && KUNIT=y
4362306a36Sopenharmony_ci	default KUNIT_ALL_TESTS
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciconfig USB4_DMA_TEST
4662306a36Sopenharmony_ci	tristate "DMA traffic test driver"
4762306a36Sopenharmony_ci	depends on DEBUG_FS
4862306a36Sopenharmony_ci	help
4962306a36Sopenharmony_ci	  This allows sending and receiving DMA traffic through loopback
5062306a36Sopenharmony_ci	  connection. Loopback connection can be done by either special
5162306a36Sopenharmony_ci	  dongle that has TX/RX lines crossed, or by simply connecting a
5262306a36Sopenharmony_ci	  cable back to the host. Only enable this if you know what you
5362306a36Sopenharmony_ci	  are doing. Normal users and distro kernels should say N here.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci	  To compile this driver a module, choose M here. The module will be
5662306a36Sopenharmony_ci	  called thunderbolt_dma_test.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciendif # USB4
59