What:		/sys/bus/thunderbolt/devices/.../domainX/boot_acl
Date:		Jun 2018
KernelVersion:	4.17
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Holds a comma separated list of device unique_ids that
		are allowed to be connected automatically during system
		startup (e.g boot devices). The list always contains
		maximum supported number of unique_ids where unused
		entries are empty. This allows the userspace software
		to determine how many entries the controller supports.
		If there are multiple controllers, each controller has
		its own ACL list and size may be different between the
		controllers.

		System BIOS may have an option "Preboot ACL" or similar
		that needs to be selected before this list is taken into
		consideration.

		Software always updates a full list in each write.

		If a device is authorized automatically during boot its
		boot attribute is set to 1.

What:		/sys/bus/thunderbolt/devices/.../domainX/deauthorization
Date:		May 2021
KernelVersion:	5.12
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute tells whether the system supports
		de-authorization of devices. Value of 1 means user can
		de-authorize PCIe tunnel by writing 0 to authorized
		attribute under each device.

What:		/sys/bus/thunderbolt/devices/.../domainX/iommu_dma_protection
Date:		Mar 2019
KernelVersion:	4.21
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute tells whether the system uses IOMMU
		for DMA protection. Value of 1 means IOMMU is used 0 means
		it is not (DMA protection is solely based on Thunderbolt
		security levels).

What:		/sys/bus/thunderbolt/devices/.../domainX/security
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute holds current Thunderbolt security level
		set by the system BIOS. Possible values are:

		=======  ==================================================
		none     All devices are automatically authorized
		user     Devices are only authorized based on writing
		         appropriate value to the authorized attribute
		secure   Require devices that support secure connect at
			 minimum. User needs to authorize each device.
		dponly   Automatically tunnel Display port (and USB). No
			 PCIe tunnels are created.
		usbonly  Automatically tunnel USB controller of the
			 connected Thunderbolt dock (and Display Port). All
			 PCIe links downstream of the dock are removed.
		nopcie   USB4 system where PCIe tunneling is disabled from
			 the BIOS.
		=======  ==================================================

What:		/sys/bus/thunderbolt/devices/.../authorized
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute is used to authorize Thunderbolt devices
		after they have been connected. If the device is not
		authorized, no PCIe devices are available to the system.

		Contents of this attribute will be 0 when the device is not
		yet authorized.

		Possible values are supported:

		==  ===================================================
		0   The device will be de-authorized (only supported if
		    deauthorization attribute under domain contains 1)
		1   The device will be authorized and connected
		==  ===================================================

		When key attribute contains 32 byte hex string the possible
		values are:

		==  ========================================================
		0   The device will be de-authorized (only supported if
		    deauthorization attribute under domain contains 1)
		1   The 32 byte hex string is added to the device NVM and
		    the device is authorized.
		2   Send a challenge based on the 32 byte hex string. If the
		    challenge response from device is valid, the device is
		    authorized. In case of failure errno will be ENOKEY if
		    the device did not contain a key at all, and
		    EKEYREJECTED if the challenge response did not match.
		==  ========================================================

What:		/sys/bus/thunderbolt/devices/.../boot
Date:		Jun 2018
KernelVersion:	4.17
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains 1 if Thunderbolt device was already
		authorized on boot and 0 otherwise.

What:		/sys/bus/thunderbolt/devices/.../generation
Date:		Jan 2020
KernelVersion:	5.5
Contact:	Christian Kellner <christian@kellner.me>
Description:	This attribute contains the generation of the Thunderbolt
		controller associated with the device. It will contain 4
		for USB4.

What:		/sys/bus/thunderbolt/devices/.../key
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	When a devices supports Thunderbolt secure connect it will
		have this attribute. Writing 32 byte hex string changes
		authorization to use the secure connection method instead.
		Writing an empty string clears the key and regular connection
		method can be used again.

What:		/sys/bus/thunderbolt/devices/.../device
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains id of this device extracted from
		the device DROM.

What:		/sys/bus/thunderbolt/devices/.../device_name
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains name of this device extracted from
		the device DROM.

What:		/sys/bus/thunderbolt/devices/.../maxhopid
Date:		Jul 2021
KernelVersion:	5.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Only set for XDomains. The maximum HopID the other host
		supports as its input HopID.

What:		/sys/bus/thunderbolt/devices/.../rx_speed
Date:		Jan 2020
KernelVersion:	5.5
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute reports the device RX speed per lane.
		All RX lanes run at the same speed.

What:		/sys/bus/thunderbolt/devices/.../rx_lanes
Date:		Jan 2020
KernelVersion:	5.5
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute reports number of RX lanes the device is
		using simultaneously through its upstream port.

What:		/sys/bus/thunderbolt/devices/.../tx_speed
Date:		Jan 2020
KernelVersion:	5.5
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute reports the TX speed per lane.
		All TX lanes run at the same speed.

What:		/sys/bus/thunderbolt/devices/.../tx_lanes
Date:		Jan 2020
KernelVersion:	5.5
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute reports number of TX lanes the device is
		using simultaneously through its upstream port.

What:		/sys/bus/thunderbolt/devices/.../vendor
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains vendor id of this device extracted
		from the device DROM.

What:		/sys/bus/thunderbolt/devices/.../vendor_name
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains vendor name of this device extracted
		from the device DROM.

What:		/sys/bus/thunderbolt/devices/.../unique_id
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This attribute contains unique_id string of this device.
		This is either read from hardware registers (UUID on
		newer hardware) or based on UID from the device DROM.
		Can be used to uniquely identify particular device.

