blob: fb216ce68bb3579f5646b5eff39ebf524cd26a7e [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/connector/usb-connector.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: USB Connector
8
9maintainers:
10 - Rob Herring <robh@kernel.org>
11
12description:
13 A USB connector node represents a physical USB connector. It should be a child
14 of a USB interface controller or a separate node when it is attached to both
15 MUX and USB interface controller.
16
17properties:
18 compatible:
19 oneOf:
20 - enum:
21 - usb-a-connector
22 - usb-b-connector
23 - usb-c-connector
24
25 - items:
26 - const: gpio-usb-b-connector
27 - const: usb-b-connector
28
29 - items:
30 - const: samsung,usb-connector-11pin
31 - const: usb-b-connector
32
33 reg:
34 maxItems: 1
35
36 label:
37 description: Symbolic name for the connector.
38
39 type:
40 description: Size of the connector, should be specified in case of
41 non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible
42 connectors.
43 $ref: /schemas/types.yaml#/definitions/string
44
45 enum:
46 - mini
47 - micro
48
49 self-powered:
50 description: Set this property if the USB device has its own power source.
51 type: boolean
52
53 # The following are optional properties for "usb-b-connector".
54 id-gpios:
55 description: An input gpio for USB ID pin.
56 maxItems: 1
57
58 vbus-gpios:
59 description: An input gpio for USB VBus pin, used to detect presence of
60 VBUS 5V.
61 maxItems: 1
62
63 vbus-supply:
64 description: A phandle to the regulator for USB VBUS if needed when host
65 mode or dual role mode is supported.
66 Particularly, if use an output GPIO to control a VBUS regulator, should
67 model it as a regulator. See bindings/regulator/fixed-regulator.yaml
68
Tom Rini53633a82024-02-29 12:33:36 -050069 power-role:
70 description: Determines the power role that the Type C connector will
71 support. "dual" refers to Dual Role Port (DRP).
72 $ref: /schemas/types.yaml#/definitions/string
73
74 enum:
75 - source
76 - sink
77 - dual
78
79 try-power-role:
80 description: Preferred power role.
81 $ref: /schemas/types.yaml#/definitions/string
82
83 enum:
84 - source
85 - sink
86 - dual
87
88 data-role:
89 description: Data role if Type C connector supports USB data. "dual" refers
90 Dual Role Device (DRD).
91 $ref: /schemas/types.yaml#/definitions/string
92
93 enum:
94 - host
95 - device
96 - dual
97
98 typec-power-opmode:
99 description: Determines the power operation mode that the Type C connector
100 will support and will advertise through CC pins when it has no power
101 delivery support.
102 - "default" corresponds to default USB voltage and current defined by the
103 USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
104 5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
105 operation respectively.
106 - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
107 Type-C Cable and Connector specification, when Power Delivery is not
108 supported.
109 $ref: /schemas/types.yaml#/definitions/string
110 enum:
111 - default
112 - 1.5A
113 - 3.0A
114
115 pd-disable:
116 description: Set this property if the Type-C connector has no power delivery support.
117 type: boolean
118
119 # The following are optional properties for "usb-c-connector" with power
120 # delivery support.
Tom Rini53633a82024-02-29 12:33:36 -0500121 sink-vdos:
122 description: An array of u32 with each entry, a Vendor Defined Message Object (VDO),
123 providing additional information corresponding to the product, the detailed bit
124 definitions and the order of each VDO can be found in
125 "USB Power Delivery Specification Revision 3.0, Version 2.0 + ECNs 2020-12-10"
126 chapter 6.4.4.3.1 Discover Identity. User can specify the VDO array via
127 VDO_IDH/_CERT/_PRODUCT/_UFP/_DFP/_PCABLE/_ACABLE(1/2)/_VPD() defined in
128 dt-bindings/usb/pd.h.
129 minItems: 3
130 maxItems: 6
131 $ref: /schemas/types.yaml#/definitions/uint32-array
132
133 sink-vdos-v1:
134 description: An array of u32 with each entry, a Vendor Defined Message Object (VDO),
135 providing additional information corresponding to the product, the detailed bit
136 definitions and the order of each VDO can be found in
137 "USB Power Delivery Specification Revision 2.0, Version 1.3" chapter 6.4.4.3.1 Discover
138 Identity. User can specify the VDO array via VDO_IDH/_CERT/_PRODUCT/_CABLE/_AMA defined in
139 dt-bindings/usb/pd.h.
140 minItems: 3
141 maxItems: 6
142 $ref: /schemas/types.yaml#/definitions/uint32-array
143
Tom Rini93743d22024-04-01 09:08:13 -0400144 accessory-mode-audio:
145 type: boolean
146 description: Whether the device supports Audio Adapter Accessory Mode. This
147 is only necessary if there are no other means to discover supported
148 alternative modes (e.g. through the UCSI firmware interface).
149
150 accessory-mode-debug:
151 type: boolean
152 description: Whether the device supports Debug Accessory Mode. This
153 is only necessary if there are no other means to discover supported
154 alternative modes (e.g. through the UCSI firmware interface).
155
156 altmodes:
157 type: object
158 description: List of Alternative Modes supported by the schematics on the
159 particular device. This is only necessary if there are no other means to
160 discover supported alternative modes (e.g. through the UCSI firmware
161 interface).
162
163 additionalProperties: false
164
165 patternProperties:
166 "^(displayport)$":
167 type: object
168 description:
169 A single USB-C Alternative Mode as supported by the USB-C connector logic.
170
171 additionalProperties: false
172
173 properties:
174 svid:
175 $ref: /schemas/types.yaml#/definitions/uint16
176 description: Unique value assigned by USB-IF to the Vendor / AltMode.
177 enum: [ 0xff01 ]
178 vdo:
179 $ref: /schemas/types.yaml#/definitions/uint32
180 description: VDO returned by Discover Modes USB PD command.
Tom Rini53633a82024-02-29 12:33:36 -0500181
182 port:
183 $ref: /schemas/graph.yaml#/properties/port
184 description: OF graph bindings modeling a data bus to the connector, e.g.
185 there is a single High Speed (HS) port present in this connector. If there
186 is more than one bus (several port, with 'reg' property), they can be grouped
187 under 'ports'.
188
189 ports:
190 $ref: /schemas/graph.yaml#/properties/ports
191 description: OF graph bindings modeling any data bus to the connector
192 unless the bus is between parent node and the connector. Since a single
193 connector can have multiple data buses every bus has an assigned OF graph
194 port number as described below.
195
196 properties:
197 port@0:
198 $ref: /schemas/graph.yaml#/properties/port
199 description: High Speed (HS), present in all connectors.
200
201 port@1:
202 $ref: /schemas/graph.yaml#/properties/port
203 description: Super Speed (SS), present in SS capable connectors.
204
205 port@2:
206 $ref: /schemas/graph.yaml#/properties/port
207 description: Sideband Use (SBU), present in USB-C. This describes the
208 alternate mode connection of which SBU is a part.
209
210 required:
211 - port@0
212
213 new-source-frs-typec-current:
214 description: Initial current capability of the new source when vSafe5V
215 is applied during PD3.0 Fast Role Swap. "Table 6-14 Fixed Supply PDO - Sink"
216 of "USB Power Delivery Specification Revision 3.0, Version 1.2" provides the
217 different power levels and "6.4.1.3.1.6 Fast Role Swap USB Type-C Current"
218 provides a detailed description of the field. The sink PDO from current source
219 reflects the current source's(i.e. transmitter of the FRS signal) power
220 requirement during fr swap. The current sink (i.e. receiver of the FRS signal),
221 a.k.a new source, should check if it will be able to satisfy the current source's,
222 new sink's, requirement during frswap before enabling the frs signal reception.
223 This property refers to maximum current capability that the current sink can
224 satisfy. During FRS, VBUS voltage is at 5V, as the partners are in implicit
225 contract, hence, the power level is only a function of the current capability.
226 "1" refers to default USB power level as described by "Table 6-14 Fixed Supply PDO - Sink".
227 "2" refers to 1.5A@5V.
228 "3" refers to 3.0A@5V.
229 $ref: /schemas/types.yaml#/definitions/uint32
230 enum: [1, 2, 3]
231
232 slow-charger-loop:
233 description: Allows PMIC charger loops which are slow(i.e. cannot meet the 15ms deadline) to
234 still comply to pSnkStby i.e Maximum power that can be consumed by sink while in Sink Standby
235 state as defined in 7.4.2 Sink Electrical Parameters of USB Power Delivery Specification
236 Revision 3.0, Version 1.2. When the property is set, the port requests pSnkStby(2.5W -
237 5V@500mA) upon entering SNK_DISCOVERY(instead of 3A or the 1.5A, Rp current advertised, during
238 SNK_DISCOVERY) and the actual current limit after reception of PS_Ready for PD link or during
239 SNK_READY for non-pd link.
240 type: boolean
241
Tom Rini93743d22024-04-01 09:08:13 -0400242 capabilities:
243 description: A child node to contain all the selectable USB Power Delivery capabilities.
244 type: object
245
246 patternProperties:
247 "^caps-[0-9]+$":
248 description: Child nodes under "capabilities" node. Each node contains a selectable USB
249 Power Delivery capability.
250 type: object
251 $ref: "#/$defs/capabilities"
252 unevaluatedProperties: false
253
254 additionalProperties: false
255
Tom Rini53633a82024-02-29 12:33:36 -0500256dependencies:
257 sink-vdos-v1: [ sink-vdos ]
258 sink-vdos: [ sink-vdos-v1 ]
259
260required:
261 - compatible
262
Tom Rini93743d22024-04-01 09:08:13 -0400263$defs:
264 capabilities:
265 type: object
266
267 properties:
268 source-pdos:
269 description: An array of u32 with each entry providing supported power
270 source data object(PDO), the detailed bit definitions of PDO can be found
271 in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2
272 Source_Capabilities Message, the order of each entry(PDO) should follow
273 the PD spec chapter 6.4.1. Required for power source and power dual role.
274 User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO()
275 defined in dt-bindings/usb/pd.h.
276 minItems: 1
277 maxItems: 7
278 $ref: /schemas/types.yaml#/definitions/uint32-array
279
280 sink-pdos:
281 description: An array of u32 with each entry providing supported power sink
282 data object(PDO), the detailed bit definitions of PDO can be found in
283 "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3
284 Sink Capabilities Message, the order of each entry(PDO) should follow the
285 PD spec chapter 6.4.1. Required for power sink and power dual role. User
286 can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined
287 in dt-bindings/usb/pd.h.
288 minItems: 1
289 maxItems: 7
290 $ref: /schemas/types.yaml#/definitions/uint32-array
291
292 op-sink-microwatt:
293 description: Sink required operating power in microwatt, if source can't
294 offer the power, Capability Mismatch is set. Required for power sink and
295 power dual role.
296
Tom Rini53633a82024-02-29 12:33:36 -0500297allOf:
Tom Rini93743d22024-04-01 09:08:13 -0400298 - $ref: "#/$defs/capabilities"
Tom Rini53633a82024-02-29 12:33:36 -0500299 - if:
300 properties:
301 compatible:
302 contains:
303 const: gpio-usb-b-connector
304 then:
305 anyOf:
306 - required:
307 - vbus-gpios
308 - required:
309 - id-gpios
310
311 - if:
312 properties:
313 compatible:
314 contains:
315 const: samsung,usb-connector-11pin
316 then:
317 properties:
318 type:
319 const: micro
320
321anyOf:
322 - not:
323 required:
324 - typec-power-opmode
325 - new-source-frs-typec-current
326
Tom Rini93743d22024-04-01 09:08:13 -0400327unevaluatedProperties: false
Tom Rini53633a82024-02-29 12:33:36 -0500328
329examples:
330 # Micro-USB connector with HS lines routed via controller (MUIC).
331 - |
332 muic-max77843 {
333 usb_con1: connector {
334 compatible = "usb-b-connector";
335 label = "micro-USB";
336 type = "micro";
337 };
338 };
339
340 # USB-C connector attached to CC controller (s2mm005), HS lines routed
341 # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort.
342 # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY.
343 - |
344 ccic: s2mm005 {
345 usb_con2: connector {
346 compatible = "usb-c-connector";
347 label = "USB-C";
348
Tom Rini93743d22024-04-01 09:08:13 -0400349 altmodes {
350 displayport {
351 svid = /bits/ 16 <0xff01>;
352 vdo = <0x00001c46>;
353 };
354 };
355
Tom Rini53633a82024-02-29 12:33:36 -0500356 ports {
357 #address-cells = <1>;
358 #size-cells = <0>;
359
360 port@0 {
361 reg = <0>;
362 usb_con_hs: endpoint {
363 remote-endpoint = <&max77865_usbc_hs>;
364 };
365 };
366 port@1 {
367 reg = <1>;
368 usb_con_ss: endpoint {
369 remote-endpoint = <&usbdrd_phy_ss>;
370 };
371 };
372 port@2 {
373 reg = <2>;
374 usb_con_sbu: endpoint {
375 remote-endpoint = <&dp_aux>;
376 };
377 };
378 };
379 };
380 };
381
382 # USB-C connector attached to a typec port controller(ptn5110), which has
383 # power delivery support and enables drp.
384 - |
385 #include <dt-bindings/usb/pd.h>
386 typec: ptn5110 {
387 usb_con3: connector {
388 compatible = "usb-c-connector";
389 label = "USB-C";
390 power-role = "dual";
391 try-power-role = "sink";
392 source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
393 sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)
394 PDO_VAR(5000, 12000, 2000)>;
395 op-sink-microwatt = <10000000>;
396 };
397 };
398
399 # USB-C connector attached to SoC with a single High-Speed controller
400 - |
401 connector {
402 compatible = "usb-c-connector";
403 label = "USB-C";
404
405 port {
406 high_speed_ep: endpoint {
407 remote-endpoint = <&usb_hs_ep>;
408 };
409 };
410 };
411
412 # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220)
413 # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and
414 # the output of MUX is connected to the SoC.
415 - |
416 connector {
417 compatible = "usb-c-connector";
418 label = "USB-C";
419 data-role = "dual";
420
421 ports {
422 #address-cells = <1>;
423 #size-cells = <0>;
424 port@0 {
425 reg = <0>;
426 hs_ep: endpoint {
427 remote-endpoint = <&usb3_hs_ep>;
428 };
429 };
430 port@1 {
431 reg = <1>;
432 ss_ep: endpoint {
433 remote-endpoint = <&hd3ss3220_in_ep>;
434 };
435 };
436 };
437 };
438
439 # USB connector with GPIO control lines
440 - |
441 #include <dt-bindings/gpio/gpio.h>
442
443 usb {
444 connector {
445 compatible = "gpio-usb-b-connector", "usb-b-connector";
446 type = "micro";
447 id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
448 vbus-supply = <&usb_p0_vbus>;
449 };
450 };
451
452 # Micro-USB connector with HS lines routed via controller (MUIC) and MHL
453 # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based
454 # mobile phone
455 - |
456 muic-max77843 {
457 usb_con4: connector {
458 compatible = "samsung,usb-connector-11pin", "usb-b-connector";
459 label = "micro-USB";
460 type = "micro";
461
462 ports {
463 #address-cells = <1>;
464 #size-cells = <0>;
465
466 port@0 {
467 reg = <0>;
468 muic_to_usb: endpoint {
469 remote-endpoint = <&usb_to_muic>;
470 };
471 };
472 port@3 {
473 reg = <3>;
474 usb_con_mhl: endpoint {
475 remote-endpoint = <&sii8620_mhl>;
476 };
477 };
478 };
479 };
480 };