1# 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  label:
34    description: Symbolic name for the connector.
35
36  type:
37    description: Size of the connector, should be specified in case of
38      non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible
39      connectors.
40    $ref: /schemas/types.yaml#definitions/string
41
42    enum:
43      - mini
44      - micro
45
46  self-powered:
47    description: Set this property if the USB device has its own power source.
48    type: boolean
49
50  # The following are optional properties for "usb-b-connector".
51  id-gpios:
52    description: An input gpio for USB ID pin.
53    maxItems: 1
54
55  vbus-gpios:
56    description: An input gpio for USB VBus pin, used to detect presence of
57      VBUS 5V.
58    maxItems: 1
59
60  vbus-supply:
61    description: A phandle to the regulator for USB VBUS if needed when host
62      mode or dual role mode is supported.
63      Particularly, if use an output GPIO to control a VBUS regulator, should
64      model it as a regulator. See bindings/regulator/fixed-regulator.yaml
65
66  # The following are optional properties for "usb-c-connector".
67  power-role:
68    description: Determines the power role that the Type C connector will
69      support. "dual" refers to Dual Role Port (DRP).
70    $ref: /schemas/types.yaml#definitions/string
71
72    enum:
73      - source
74      - sink
75      - dual
76
77  try-power-role:
78    description: Preferred power role.
79    $ref: /schemas/types.yaml#definitions/string
80
81    enum:
82      - source
83      - sink
84      - dual
85
86  data-role:
87    description: Data role if Type C connector supports USB data. "dual" refers
88      Dual Role Device (DRD).
89    $ref: /schemas/types.yaml#definitions/string
90
91    enum:
92      - host
93      - device
94      - dual
95
96  # The following are optional properties for "usb-c-connector" with power
97  # delivery support.
98  source-pdos:
99    description: An array of u32 with each entry providing supported power
100      source data object(PDO), the detailed bit definitions of PDO can be found
101      in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2
102      Source_Capabilities Message, the order of each entry(PDO) should follow
103      the PD spec chapter 6.4.1. Required for power source and power dual role.
104      User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO()
105      defined in dt-bindings/usb/pd.h.
106    minItems: 1
107    maxItems: 7
108    $ref: /schemas/types.yaml#/definitions/uint32-array
109
110  sink-pdos:
111    description: An array of u32 with each entry providing supported power sink
112      data object(PDO), the detailed bit definitions of PDO can be found in
113      "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3
114      Sink Capabilities Message, the order of each entry(PDO) should follow the
115      PD spec chapter 6.4.1. Required for power sink and power dual role. User
116      can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined
117      in dt-bindings/usb/pd.h.
118    minItems: 1
119    maxItems: 7
120    $ref: /schemas/types.yaml#/definitions/uint32-array
121
122  op-sink-microwatt:
123    description: Sink required operating power in microwatt, if source can't
124      offer the power, Capability Mismatch is set. Required for power sink and
125      power dual role.
126
127  ports:
128    description: OF graph bindings (specified in bindings/graph.txt) that model
129      any data bus to the connector unless the bus is between parent node and
130      the connector. Since a single connector can have multiple data buses every
131      bus has an assigned OF graph port number as described below.
132    type: object
133    properties:
134      port@0:
135        type: object
136        description: High Speed (HS), present in all connectors.
137
138      port@1:
139        type: object
140        description: Super Speed (SS), present in SS capable connectors.
141
142      port@2:
143        type: object
144        description: Sideband Use (SBU), present in USB-C. This describes the
145          alternate mode connection of which SBU is a part.
146
147    required:
148      - port@0
149
150  new-source-frs-typec-current:
151    description: Initial current capability of the new source when vSafe5V
152      is applied during PD3.0 Fast Role Swap. "Table 6-14 Fixed Supply PDO - Sink"
153      of "USB Power Delivery Specification Revision 3.0, Version 1.2" provides the
154      different power levels and "6.4.1.3.1.6 Fast Role Swap USB Type-C Current"
155      provides a detailed description of the field. The sink PDO from current source
156      reflects the current source's(i.e. transmitter of the FRS signal) power
157      requirement during fr swap. The current sink (i.e. receiver of the FRS signal),
158      a.k.a new source, should check if it will be able to satisfy the current source's,
159      new sink's, requirement during frswap before enabling the frs signal reception.
160      This property refers to maximum current capability that the current sink can
161      satisfy. During FRS, VBUS voltage is at 5V, as the partners are in implicit
162      contract, hence, the power level is only a function of the current capability.
163      "1" refers to default USB power level as described by "Table 6-14 Fixed Supply PDO - Sink".
164      "2" refers to 1.5A@5V.
165      "3" refers to 3.0A@5V.
166    $ref: /schemas/types.yaml#/definitions/uint32
167    enum: [1, 2, 3]
168
169required:
170  - compatible
171
172allOf:
173  - if:
174      properties:
175        compatible:
176          contains:
177            const: gpio-usb-b-connector
178    then:
179      anyOf:
180        - required:
181            - vbus-gpios
182        - required:
183            - id-gpios
184
185  - if:
186      properties:
187        compatible:
188          contains:
189            const: samsung,usb-connector-11pin
190    then:
191      properties:
192        type:
193          const: micro
194
195additionalProperties: true
196
197examples:
198  # Micro-USB connector with HS lines routed via controller (MUIC).
199  - |
200    muic-max77843 {
201      usb_con1: connector {
202        compatible = "usb-b-connector";
203        label = "micro-USB";
204        type = "micro";
205      };
206    };
207
208  # USB-C connector attached to CC controller (s2mm005), HS lines routed
209  # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort.
210  # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY.
211  - |
212    ccic: s2mm005 {
213      usb_con2: connector {
214        compatible = "usb-c-connector";
215        label = "USB-C";
216
217        ports {
218          #address-cells = <1>;
219          #size-cells = <0>;
220
221          port@0 {
222            reg = <0>;
223            usb_con_hs: endpoint {
224              remote-endpoint = <&max77865_usbc_hs>;
225            };
226          };
227          port@1 {
228            reg = <1>;
229            usb_con_ss: endpoint {
230              remote-endpoint = <&usbdrd_phy_ss>;
231            };
232          };
233          port@2 {
234            reg = <2>;
235            usb_con_sbu: endpoint {
236              remote-endpoint = <&dp_aux>;
237            };
238          };
239        };
240      };
241    };
242
243  # USB-C connector attached to a typec port controller(ptn5110), which has
244  # power delivery support and enables drp.
245  - |
246    #include <dt-bindings/usb/pd.h>
247    typec: ptn5110 {
248      usb_con3: connector {
249        compatible = "usb-c-connector";
250        label = "USB-C";
251        power-role = "dual";
252        try-power-role = "sink";
253        source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
254        sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)
255                     PDO_VAR(5000, 12000, 2000)>;
256        op-sink-microwatt = <10000000>;
257      };
258    };
259
260  # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220)
261  # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and
262  # the output of MUX is connected to the SoC.
263  - |
264    connector {
265        compatible = "usb-c-connector";
266        label = "USB-C";
267        data-role = "dual";
268
269        ports {
270                #address-cells = <1>;
271                #size-cells = <0>;
272                port@0 {
273                        reg = <0>;
274                        hs_ep: endpoint {
275                                remote-endpoint = <&usb3_hs_ep>;
276                        };
277                };
278                port@1 {
279                        reg = <1>;
280                        ss_ep: endpoint {
281                                remote-endpoint = <&hd3ss3220_in_ep>;
282                        };
283                };
284        };
285    };
286
287  # USB connector with GPIO control lines
288  - |
289    #include <dt-bindings/gpio/gpio.h>
290
291    usb {
292      connector {
293        compatible = "gpio-usb-b-connector", "usb-b-connector";
294        type = "micro";
295        id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
296        vbus-supply = <&usb_p0_vbus>;
297      };
298    };
299
300  # Micro-USB connector with HS lines routed via controller (MUIC) and MHL
301  # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based
302  # mobile phone
303  - |
304    muic-max77843 {
305      usb_con4: connector {
306        compatible = "samsung,usb-connector-11pin", "usb-b-connector";
307        label = "micro-USB";
308        type = "micro";
309
310        ports {
311          #address-cells = <1>;
312          #size-cells = <0>;
313
314          port@0 {
315            reg = <0>;
316            muic_to_usb: endpoint {
317              remote-endpoint = <&usb_to_muic>;
318            };
319          };
320          port@3 {
321            reg = <3>;
322            usb_con_mhl: endpoint {
323              remote-endpoint = <&sii8620_mhl>;
324            };
325          };
326        };
327      };
328    };
329