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.
15
16properties:
17  compatible:
18    enum:
19      - usb-a-connector
20      - usb-b-connector
21      - usb-c-connector
22
23  label:
24    description: Symbolic name for the connector.
25
26  type:
27    description: Size of the connector, should be specified in case of
28      non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible
29      connectors.
30    allOf:
31      - $ref: /schemas/types.yaml#definitions/string
32    enum:
33      - mini
34      - micro
35
36  self-powered:
37    description: Set this property if the USB device has its own power source.
38    type: boolean
39
40  # The following are optional properties for "usb-b-connector".
41  id-gpios:
42    description: An input gpio for USB ID pin.
43    maxItems: 1
44
45  vbus-gpios:
46    description: An input gpio for USB VBus pin, used to detect presence of
47      VBUS 5V.
48    maxItems: 1
49
50  vbus-supply:
51    description: A phandle to the regulator for USB VBUS if needed when host
52      mode or dual role mode is supported.
53      Particularly, if use an output GPIO to control a VBUS regulator, should
54      model it as a regulator. See bindings/regulator/fixed-regulator.yaml
55
56  # The following are optional properties for "usb-c-connector".
57  power-role:
58    description: Determines the power role that the Type C connector will
59      support. "dual" refers to Dual Role Port (DRP).
60    allOf:
61      - $ref: /schemas/types.yaml#definitions/string
62    enum:
63      - source
64      - sink
65      - dual
66
67  try-power-role:
68    description: Preferred power role.
69    allOf:
70      - $ref: /schemas/types.yaml#definitions/string
71    enum:
72     - source
73     - sink
74     - dual
75
76  data-role:
77    description: Data role if Type C connector supports USB data. "dual" refers
78      Dual Role Device (DRD).
79    allOf:
80      - $ref: /schemas/types.yaml#definitions/string
81    enum:
82      - host
83      - device
84      - dual
85
86  # The following are optional properties for "usb-c-connector" with power
87  # delivery support.
88  source-pdos:
89    description: An array of u32 with each entry providing supported power
90      source data object(PDO), the detailed bit definitions of PDO can be found
91      in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2
92      Source_Capabilities Message, the order of each entry(PDO) should follow
93      the PD spec chapter 6.4.1. Required for power source and power dual role.
94      User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO()
95      defined in dt-bindings/usb/pd.h.
96    minItems: 1
97    maxItems: 7
98    allOf:
99      - $ref: /schemas/types.yaml#/definitions/uint32-array
100
101  sink-pdos:
102    description: An array of u32 with each entry providing supported power sink
103      data object(PDO), the detailed bit definitions of PDO can be found in
104      "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3
105      Sink Capabilities Message, the order of each entry(PDO) should follow the
106      PD spec chapter 6.4.1. Required for power sink and power dual role. User
107      can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined
108      in dt-bindings/usb/pd.h.
109    minItems: 1
110    maxItems: 7
111    allOf:
112      - $ref: /schemas/types.yaml#/definitions/uint32-array
113
114  op-sink-microwatt:
115    description: Sink required operating power in microwatt, if source can't
116      offer the power, Capability Mismatch is set. Required for power sink and
117      power dual role.
118
119  ports:
120    description: OF graph bindings (specified in bindings/graph.txt) that model
121      any data bus to the connector unless the bus is between parent node and
122      the connector. Since a single connector can have multiple data buses every
123      bus has an assigned OF graph port number as described below.
124    type: object
125    properties:
126      port@0:
127        type: object
128        description: High Speed (HS), present in all connectors.
129
130      port@1:
131        type: object
132        description: Super Speed (SS), present in SS capable connectors.
133
134      port@2:
135        type: object
136        description: Sideband Use (SBU), present in USB-C. This describes the
137          alternate mode connection of which SBU is a part.
138
139    required:
140      - port@0
141
142required:
143  - compatible
144
145examples:
146  # Micro-USB connector with HS lines routed via controller (MUIC).
147  - |+
148    muic-max77843 {
149      usb_con1: connector {
150        compatible = "usb-b-connector";
151        label = "micro-USB";
152        type = "micro";
153      };
154    };
155
156  # USB-C connector attached to CC controller (s2mm005), HS lines routed
157  # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort.
158  # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY.
159  - |+
160    ccic: s2mm005 {
161      usb_con2: connector {
162        compatible = "usb-c-connector";
163        label = "USB-C";
164
165        ports {
166          #address-cells = <1>;
167          #size-cells = <0>;
168
169          port@0 {
170            reg = <0>;
171            usb_con_hs: endpoint {
172              remote-endpoint = <&max77865_usbc_hs>;
173            };
174          };
175          port@1 {
176            reg = <1>;
177            usb_con_ss: endpoint {
178              remote-endpoint = <&usbdrd_phy_ss>;
179            };
180          };
181          port@2 {
182            reg = <2>;
183            usb_con_sbu: endpoint {
184              remote-endpoint = <&dp_aux>;
185            };
186          };
187        };
188      };
189    };
190
191  # USB-C connector attached to a typec port controller(ptn5110), which has
192  # power delivery support and enables drp.
193  - |+
194    #include <dt-bindings/usb/pd.h>
195    typec: ptn5110 {
196      usb_con3: connector {
197        compatible = "usb-c-connector";
198        label = "USB-C";
199        power-role = "dual";
200        try-power-role = "sink";
201        source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
202        sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)
203                     PDO_VAR(5000, 12000, 2000)>;
204        op-sink-microwatt = <10000000>;
205      };
206    };
207