1 USB Type-C port devices (eg. /sys/class/typec/port0/)
3 What: /sys/class/typec/<port>/data_role
5 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
16 Valid values: host, device
18 What: /sys/class/typec/<port>/power_role
20 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
31 Valid values: source, sink
33 What: /sys/class/typec/<port>/port_type
35 Contact: Badhri Jagan Sridharan <Badhri@google.com>
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.
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
49 ====== ==============================================
51 What: /sys/class/typec/<port>/vconn_source
53 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
66 - "no" when the port is not the VCONN Source
67 - "yes" when the port is the VCONN Source
69 What: /sys/class/typec/<port>/power_operation_mode
71 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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".
85 What: /sys/class/typec/<port>/preferred_role
87 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
94 Valid values: source, sink, none (to remove preference)
96 What: /sys/class/typec/<port>/supported_accessory_modes
98 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
100 Space separated list of accessory modes, defined in the USB
101 Type-C specification, the port supports.
103 What: /sys/class/typec/<port>/usb_power_delivery_revision
105 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
107 Revision number of the supported USB Power Delivery
108 specification, or 0.0 when USB Power Delivery is not supported.
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
115 What: /sys/class/typec/<port>-{partner|cable}/usb_power_delivery_revision
117 Contact: Benson Leung <bleung@chromium.org>
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.
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
128 What: /sys/class/typec/<port>/usb_typec_revision
130 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
132 Revision number of the supported USB Type-C specification.
134 What: /sys/class/typec/<port>/orientation
136 Contact: Badhri Jagan Sridharan <badhri@google.com>
138 Indicates the active orientation of the Type-C connector.
140 - "normal": CC1 orientation
141 - "reverse": CC2 orientation
142 - "unknown": Orientation cannot be determined.
144 USB Type-C partner devices (eg. /sys/class/typec/port0-partner/)
146 What: /sys/class/typec/<port>-partner/accessory_mode
148 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
150 Shows the Accessory Mode name when the partner is an Accessory.
151 The Accessory Modes are defined in USB Type-C Specification.
153 What: /sys/class/typec/<port>-partner/supports_usb_power_delivery
155 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
157 Shows if the partner supports USB Power Delivery communication:
158 Valid values: yes, no
160 What: /sys/class/typec/<port>-partner/number_of_alternate_modes
162 Contact: Prashant Malani <pmalani@chromium.org>
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.
168 What: /sys/class/typec/<port>-partner/type
170 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
171 Description: 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.
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).
186 ====================== ==========================
189 peripheral PDUSB Peripheral
191 ama Alternate Mode Adapter
192 ====================== ==========================
195 ====================== ==========================
199 power_brick Power Brick
200 amc Alternate Mode Controller
201 ====================== ==========================
203 What: /sys/class/typec/<port>-partner>/identity/
205 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
215 USB Type-C cable devices (eg. /sys/class/typec/port0-cable/)
217 Note: 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
219 Double Prime controller (USB Power Deliver specification ch. 2.4) it will have
220 second device also for the other plug. Both plugs may have alternate modes as
221 described in USB Type-C and USB Power Delivery specifications.
223 What: /sys/class/typec/<port>-cable/type
225 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
226 Description: 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.
231 When the cable product type is detected, uvevent is also raised
232 with PRODUCT_TYPE showing the product type of the cable.
236 ====================== ==========================
239 passive Passive Cable
240 ====================== ==========================
242 What: /sys/class/typec/<port>-cable/plug_type
244 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
246 Shows type of the plug on the cable:
248 - type-a - Standard A
249 - type-b - Standard B
253 What: /sys/class/typec/<port>-<plug>/number_of_alternate_modes
255 Contact: Prashant Malani <pmalani@chromium.org>
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.
263 USB Type-C partner/cable Power Delivery Identity objects
265 NOTE: The following attributes will be applicable to both
266 partner (e.g /sys/class/typec/port0-partner/) and
267 cable (e.g /sys/class/typec/port0-cable/) devices. Consequently, the example file
268 paths below are prefixed with "/sys/class/typec/<port>-{partner|cable}/" to
271 What: /sys/class/typec/<port>-{partner|cable}/identity/
273 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
283 What: /sys/class/typec/<port>-{partner|cable}/identity/id_header
285 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
291 What: /sys/class/typec/<port>-{partner|cable}/identity/cert_stat
293 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
299 What: /sys/class/typec/<port>-{partner|cable}/identity/product
301 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
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.
307 What: /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo1
309 Contact: Prashant Malani <pmalani@chromium.org>
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.
315 What: /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo2
317 Contact: Prashant Malani <pmalani@chromium.org>
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.
323 What: /sys/class/typec/<port>-{partner|cable}/identity/product_type_vdo3
325 Contact: Prashant Malani <pmalani@chromium.org>
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.
332 USB Type-C port alternate mode devices.
334 What: /sys/class/typec/<port>/<alt mode>/supported_roles
336 Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
338 Space separated list of the supported roles.
340 Valid values: source, sink