1USB Type-C port devices (eg. /sys/class/typec/port0/)
2
3What:		/sys/class/typec/<port>/data_role
4Date:		April 2017
5Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
6Description:
7		The supported USB data roles. This attribute can be used for
8		requesting data role swapping on the port. Swapping is supported
9		as synchronous operation, so write(2) to the attribute will not
10		return until the operation has finished. The attribute is
11		notified about role changes so that poll(2) on the attribute
12		wakes up. Change on the role will also generate uevent
13		KOBJ_CHANGE on the port. The current role is show in brackets,
14		for example "[host] device" when DRP port is in host mode.
15
16		Valid values: host, device
17
18What:		/sys/class/typec/<port>/power_role
19Date:		April 2017
20Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
21Description:
22		The supported power roles. This attribute can be used to request
23		power role swap on the port. Swapping is supported as
24		synchronous operation, so write(2) to the attribute will not
25		return until the operation has finished. The attribute is
26		notified about role changes so that poll(2) on the attribute
27		wakes up. Change on the role will also generate uevent
28		KOBJ_CHANGE. The current role is show in brackets, for example
29		"[source] sink" when in source mode.
30
31		Valid values: source, sink
32
33What:           /sys/class/typec/<port>/port_type
34Date:           May 2017
35Contact:	Badhri Jagan Sridharan <Badhri@google.com>
36Description:
37		Indicates the type of the port. This attribute can be used for
38		requesting a change in the port type. Port type change is
39		supported as a synchronous operation, so write(2) to the
40		attribute will not return until the operation has finished.
41
42		Valid values:
43
44		======  ==============================================
45		source  (The port will behave as source only DFP port)
46		sink    (The port will behave as sink only UFP port)
47		dual    (The port will behave as dual-role-data and
48			dual-role-power port)
49		======  ==============================================
50
51What:		/sys/class/typec/<port>/vconn_source
52Date:		April 2017
53Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
54Description:
55		Shows is the port VCONN Source. This attribute can be used to
56		request VCONN swap to change the VCONN Source during connection
57		when both the port and the partner support USB Power Delivery.
58		Swapping is supported as synchronous operation, so write(2) to
59		the attribute will not return until the operation has finished.
60		The attribute is notified about VCONN source changes so that
61		poll(2) on the attribute wakes up. Change on VCONN source also
62		generates uevent KOBJ_CHANGE.
63
64		Valid values:
65
66		- "no" when the port is not the VCONN Source
67		- "yes" when the port is the VCONN Source
68
69What:		/sys/class/typec/<port>/power_operation_mode
70Date:		April 2017
71Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
72Description:
73		Shows the current power operational mode the port is in. The
74		power operation mode means current level for VBUS. In case USB
75		Power Delivery communication is used for negotiating the levels,
76		power operation mode should show "usb_power_delivery".
77
78		Valid values:
79
80		- default
81		- 1.5A
82		- 3.0A
83		- usb_power_delivery
84
85What:		/sys/class/typec/<port>/preferred_role
86Date:		April 2017
87Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
88Description:
89		The user space can notify the driver about the preferred role.
90		It should be handled as enabling of Try.SRC or Try.SNK, as
91		defined in USB Type-C specification, in the port drivers. By
92		default the preferred role should come from the platform.
93
94		Valid values: source, sink, none (to remove preference)
95
96What:		/sys/class/typec/<port>/supported_accessory_modes
97Date:		April 2017
98Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
99Description:
100		Space separated list of accessory modes, defined in the USB
101		Type-C specification, the port supports.
102
103What:		/sys/class/typec/<port>/usb_power_delivery_revision
104Date:		April 2017
105Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
106Description:
107		Revision number of the supported USB Power Delivery
108		specification, or 0.0 when USB Power Delivery is not supported.
109
110		Example values:
111		- "2.0": USB Power Delivery Release 2.0
112		- "3.0": USB Power Delivery Release 3.0
113		- "3.1": USB Power Delivery Release 3.1
114
115What:		/sys/class/typec/<port>-{partner|cable}/usb_power_delivery_revision
116Date:		January 2021
117Contact:	Benson Leung <bleung@chromium.org>
118Description:
119		Revision number of the supported USB Power Delivery
120		specification of the port partner or cable, or 0.0 when USB
121		Power Delivery is not supported.
122
123		Example values:
124		- "2.0": USB Power Delivery Release 2.0
125		- "3.0": USB Power Delivery Release 3.0
126		- "3.1": USB Power Delivery Release 3.1
127
128What:		/sys/class/typec/<port>/usb_typec_revision
129Date:		April 2017
130Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
131Description:
132		Revision number of the supported USB Type-C specification.
133
134What:		/sys/class/typec/<port>/orientation
135Date:		February 2020
136Contact:	Badhri Jagan Sridharan <badhri@google.com>
137Description:
138		Indicates the active orientation of the Type-C connector.
139		Valid values:
140		- "normal": CC1 orientation
141		- "reverse": CC2 orientation
142		- "unknown": Orientation cannot be determined.
143
144USB Type-C partner devices (eg. /sys/class/typec/port0-partner/)
145
146What:		/sys/class/typec/<port>-partner/accessory_mode
147Date:		April 2017
148Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
149Description:
150		Shows the Accessory Mode name when the partner is an Accessory.
151		The Accessory Modes are defined in USB Type-C Specification.
152
153What:		/sys/class/typec/<port>-partner/supports_usb_power_delivery
154Date:		April 2017
155Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
156Description:
157		Shows if the partner supports USB Power Delivery communication:
158		Valid values: yes, no
159
160What:		/sys/class/typec/<port>-partner/number_of_alternate_modes
161Date:		November 2020
162Contact:	Prashant Malani <pmalani@chromium.org>
163Description:
164		Shows the number of alternate modes which are advertised by the partner
165		during Power Delivery discovery. This file remains hidden until a value
166		greater than or equal to 0 is set by Type C port driver.
167
168What:		/sys/class/typec/<port>-partner/type
169Date:		December 2020
170Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
171Description:	USB Power Delivery Specification defines a set of product types
172		for the partner devices. This file will show the product type of
173		the partner if it is known. Dual-role capable partners will have
174		both UFP and DFP product types defined, but only one that
175		matches the current role will be active at the time. If the
176		product type of the partner is not visible to the device driver,
177		this file will not exist.
178
179		When the partner product type is detected, or changed with role
180		swap, uvevent is also raised that contains PRODUCT_TYPE=<product
181		type> (for example PRODUCT_TYPE=hub).
182
183		Valid values:
184
185		UFP / device role
186		======================  ==========================
187		undefined		-
188		hub			PDUSB Hub
189		peripheral		PDUSB Peripheral
190		psd			Power Bank
191		ama			Alternate Mode Adapter
192		======================  ==========================
193
194		DFP / host role
195		======================  ==========================
196		undefined		-
197		hub			PDUSB Hub
198		host			PDUSB Host
199		power_brick		Power Brick
200		amc			Alternate Mode Controller
201		======================  ==========================
202
203What:		/sys/class/typec/<port>-partner>/identity/
204Date:		April 2017
205Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
206Description:
207		This directory appears only if the port device driver is capable
208		of showing the result of Discover Identity USB power delivery
209		command. That will not always be possible even when USB power
210		delivery is supported, for example when USB power delivery
211		communication for the port is mostly handled in firmware. If the
212		directory exists, it will have an attribute file for every VDO
213		in Discover Identity command result.
214
215USB Type-C cable devices (eg. /sys/class/typec/port0-cable/)
216
217Note: Electronically Marked Cables will have a device also for one cable plug
218(eg. /sys/class/typec/port0-plug0). If the cable is active and has also SOP
219Double Prime controller (USB Power Deliver specification ch. 2.4) it will have
220second device also for the other plug. Both plugs may have alternate modes as
221described in USB Type-C and USB Power Delivery specifications.
222
223What:		/sys/class/typec/<port>-cable/type
224Date:		April 2017
225Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
226Description:	USB Power Delivery Specification defines a set of product types
227		for the cables. This file will show the product type of the
228		cable if it is known. If the product type of the cable is not
229		visible to the device driver, this file will not exist.
230
231		When the cable product type is detected, uvevent is also raised
232		with PRODUCT_TYPE showing the product type of the cable.
233
234		Valid values:
235
236		======================  ==========================
237		undefined		-
238		active			Active Cable
239		passive			Passive Cable
240		======================  ==========================
241
242What:		/sys/class/typec/<port>-cable/plug_type
243Date:		April 2017
244Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
245Description:
246		Shows type of the plug on the cable:
247
248		- type-a - Standard A
249		- type-b - Standard B
250		- type-c
251		- captive
252
253What:		/sys/class/typec/<port>-<plug>/number_of_alternate_modes
254Date:		November 2020
255Contact:	Prashant Malani <pmalani@chromium.org>
256Description:
257		Shows the number of alternate modes which are advertised by the plug
258		associated with a particular cable during Power Delivery discovery.
259		This file remains hidden until a value greater than or equal to 0
260		is set by Type C port driver.
261
262
263USB Type-C partner/cable Power Delivery Identity objects
264
265NOTE: The following attributes will be applicable to both
266partner (e.g /sys/class/typec/port0-partner/) and
267cable (e.g /sys/class/typec/port0-cable/) devices. Consequently, the example file
268paths below are prefixed with "/sys/class/typec/<port>-{partner|cable}/" to
269reflect this.
270
271What:		/sys/class/typec/<port>-{partner|cable}/identity/
272Date:		April 2017
273Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
274Description:
275		This directory appears only if the port device driver is capable
276		of showing the result of Discover Identity USB power delivery
277		command. That will not always be possible even when USB power
278		delivery is supported, for example when USB power delivery
279		communication for the port is mostly handled in firmware. If the
280		directory exists, it will have an attribute file for every VDO
281		in Discover Identity command result.
282
283What:		/sys/class/typec/<port>-{partner|cable}/identity/id_header
284Date:		April 2017
285Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
286Description:
287		ID Header VDO part of Discover Identity command result. The
288		value will show 0 until Discover Identity command result becomes
289		available. The value can be polled.
290
291What:		/sys/class/typec/<port>-{partner|cable}/identity/cert_stat
292Date:		April 2017
293Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
294Description:
295		Cert Stat VDO part of Discover Identity command result. The
296		value will show 0 until Discover Identity command result becomes
297		available. The value can be polled.
298
299What:		/sys/class/typec/<port>-{partner|cable}/identity/product
300Date:		April 2017
301Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
302Description:
303		Product VDO part of Discover Identity command result. The value
304		will show 0 until Discover Identity command result becomes
305		available. The value can be polled.
306
307What:		/sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo1
308Date:		October 2020
309Contact:	Prashant Malani <pmalani@chromium.org>
310Description:
311		1st Product Type VDO of Discover Identity command result.
312		The value will show 0 until Discover Identity command result becomes
313		available and a valid Product Type VDO is returned.
314
315What:		/sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo2
316Date:		October 2020
317Contact:	Prashant Malani <pmalani@chromium.org>
318Description:
319		2nd Product Type VDO of Discover Identity command result.
320		The value will show 0 until Discover Identity command result becomes
321		available and a valid Product Type VDO is returned.
322
323What:		/sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo3
324Date:		October 2020
325Contact:	Prashant Malani <pmalani@chromium.org>
326Description:
327		3rd Product Type VDO of Discover Identity command result.
328		The value will show 0 until Discover Identity command result becomes
329		available and a valid Product Type VDO is returned.
330
331
332USB Type-C port alternate mode devices.
333
334What:		/sys/class/typec/<port>/<alt mode>/supported_roles
335Date:		April 2017
336Contact:	Heikki Krogerus <heikki.krogerus@linux.intel.com>
337Description:
338		Space separated list of the supported roles.
339
340		Valid values: source, sink
341