Linux 6.7-rc7
[linux-modified.git] / Documentation / ABI / testing / sysfs-class-typec
1 USB Type-C port devices (eg. /sys/class/typec/port0/)
2
3 What:           /sys/class/typec/<port>/data_role
4 Date:           April 2017
5 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
6 Description:
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
18 What:           /sys/class/typec/<port>/power_role
19 Date:           April 2017
20 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
21 Description:
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
33 What:           /sys/class/typec/<port>/port_type
34 Date:           May 2017
35 Contact:        Badhri Jagan Sridharan <Badhri@google.com>
36 Description:
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
51 What:           /sys/class/typec/<port>/vconn_source
52 Date:           April 2017
53 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
54 Description:
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
69 What:           /sys/class/typec/<port>/power_operation_mode
70 Date:           April 2017
71 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
72 Description:
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
85 What:           /sys/class/typec/<port>/preferred_role
86 Date:           April 2017
87 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
88 Description:
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
96 What:           /sys/class/typec/<port>/supported_accessory_modes
97 Date:           April 2017
98 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
99 Description:
100                 Space separated list of accessory modes, defined in the USB
101                 Type-C specification, the port supports.
102
103 What:           /sys/class/typec/<port>/usb_power_delivery_revision
104 Date:           April 2017
105 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
106 Description:
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
115 What:           /sys/class/typec/<port>-{partner|cable}/usb_power_delivery_revision
116 Date:           January 2021
117 Contact:        Benson Leung <bleung@chromium.org>
118 Description:
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
128 What:           /sys/class/typec/<port>/usb_typec_revision
129 Date:           April 2017
130 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
131 Description:
132                 Revision number of the supported USB Type-C specification.
133
134 What:           /sys/class/typec/<port>/orientation
135 Date:           February 2020
136 Contact:        Badhri Jagan Sridharan <badhri@google.com>
137 Description:
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
144 What:           /sys/class/typec/<port>/select_usb_power_delivery
145 Date:           May 2022
146 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
147 Description:
148                 Lists the USB Power Delivery Capabilities that the port can
149                 advertise to the partner. The currently used capabilities are in
150                 brackets. Selection happens by writing to the file.
151
152 USB Type-C partner devices (eg. /sys/class/typec/port0-partner/)
153
154 What:           /sys/class/typec/<port>-partner/accessory_mode
155 Date:           April 2017
156 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
157 Description:
158                 Shows the Accessory Mode name when the partner is an Accessory.
159                 The Accessory Modes are defined in USB Type-C Specification.
160
161 What:           /sys/class/typec/<port>-partner/supports_usb_power_delivery
162 Date:           April 2017
163 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
164 Description:
165                 Shows if the partner supports USB Power Delivery communication:
166                 Valid values: yes, no
167
168 What:           /sys/class/typec/<port>-partner/number_of_alternate_modes
169 Date:           November 2020
170 Contact:        Prashant Malani <pmalani@chromium.org>
171 Description:
172                 Shows the number of alternate modes which are advertised by the partner
173                 during Power Delivery discovery. This file remains hidden until a value
174                 greater than or equal to 0 is set by Type C port driver.
175
176 What:           /sys/class/typec/<port>-partner/type
177 Date:           December 2020
178 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
179 Description:    USB Power Delivery Specification defines a set of product types
180                 for the partner devices. This file will show the product type of
181                 the partner if it is known. Dual-role capable partners will have
182                 both UFP and DFP product types defined, but only one that
183                 matches the current role will be active at the time. If the
184                 product type of the partner is not visible to the device driver,
185                 this file will not exist.
186
187                 When the partner product type is detected, or changed with role
188                 swap, uvevent is also raised that contains PRODUCT_TYPE=<product
189                 type> (for example PRODUCT_TYPE=hub).
190
191                 Valid values:
192
193                 UFP / device role
194                 ======================  ==========================
195                 undefined               -
196                 hub                     PDUSB Hub
197                 peripheral              PDUSB Peripheral
198                 psd                     Power Bank
199                 ama                     Alternate Mode Adapter
200                 ======================  ==========================
201
202                 DFP / host role
203                 ======================  ==========================
204                 undefined               -
205                 hub                     PDUSB Hub
206                 host                    PDUSB Host
207                 power_brick             Power Brick
208                 amc                     Alternate Mode Controller
209                 ======================  ==========================
210
211 What:           /sys/class/typec/<port>-partner/identity/
212 Date:           April 2017
213 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
214 Description:
215                 This directory appears only if the port device driver is capable
216                 of showing the result of Discover Identity USB power delivery
217                 command. That will not always be possible even when USB power
218                 delivery is supported, for example when USB power delivery
219                 communication for the port is mostly handled in firmware. If the
220                 directory exists, it will have an attribute file for every VDO
221                 in Discover Identity command result.
222
223 USB Type-C cable devices (eg. /sys/class/typec/port0-cable/)
224
225 Note: Electronically Marked Cables will have a device also for one cable plug
226 (eg. /sys/class/typec/port0-plug0). If the cable is active and has also SOP
227 Double Prime controller (USB Power Deliver specification ch. 2.4) it will have
228 second device also for the other plug. Both plugs may have alternate modes as
229 described in USB Type-C and USB Power Delivery specifications.
230
231 What:           /sys/class/typec/<port>-cable/type
232 Date:           April 2017
233 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
234 Description:    USB Power Delivery Specification defines a set of product types
235                 for the cables. This file will show the product type of the
236                 cable if it is known. If the product type of the cable is not
237                 visible to the device driver, this file will not exist.
238
239                 When the cable product type is detected, uvevent is also raised
240                 with PRODUCT_TYPE showing the product type of the cable.
241
242                 Valid values:
243
244                 ======================  ==========================
245                 undefined               -
246                 active                  Active Cable
247                 passive                 Passive Cable
248                 ======================  ==========================
249
250 What:           /sys/class/typec/<port>-cable/plug_type
251 Date:           April 2017
252 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
253 Description:
254                 Shows type of the plug on the cable:
255
256                 - type-a - Standard A
257                 - type-b - Standard B
258                 - type-c
259                 - captive
260
261 What:           /sys/class/typec/<port>-<plug>/number_of_alternate_modes
262 Date:           November 2020
263 Contact:        Prashant Malani <pmalani@chromium.org>
264 Description:
265                 Shows the number of alternate modes which are advertised by the plug
266                 associated with a particular cable during Power Delivery discovery.
267                 This file remains hidden until a value greater than or equal to 0
268                 is set by Type C port driver.
269
270
271 USB Type-C partner/cable Power Delivery Identity objects
272
273 NOTE: The following attributes will be applicable to both
274 partner (e.g /sys/class/typec/port0-partner/) and
275 cable (e.g /sys/class/typec/port0-cable/) devices. Consequently, the example file
276 paths below are prefixed with "/sys/class/typec/<port>-{partner|cable}/" to
277 reflect this.
278
279 What:           /sys/class/typec/<port>-{partner|cable}/identity/
280 Date:           April 2017
281 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
282 Description:
283                 This directory appears only if the port device driver is capable
284                 of showing the result of Discover Identity USB power delivery
285                 command. That will not always be possible even when USB power
286                 delivery is supported, for example when USB power delivery
287                 communication for the port is mostly handled in firmware. If the
288                 directory exists, it will have an attribute file for every VDO
289                 in Discover Identity command result.
290
291 What:           /sys/class/typec/<port>-{partner|cable}/identity/id_header
292 Date:           April 2017
293 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
294 Description:
295                 ID Header 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
299 What:           /sys/class/typec/<port>-{partner|cable}/identity/cert_stat
300 Date:           April 2017
301 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
302 Description:
303                 Cert Stat VDO part of Discover Identity command result. The
304                 value will show 0 until Discover Identity command result becomes
305                 available. The value can be polled.
306
307 What:           /sys/class/typec/<port>-{partner|cable}/identity/product
308 Date:           April 2017
309 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
310 Description:
311                 Product VDO part of Discover Identity command result. The value
312                 will show 0 until Discover Identity command result becomes
313                 available. The value can be polled.
314
315 What:           /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo1
316 Date:           October 2020
317 Contact:        Prashant Malani <pmalani@chromium.org>
318 Description:
319                 1st 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
323 What:           /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo2
324 Date:           October 2020
325 Contact:        Prashant Malani <pmalani@chromium.org>
326 Description:
327                 2nd 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 What:           /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo3
332 Date:           October 2020
333 Contact:        Prashant Malani <pmalani@chromium.org>
334 Description:
335                 3rd Product Type VDO of Discover Identity command result.
336                 The value will show 0 until Discover Identity command result becomes
337                 available and a valid Product Type VDO is returned.
338
339
340 USB Type-C port alternate mode devices.
341
342 What:           /sys/class/typec/<port>/<alt mode>/supported_roles
343 Date:           April 2017
344 Contact:        Heikki Krogerus <heikki.krogerus@linux.intel.com>
345 Description:
346                 Space separated list of the supported roles.
347
348                 Valid values: source, sink