| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | menuconfig USB4 |
| 3 | tristate "Unified support for USB4 and Thunderbolt" |
| 4 | depends on PCI |
| 5 | select APPLE_PROPERTIES if EFI_STUB && X86 |
| 6 | select CRC32 |
| 7 | select CRYPTO_LIB_SHA256 |
| 8 | select CRYPTO_LIB_UTILS |
| 9 | select NVMEM |
| 10 | help |
| 11 | USB4 and Thunderbolt driver. USB4 is the public specification |
| 12 | based on the Thunderbolt 3 protocol. This driver is required if |
| 13 | you want to hotplug Thunderbolt and USB4 compliant devices on |
| 14 | Apple hardware or on PCs with Intel Falcon Ridge or newer. |
| 15 | |
| 16 | To compile this driver a module, choose M here. The module will be |
| 17 | called thunderbolt. |
| 18 | |
| 19 | if USB4 |
| 20 | |
| 21 | config USB4_CONFIGFS |
| 22 | def_tristate USB4 |
| 23 | depends on CONFIGFS_FS && !(USB4=y && CONFIGFS_FS=m) |
| 24 | |
| 25 | config USB4_DEBUGFS_WRITE |
| 26 | bool "Enable write by debugfs to configuration spaces (DANGEROUS)" |
| 27 | help |
| 28 | Enables writing to device configuration registers through |
| 29 | debugfs interface. You can use tools such as Thunderbolt/USB4 |
| 30 | debugging tools to access these registers. For more |
| 31 | information see: |
| 32 | |
| 33 | https://github.com/intel/tbtools |
| 34 | |
| 35 | Only enable this if you know what you are doing! Never enable |
| 36 | this for production systems or distro kernels. |
| 37 | |
| 38 | config USB4_DEBUGFS_MARGINING |
| 39 | bool "Expose receiver lane margining operations under USB4 ports and retimers (DANGEROUS)" |
| 40 | depends on DEBUG_FS |
| 41 | depends on USB4_DEBUGFS_WRITE |
| 42 | help |
| 43 | Enables hardware and software based receiver lane margining |
| 44 | support under each USB4 port and retimer, including retimers |
| 45 | on the other side of the cable. Used for electrical quality |
| 46 | and robustness validation during manufacturing. Should not be |
| 47 | enabled by distro kernels. |
| 48 | |
| 49 | config USB4_KUNIT_TEST |
| 50 | bool "KUnit tests" if !KUNIT_ALL_TESTS |
| 51 | depends on USB4 && KUNIT=y |
| 52 | default KUNIT_ALL_TESTS |
| 53 | |
| 54 | config USB4_DMA_TEST |
| 55 | tristate "DMA traffic test driver" |
| 56 | depends on DEBUG_FS |
| 57 | help |
| 58 | This allows sending and receiving DMA traffic through loopback |
| 59 | connection. Loopback connection can be done by either special |
| 60 | dongle that has TX/RX lines crossed, or by simply connecting a |
| 61 | cable back to the host. Only enable this if you know what you |
| 62 | are doing. Normal users and distro kernels should say N here. |
| 63 | |
| 64 | To compile this driver a module, choose M here. The module will be |
| 65 | called thunderbolt_dma_test. |
| 66 | |
| 67 | config USB4_STREAM |
| 68 | tristate "Stream data over Thunderbolt/USB4 cable" |
| 69 | depends on USB4_CONFIGFS |
| 70 | help |
| 71 | This adds support for USB4STREAM protocol that allows two |
| 72 | hosts to stream data directly over Thunderbolt/USB4 cable |
| 73 | through /dev/tbstreamX devices. |
| 74 | |
| 75 | To compile this driver a module, choose M here. The module will be |
| 76 | called thunderbolt_stream. |
| 77 | |
| 78 | endif # USB4 |