What:		/sys/bus/thunderbolt/devices/.../nvm_version
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	If the device has upgradeable firmware the version
		number is available here. Format: %x.%x, major.minor.
		If the device is in safe mode reading the file returns
		-ENODATA instead as the NVM version is not available.

What:		/sys/bus/thunderbolt/devices/.../nvm_authenticate
Date:		Sep 2017
KernelVersion:	4.13
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	When new NVM image is written to the non-active NVM
		area (through non_activeX NVMem device), the
		authentication procedure is started by writing to
		this file.
		If everything goes well, the device is
		restarted with the new NVM firmware. If the image
		verification fails an error code is returned instead.

		This file will accept writing values "1", "2" or "3".

		- Writing "1" will flush the image to the storage
		  area and authenticate the image in one action.
		- Writing "2" will run some basic validation on the image
		  and flush it to the storage area.
		- Writing "3" will authenticate the image that is
		  currently written in the storage area. This is only
		  supported with USB4 devices and retimers.

		When read holds status of the last authentication
		operation if an error occurred during the process. This
		is directly the status value from the DMA configuration
		based mailbox before the device is power cycled. Writing
		0 here clears the status.

What:		/sys/bus/thunderbolt/devices/.../nvm_authenticate_on_disconnect
Date:		Oct 2020
KernelVersion:	v5.9
Contact:	Mario Limonciello <mario.limonciello@outlook.com>
Description:	For supported devices, automatically authenticate the new Thunderbolt
		image when the device is disconnected from the host system.

		This file will accept writing values "1" or "2"

		- Writing "1" will flush the image to the storage
		  area and prepare the device for authentication on disconnect.
		- Writing "2" will run some basic validation on the image
		  and flush it to the storage area.

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/key
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This contains name of the property directory the XDomain
		service exposes. This entry describes the protocol in
		question. Following directories are already reserved by
		the Apple XDomain specification:

		========  ===============================================
		network   IP/ethernet over Thunderbolt
		targetdm  Target disk mode protocol over Thunderbolt
		extdisp   External display mode protocol over Thunderbolt
		========  ===============================================

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/modalias
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Stores the same MODALIAS value emitted by uevent for
		the XDomain service. Format: tbtsvc:kSpNvNrN

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcid
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This contains XDomain protocol identifier the XDomain
		service supports.

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcvers
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This contains XDomain protocol version the XDomain
		service supports.

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcrevs
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This contains XDomain software version the XDomain
		service supports.

What:		/sys/bus/thunderbolt/devices/<xdomain>.<service>/prtcstns
Date:		Jan 2018
KernelVersion:	4.15
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	This contains XDomain service specific settings as
		bitmask. Format: %x

What:		/sys/bus/thunderbolt/devices/usb4_portX/connector
Date:		April 2022
Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
Description:
		Symlink to the USB Type-C connector. This link is only
		created when USB Type-C Connector Class is enabled,
		and only if the system firmware is capable of
		describing the connection between a port and its
		connector.

What:		/sys/bus/thunderbolt/devices/usb4_portX/link
Date:		Sep 2021
KernelVersion:	v5.14
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Returns the current link mode. Possible values are
		"usb4", "tbt" and "none".

What:		/sys/bus/thunderbolt/devices/usb4_portX/offline
Date:		Sep 2021
KernelVersion:	v5.14
Contact:	Rajmohan Mani <rajmohan.mani@intel.com>
Description:	Writing 1 to this attribute puts the USB4 port into
		offline mode. Only allowed when there is nothing
		connected to the port (link attribute returns "none").
		Once the port is in offline mode it does not receive any
		hotplug events. This is used to update NVM firmware of
		on-board retimers. Writing 0 puts the port back to
		online mode.

		This attribute is only visible if the platform supports
		powering on retimers when there is no cable connected.

What:		/sys/bus/thunderbolt/devices/usb4_portX/rescan
Date:		Sep 2021
KernelVersion:	v5.14
Contact:	Rajmohan Mani <rajmohan.mani@intel.com>
Description:	When the USB4 port is in offline mode writing 1 to this
		attribute forces rescan of the sideband for on-board
		retimers. Each retimer appear under the USB4 port as if
		the USB4 link was up. These retimers act in the same way
		as if the cable was connected so upgrading their NVM
		firmware can be done the usual way.

What:		/sys/bus/thunderbolt/devices/<device>:<port>.<index>/device
Date:		Oct 2020
KernelVersion:	v5.9
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Retimer device identifier read from the hardware.

What:		/sys/bus/thunderbolt/devices/<device>:<port>.<index>/nvm_authenticate
Date:		Oct 2020
KernelVersion:	v5.9
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	When new NVM image is written to the non-active NVM
		area (through non_activeX NVMem device), the
		authentication procedure is started by writing 1 to
		this file. If everything goes well, the device is
		restarted with the new NVM firmware. If the image
		verification fails an error code is returned instead.

		When read holds status of the last authentication
		operation if an error occurred during the process.
		Format: %x.

What:		/sys/bus/thunderbolt/devices/<device>:<port>.<index>/nvm_version
Date:		Oct 2020
KernelVersion:	v5.9
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Holds retimer NVM version number. Format: %x.%x, major.minor.

What:		/sys/bus/thunderbolt/devices/<device>:<port>.<index>/vendor
Date:		Oct 2020
KernelVersion:	v5.9
Contact:	Mika Westerberg <mika.westerberg@linux.intel.com>
Description:	Retimer vendor identifier read from the hardware.
