xref: /openbmc/linux/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml (revision fb1ff01307ee3133ae609ad11ebd87379ce5bd9b)
1*fb1ff013SThierry Reding# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*fb1ff013SThierry Reding%YAML 1.2
3*fb1ff013SThierry Reding---
4*fb1ff013SThierry Reding$id: http://devicetree.org/schemas/phy/nvidia,tegra194-xusb-padctl.yaml#
5*fb1ff013SThierry Reding$schema: http://devicetree.org/meta-schemas/core.yaml#
6*fb1ff013SThierry Reding
7*fb1ff013SThierry Redingtitle: NVIDIA Tegra194 XUSB pad controller
8*fb1ff013SThierry Reding
9*fb1ff013SThierry Redingmaintainers:
10*fb1ff013SThierry Reding  - Thierry Reding <thierry.reding@gmail.com>
11*fb1ff013SThierry Reding  - Jon Hunter <jonathanh@nvidia.com>
12*fb1ff013SThierry Reding
13*fb1ff013SThierry Redingdescription: |
14*fb1ff013SThierry Reding  The Tegra XUSB pad controller manages a set of I/O lanes (with differential
15*fb1ff013SThierry Reding  signals) which connect directly to pins/pads on the SoC package. Each lane
16*fb1ff013SThierry Reding  is controlled by a HW block referred to as a "pad" in the Tegra hardware
17*fb1ff013SThierry Reding  documentation. Each such "pad" may control either one or multiple lanes,
18*fb1ff013SThierry Reding  and thus contains any logic common to all its lanes. Each lane can be
19*fb1ff013SThierry Reding  separately configured and powered up.
20*fb1ff013SThierry Reding
21*fb1ff013SThierry Reding  Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
22*fb1ff013SThierry Reding  super-speed USB. Other lanes are for various types of low-speed, full-speed
23*fb1ff013SThierry Reding  or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
24*fb1ff013SThierry Reding  contains a software-configurable mux that sits between the I/O controller
25*fb1ff013SThierry Reding  ports (e.g. PCIe) and the lanes.
26*fb1ff013SThierry Reding
27*fb1ff013SThierry Reding  In addition to per-lane configuration, USB 3.0 ports may require additional
28*fb1ff013SThierry Reding  settings on a per-board basis.
29*fb1ff013SThierry Reding
30*fb1ff013SThierry Reding  Pads will be represented as children of the top-level XUSB pad controller
31*fb1ff013SThierry Reding  device tree node. Each lane exposed by the pad will be represented by its
32*fb1ff013SThierry Reding  own subnode and can be referenced by users of the lane using the standard
33*fb1ff013SThierry Reding  PHY bindings, as described by the phy-bindings.txt file in this directory.
34*fb1ff013SThierry Reding
35*fb1ff013SThierry Reding  The Tegra hardware documentation refers to the connection between the XUSB
36*fb1ff013SThierry Reding  pad controller and the XUSB controller as "ports". This is confusing since
37*fb1ff013SThierry Reding  "port" is typically used to denote the physical USB receptacle. The device
38*fb1ff013SThierry Reding  tree binding in this document uses the term "port" to refer to the logical
39*fb1ff013SThierry Reding  abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
40*fb1ff013SThierry Reding  for the USB signal, the VBUS power supply, the USB 2.0 companion port for
41*fb1ff013SThierry Reding  USB 3.0 receptacles, ...).
42*fb1ff013SThierry Reding
43*fb1ff013SThierry Redingproperties:
44*fb1ff013SThierry Reding  compatible:
45*fb1ff013SThierry Reding    const: nvidia,tegra194-xusb-padctl
46*fb1ff013SThierry Reding
47*fb1ff013SThierry Reding  reg:
48*fb1ff013SThierry Reding    items:
49*fb1ff013SThierry Reding      - description: pad controller registers
50*fb1ff013SThierry Reding      - description: AO registers
51*fb1ff013SThierry Reding
52*fb1ff013SThierry Reding  reg-names:
53*fb1ff013SThierry Reding    items:
54*fb1ff013SThierry Reding      - const: padctl
55*fb1ff013SThierry Reding      - const: ao
56*fb1ff013SThierry Reding
57*fb1ff013SThierry Reding  interrupts:
58*fb1ff013SThierry Reding    items:
59*fb1ff013SThierry Reding      - description: XUSB pad controller interrupt
60*fb1ff013SThierry Reding
61*fb1ff013SThierry Reding  resets:
62*fb1ff013SThierry Reding    items:
63*fb1ff013SThierry Reding      - description: pad controller reset
64*fb1ff013SThierry Reding
65*fb1ff013SThierry Reding  reset-names:
66*fb1ff013SThierry Reding    items:
67*fb1ff013SThierry Reding      - const: padctl
68*fb1ff013SThierry Reding
69*fb1ff013SThierry Reding  avdd-usb-supply:
70*fb1ff013SThierry Reding    description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
71*fb1ff013SThierry Reding      supply 3.3 V.
72*fb1ff013SThierry Reding
73*fb1ff013SThierry Reding  vclamp-usb-supply:
74*fb1ff013SThierry Reding    description: Bias rail for USB pad. Must supply 1.8 V.
75*fb1ff013SThierry Reding
76*fb1ff013SThierry Reding  pads:
77*fb1ff013SThierry Reding    description: A required child node named "pads" contains a list of
78*fb1ff013SThierry Reding      subnodes, one for each of the pads exposed by the XUSB pad controller.
79*fb1ff013SThierry Reding      Each pad may need additional resources that can be referenced in its
80*fb1ff013SThierry Reding      pad node.
81*fb1ff013SThierry Reding
82*fb1ff013SThierry Reding      The "status" property is used to enable or disable the use of a pad.
83*fb1ff013SThierry Reding      If set to "disabled", the pad will not be used on the given board. In
84*fb1ff013SThierry Reding      order to use the pad and any of its lanes, this property must be set
85*fb1ff013SThierry Reding      to "okay" or absent.
86*fb1ff013SThierry Reding    type: object
87*fb1ff013SThierry Reding    additionalProperties: false
88*fb1ff013SThierry Reding    properties:
89*fb1ff013SThierry Reding      usb2:
90*fb1ff013SThierry Reding        type: object
91*fb1ff013SThierry Reding        additionalProperties: false
92*fb1ff013SThierry Reding        properties:
93*fb1ff013SThierry Reding          clocks:
94*fb1ff013SThierry Reding            items:
95*fb1ff013SThierry Reding              - description: USB2 tracking clock
96*fb1ff013SThierry Reding
97*fb1ff013SThierry Reding          clock-names:
98*fb1ff013SThierry Reding            items:
99*fb1ff013SThierry Reding              - const: trk
100*fb1ff013SThierry Reding
101*fb1ff013SThierry Reding          lanes:
102*fb1ff013SThierry Reding            type: object
103*fb1ff013SThierry Reding            additionalProperties: false
104*fb1ff013SThierry Reding            properties:
105*fb1ff013SThierry Reding              usb2-0:
106*fb1ff013SThierry Reding                type: object
107*fb1ff013SThierry Reding                additionalProperties: false
108*fb1ff013SThierry Reding                properties:
109*fb1ff013SThierry Reding                  "#phy-cells":
110*fb1ff013SThierry Reding                    const: 0
111*fb1ff013SThierry Reding
112*fb1ff013SThierry Reding                  nvidia,function:
113*fb1ff013SThierry Reding                    description: Function selection for this lane.
114*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
115*fb1ff013SThierry Reding                    enum: [ xusb ]
116*fb1ff013SThierry Reding
117*fb1ff013SThierry Reding              usb2-1:
118*fb1ff013SThierry Reding                type: object
119*fb1ff013SThierry Reding                additionalProperties: false
120*fb1ff013SThierry Reding                properties:
121*fb1ff013SThierry Reding                  "#phy-cells":
122*fb1ff013SThierry Reding                    const: 0
123*fb1ff013SThierry Reding
124*fb1ff013SThierry Reding                  nvidia,function:
125*fb1ff013SThierry Reding                    description: Function selection for this lane.
126*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
127*fb1ff013SThierry Reding                    enum: [ xusb ]
128*fb1ff013SThierry Reding
129*fb1ff013SThierry Reding              usb2-2:
130*fb1ff013SThierry Reding                type: object
131*fb1ff013SThierry Reding                additionalProperties: false
132*fb1ff013SThierry Reding                properties:
133*fb1ff013SThierry Reding                  "#phy-cells":
134*fb1ff013SThierry Reding                    const: 0
135*fb1ff013SThierry Reding
136*fb1ff013SThierry Reding                  nvidia,function:
137*fb1ff013SThierry Reding                    description: Function selection for this lane.
138*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
139*fb1ff013SThierry Reding                    enum: [ xusb ]
140*fb1ff013SThierry Reding
141*fb1ff013SThierry Reding              usb2-3:
142*fb1ff013SThierry Reding                type: object
143*fb1ff013SThierry Reding                additionalProperties: false
144*fb1ff013SThierry Reding                properties:
145*fb1ff013SThierry Reding                  "#phy-cells":
146*fb1ff013SThierry Reding                    const: 0
147*fb1ff013SThierry Reding
148*fb1ff013SThierry Reding                  nvidia,function:
149*fb1ff013SThierry Reding                    description: Function selection for this lane.
150*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
151*fb1ff013SThierry Reding                    enum: [ xusb ]
152*fb1ff013SThierry Reding
153*fb1ff013SThierry Reding      usb3:
154*fb1ff013SThierry Reding        type: object
155*fb1ff013SThierry Reding        additionalProperties: false
156*fb1ff013SThierry Reding        properties:
157*fb1ff013SThierry Reding          lanes:
158*fb1ff013SThierry Reding            type: object
159*fb1ff013SThierry Reding            additionalProperties: false
160*fb1ff013SThierry Reding            properties:
161*fb1ff013SThierry Reding              usb3-0:
162*fb1ff013SThierry Reding                type: object
163*fb1ff013SThierry Reding                additionalProperties: false
164*fb1ff013SThierry Reding                properties:
165*fb1ff013SThierry Reding                  "#phy-cells":
166*fb1ff013SThierry Reding                    const: 0
167*fb1ff013SThierry Reding
168*fb1ff013SThierry Reding                  nvidia,function:
169*fb1ff013SThierry Reding                    description: Function selection for this lane.
170*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
171*fb1ff013SThierry Reding                    enum: [ xusb ]
172*fb1ff013SThierry Reding
173*fb1ff013SThierry Reding              usb3-1:
174*fb1ff013SThierry Reding                type: object
175*fb1ff013SThierry Reding                additionalProperties: false
176*fb1ff013SThierry Reding                properties:
177*fb1ff013SThierry Reding                  "#phy-cells":
178*fb1ff013SThierry Reding                    const: 0
179*fb1ff013SThierry Reding
180*fb1ff013SThierry Reding                  nvidia,function:
181*fb1ff013SThierry Reding                    description: Function selection for this lane.
182*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
183*fb1ff013SThierry Reding                    enum: [ xusb ]
184*fb1ff013SThierry Reding
185*fb1ff013SThierry Reding              usb3-2:
186*fb1ff013SThierry Reding                type: object
187*fb1ff013SThierry Reding                additionalProperties: false
188*fb1ff013SThierry Reding                properties:
189*fb1ff013SThierry Reding                  "#phy-cells":
190*fb1ff013SThierry Reding                    const: 0
191*fb1ff013SThierry Reding
192*fb1ff013SThierry Reding                  nvidia,function:
193*fb1ff013SThierry Reding                    description: Function selection for this lane.
194*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
195*fb1ff013SThierry Reding                    enum: [ xusb ]
196*fb1ff013SThierry Reding
197*fb1ff013SThierry Reding              usb3-3:
198*fb1ff013SThierry Reding                type: object
199*fb1ff013SThierry Reding                additionalProperties: false
200*fb1ff013SThierry Reding                properties:
201*fb1ff013SThierry Reding                  "#phy-cells":
202*fb1ff013SThierry Reding                    const: 0
203*fb1ff013SThierry Reding
204*fb1ff013SThierry Reding                  nvidia,function:
205*fb1ff013SThierry Reding                    description: Function selection for this lane.
206*fb1ff013SThierry Reding                    $ref: /schemas/types.yaml#/definitions/string
207*fb1ff013SThierry Reding                    enum: [ xusb ]
208*fb1ff013SThierry Reding
209*fb1ff013SThierry Reding  ports:
210*fb1ff013SThierry Reding    description: A required child node named "ports" contains a list of
211*fb1ff013SThierry Reding      subnodes, one for each of the ports exposed by the XUSB pad controller.
212*fb1ff013SThierry Reding      Each port may need additional resources that can be referenced in its
213*fb1ff013SThierry Reding      port node.
214*fb1ff013SThierry Reding
215*fb1ff013SThierry Reding      The "status" property is used to enable or disable the use of a port.
216*fb1ff013SThierry Reding      If set to "disabled", the port will not be used on the given board. In
217*fb1ff013SThierry Reding      order to use the port, this property must be set to "okay".
218*fb1ff013SThierry Reding    type: object
219*fb1ff013SThierry Reding    additionalProperties: false
220*fb1ff013SThierry Reding    properties:
221*fb1ff013SThierry Reding      usb2-0:
222*fb1ff013SThierry Reding        type: object
223*fb1ff013SThierry Reding        additionalProperties: false
224*fb1ff013SThierry Reding        properties:
225*fb1ff013SThierry Reding          # no need to further describe this because the connector will
226*fb1ff013SThierry Reding          # match on gpio-usb-b-connector or usb-b-connector and cause
227*fb1ff013SThierry Reding          # that binding to be selected for the subnode
228*fb1ff013SThierry Reding          connector:
229*fb1ff013SThierry Reding            type: object
230*fb1ff013SThierry Reding
231*fb1ff013SThierry Reding          mode:
232*fb1ff013SThierry Reding            description: A string that determines the mode in which to
233*fb1ff013SThierry Reding              run the port.
234*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
235*fb1ff013SThierry Reding            enum: [ host, peripheral, otg ]
236*fb1ff013SThierry Reding
237*fb1ff013SThierry Reding          nvidia,internal:
238*fb1ff013SThierry Reding            description: A boolean property whose presence determines
239*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
240*fb1ff013SThierry Reding              the port is considered to be external.
241*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
242*fb1ff013SThierry Reding
243*fb1ff013SThierry Reding          usb-role-switch:
244*fb1ff013SThierry Reding            description: |
245*fb1ff013SThierry Reding              A boolean property whole presence indicates that the port
246*fb1ff013SThierry Reding              supports OTG or peripheral mode. If present, the port
247*fb1ff013SThierry Reding              supports switching between USB host and peripheral roles.
248*fb1ff013SThierry Reding              A connector must be added as a subnode in that case.
249*fb1ff013SThierry Reding
250*fb1ff013SThierry Reding              See ../connector/usb-connector.yaml.
251*fb1ff013SThierry Reding
252*fb1ff013SThierry Reding          vbus-supply:
253*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
254*fb1ff013SThierry Reding              voltage.
255*fb1ff013SThierry Reding
256*fb1ff013SThierry Reding        dependencies:
257*fb1ff013SThierry Reding          usb-role-switch: [ connector ]
258*fb1ff013SThierry Reding
259*fb1ff013SThierry Reding      usb2-1:
260*fb1ff013SThierry Reding        type: object
261*fb1ff013SThierry Reding        additionalProperties: false
262*fb1ff013SThierry Reding        properties:
263*fb1ff013SThierry Reding          # no need to further describe this because the connector will
264*fb1ff013SThierry Reding          # match on gpio-usb-b-connector or usb-b-connector and cause
265*fb1ff013SThierry Reding          # that binding to be selected for the subnode
266*fb1ff013SThierry Reding          connector:
267*fb1ff013SThierry Reding            type: object
268*fb1ff013SThierry Reding
269*fb1ff013SThierry Reding          mode:
270*fb1ff013SThierry Reding            description: A string that determines the mode in which to
271*fb1ff013SThierry Reding              run the port.
272*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
273*fb1ff013SThierry Reding            enum: [ host, peripheral, otg ]
274*fb1ff013SThierry Reding
275*fb1ff013SThierry Reding          nvidia,internal:
276*fb1ff013SThierry Reding            description: A boolean property whose presence determines
277*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
278*fb1ff013SThierry Reding              the port is considered to be external.
279*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
280*fb1ff013SThierry Reding
281*fb1ff013SThierry Reding          usb-role-switch:
282*fb1ff013SThierry Reding            description: |
283*fb1ff013SThierry Reding              A boolean property whole presence indicates that the port
284*fb1ff013SThierry Reding              supports OTG or peripheral mode. If present, the port
285*fb1ff013SThierry Reding              supports switching between USB host and peripheral roles.
286*fb1ff013SThierry Reding              A connector must be added as a subnode in that case.
287*fb1ff013SThierry Reding
288*fb1ff013SThierry Reding              See ../connector/usb-connector.yaml.
289*fb1ff013SThierry Reding
290*fb1ff013SThierry Reding          vbus-supply:
291*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
292*fb1ff013SThierry Reding              voltage.
293*fb1ff013SThierry Reding
294*fb1ff013SThierry Reding        dependencies:
295*fb1ff013SThierry Reding          usb-role-switch: [ connector ]
296*fb1ff013SThierry Reding
297*fb1ff013SThierry Reding      usb2-2:
298*fb1ff013SThierry Reding        type: object
299*fb1ff013SThierry Reding        additionalProperties: false
300*fb1ff013SThierry Reding        properties:
301*fb1ff013SThierry Reding          # no need to further describe this because the connector will
302*fb1ff013SThierry Reding          # match on gpio-usb-b-connector or usb-b-connector and cause
303*fb1ff013SThierry Reding          # that binding to be selected for the subnode
304*fb1ff013SThierry Reding          connector:
305*fb1ff013SThierry Reding            type: object
306*fb1ff013SThierry Reding
307*fb1ff013SThierry Reding          mode:
308*fb1ff013SThierry Reding            description: A string that determines the mode in which to
309*fb1ff013SThierry Reding              run the port.
310*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
311*fb1ff013SThierry Reding            enum: [ host, peripheral, otg ]
312*fb1ff013SThierry Reding
313*fb1ff013SThierry Reding          nvidia,internal:
314*fb1ff013SThierry Reding            description: A boolean property whose presence determines
315*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
316*fb1ff013SThierry Reding              the port is considered to be external.
317*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
318*fb1ff013SThierry Reding
319*fb1ff013SThierry Reding          usb-role-switch:
320*fb1ff013SThierry Reding            description: |
321*fb1ff013SThierry Reding              A boolean property whole presence indicates that the port
322*fb1ff013SThierry Reding              supports OTG or peripheral mode. If present, the port
323*fb1ff013SThierry Reding              supports switching between USB host and peripheral roles.
324*fb1ff013SThierry Reding              A connector must be added as a subnode in that case.
325*fb1ff013SThierry Reding
326*fb1ff013SThierry Reding              See ../connector/usb-connector.yaml.
327*fb1ff013SThierry Reding
328*fb1ff013SThierry Reding          vbus-supply:
329*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
330*fb1ff013SThierry Reding              voltage.
331*fb1ff013SThierry Reding
332*fb1ff013SThierry Reding        dependencies:
333*fb1ff013SThierry Reding          usb-role-switch: [ connector ]
334*fb1ff013SThierry Reding
335*fb1ff013SThierry Reding      usb2-3:
336*fb1ff013SThierry Reding        type: object
337*fb1ff013SThierry Reding        additionalProperties: false
338*fb1ff013SThierry Reding        properties:
339*fb1ff013SThierry Reding          # no need to further describe this because the connector will
340*fb1ff013SThierry Reding          # match on gpio-usb-b-connector or usb-b-connector and cause
341*fb1ff013SThierry Reding          # that binding to be selected for the subnode
342*fb1ff013SThierry Reding          connector:
343*fb1ff013SThierry Reding            type: object
344*fb1ff013SThierry Reding
345*fb1ff013SThierry Reding          mode:
346*fb1ff013SThierry Reding            description: A string that determines the mode in which to
347*fb1ff013SThierry Reding              run the port.
348*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
349*fb1ff013SThierry Reding            enum: [ host, peripheral, otg ]
350*fb1ff013SThierry Reding
351*fb1ff013SThierry Reding          nvidia,internal:
352*fb1ff013SThierry Reding            description: A boolean property whose presence determines
353*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
354*fb1ff013SThierry Reding              the port is considered to be external.
355*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
356*fb1ff013SThierry Reding
357*fb1ff013SThierry Reding          usb-role-switch:
358*fb1ff013SThierry Reding            description: |
359*fb1ff013SThierry Reding              A boolean property whole presence indicates that the port
360*fb1ff013SThierry Reding              supports OTG or peripheral mode. If present, the port
361*fb1ff013SThierry Reding              supports switching between USB host and peripheral roles.
362*fb1ff013SThierry Reding              A connector must be added as a subnode in that case.
363*fb1ff013SThierry Reding
364*fb1ff013SThierry Reding              See ../connector/usb-connector.yaml.
365*fb1ff013SThierry Reding
366*fb1ff013SThierry Reding          vbus-supply:
367*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
368*fb1ff013SThierry Reding              voltage.
369*fb1ff013SThierry Reding
370*fb1ff013SThierry Reding        dependencies:
371*fb1ff013SThierry Reding          usb-role-switch: [ connector ]
372*fb1ff013SThierry Reding
373*fb1ff013SThierry Reding      usb3-0:
374*fb1ff013SThierry Reding        type: object
375*fb1ff013SThierry Reding        additionalProperties: false
376*fb1ff013SThierry Reding        properties:
377*fb1ff013SThierry Reding          maximum-speed:
378*fb1ff013SThierry Reding            description: A string property that specifies the maximum
379*fb1ff013SThierry Reding              supported speed of a USB3 port.
380*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
381*fb1ff013SThierry Reding            oneOf:
382*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 2 speed.
383*fb1ff013SThierry Reding                  This is the default.
384*fb1ff013SThierry Reding                const: super-speed-plus
385*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 1 speed
386*fb1ff013SThierry Reding                  only.
387*fb1ff013SThierry Reding                const: super-speed
388*fb1ff013SThierry Reding
389*fb1ff013SThierry Reding          nvidia,internal:
390*fb1ff013SThierry Reding            description: A boolean property whose presence determines
391*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
392*fb1ff013SThierry Reding              the port is considered to be external.
393*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
394*fb1ff013SThierry Reding
395*fb1ff013SThierry Reding          nvidia,usb2-companion:
396*fb1ff013SThierry Reding            description: A single cell that specifies the physical port
397*fb1ff013SThierry Reding              number to map this super-speed USB port to. The range of
398*fb1ff013SThierry Reding              valid port numbers varies with the SoC generation.
399*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/uint32
400*fb1ff013SThierry Reding            enum: [ 0, 1, 2, 3 ]
401*fb1ff013SThierry Reding
402*fb1ff013SThierry Reding          vbus-supply:
403*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
404*fb1ff013SThierry Reding              voltage.
405*fb1ff013SThierry Reding
406*fb1ff013SThierry Reding      usb3-1:
407*fb1ff013SThierry Reding        type: object
408*fb1ff013SThierry Reding        additionalProperties: false
409*fb1ff013SThierry Reding        properties:
410*fb1ff013SThierry Reding          maximum-speed:
411*fb1ff013SThierry Reding            description: A string property that specifies the maximum
412*fb1ff013SThierry Reding              supported speed of a USB3 port.
413*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
414*fb1ff013SThierry Reding            oneOf:
415*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 2 speed.
416*fb1ff013SThierry Reding                  This is the default.
417*fb1ff013SThierry Reding                const: super-speed-plus
418*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 1 speed
419*fb1ff013SThierry Reding                  only.
420*fb1ff013SThierry Reding                const: super-speed
421*fb1ff013SThierry Reding
422*fb1ff013SThierry Reding          nvidia,internal:
423*fb1ff013SThierry Reding            description: A boolean property whose presence determines
424*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
425*fb1ff013SThierry Reding              the port is considered to be external.
426*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
427*fb1ff013SThierry Reding
428*fb1ff013SThierry Reding          nvidia,usb2-companion:
429*fb1ff013SThierry Reding            description: A single cell that specifies the physical port
430*fb1ff013SThierry Reding              number to map this super-speed USB port to. The range of
431*fb1ff013SThierry Reding              valid port numbers varies with the SoC generation.
432*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/uint32
433*fb1ff013SThierry Reding            enum: [ 0, 1, 2, 3 ]
434*fb1ff013SThierry Reding
435*fb1ff013SThierry Reding          vbus-supply:
436*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
437*fb1ff013SThierry Reding              voltage.
438*fb1ff013SThierry Reding
439*fb1ff013SThierry Reding      usb3-2:
440*fb1ff013SThierry Reding        type: object
441*fb1ff013SThierry Reding        additionalProperties: false
442*fb1ff013SThierry Reding        properties:
443*fb1ff013SThierry Reding          maximum-speed:
444*fb1ff013SThierry Reding            description: A string property that specifies the maximum
445*fb1ff013SThierry Reding              supported speed of a USB3 port.
446*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
447*fb1ff013SThierry Reding            oneOf:
448*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 2 speed.
449*fb1ff013SThierry Reding                  This is the default.
450*fb1ff013SThierry Reding                const: super-speed-plus
451*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 1 speed
452*fb1ff013SThierry Reding                  only.
453*fb1ff013SThierry Reding                const: super-speed
454*fb1ff013SThierry Reding
455*fb1ff013SThierry Reding          nvidia,internal:
456*fb1ff013SThierry Reding            description: A boolean property whose presence determines
457*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
458*fb1ff013SThierry Reding              the port is considered to be external.
459*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
460*fb1ff013SThierry Reding
461*fb1ff013SThierry Reding          nvidia,usb2-companion:
462*fb1ff013SThierry Reding            description: A single cell that specifies the physical port
463*fb1ff013SThierry Reding              number to map this super-speed USB port to. The range of
464*fb1ff013SThierry Reding              valid port numbers varies with the SoC generation.
465*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/uint32
466*fb1ff013SThierry Reding            enum: [ 0, 1, 2, 3 ]
467*fb1ff013SThierry Reding
468*fb1ff013SThierry Reding          vbus-supply:
469*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
470*fb1ff013SThierry Reding              voltage.
471*fb1ff013SThierry Reding
472*fb1ff013SThierry Reding      usb3-3:
473*fb1ff013SThierry Reding        type: object
474*fb1ff013SThierry Reding        additionalProperties: false
475*fb1ff013SThierry Reding        properties:
476*fb1ff013SThierry Reding          maximum-speed:
477*fb1ff013SThierry Reding            description: A string property that specifies the maximum
478*fb1ff013SThierry Reding              supported speed of a USB3 port.
479*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/string
480*fb1ff013SThierry Reding            oneOf:
481*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 2 speed.
482*fb1ff013SThierry Reding                  This is the default.
483*fb1ff013SThierry Reding                const: super-speed-plus
484*fb1ff013SThierry Reding              - description: The USB3 port supports USB 3.1 Gen 1 speed
485*fb1ff013SThierry Reding                  only.
486*fb1ff013SThierry Reding                const: super-speed
487*fb1ff013SThierry Reding
488*fb1ff013SThierry Reding          nvidia,internal:
489*fb1ff013SThierry Reding            description: A boolean property whose presence determines
490*fb1ff013SThierry Reding              that a port is internal. In the absence of this property
491*fb1ff013SThierry Reding              the port is considered to be external.
492*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/flag
493*fb1ff013SThierry Reding
494*fb1ff013SThierry Reding          nvidia,usb2-companion:
495*fb1ff013SThierry Reding            description: A single cell that specifies the physical port
496*fb1ff013SThierry Reding              number to map this super-speed USB port to. The range of
497*fb1ff013SThierry Reding              valid port numbers varies with the SoC generation.
498*fb1ff013SThierry Reding            $ref: /schemas/types.yaml#/definitions/uint32
499*fb1ff013SThierry Reding            enum: [ 0, 1, 2, 3 ]
500*fb1ff013SThierry Reding
501*fb1ff013SThierry Reding          vbus-supply:
502*fb1ff013SThierry Reding            description: A phandle to the regulator supplying the VBUS
503*fb1ff013SThierry Reding              voltage.
504*fb1ff013SThierry Reding
505*fb1ff013SThierry RedingadditionalProperties: false
506*fb1ff013SThierry Reding
507*fb1ff013SThierry Redingrequired:
508*fb1ff013SThierry Reding  - compatible
509*fb1ff013SThierry Reding  - reg
510*fb1ff013SThierry Reding  - resets
511*fb1ff013SThierry Reding  - reset-names
512*fb1ff013SThierry Reding  - avdd-usb-supply
513*fb1ff013SThierry Reding  - vclamp-usb-supply
514*fb1ff013SThierry Reding
515*fb1ff013SThierry Redingexamples:
516*fb1ff013SThierry Reding  - |
517*fb1ff013SThierry Reding    #include <dt-bindings/clock/tegra194-clock.h>
518*fb1ff013SThierry Reding    #include <dt-bindings/gpio/tegra194-gpio.h>
519*fb1ff013SThierry Reding    #include <dt-bindings/interrupt-controller/arm-gic.h>
520*fb1ff013SThierry Reding    #include <dt-bindings/reset/tegra194-reset.h>
521*fb1ff013SThierry Reding
522*fb1ff013SThierry Reding    padctl@3520000 {
523*fb1ff013SThierry Reding        compatible = "nvidia,tegra194-xusb-padctl";
524*fb1ff013SThierry Reding        reg = <0x03520000 0x1000>,
525*fb1ff013SThierry Reding              <0x03540000 0x1000>;
526*fb1ff013SThierry Reding        reg-names = "padctl", "ao";
527*fb1ff013SThierry Reding        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
528*fb1ff013SThierry Reding
529*fb1ff013SThierry Reding        resets = <&bpmp TEGRA194_RESET_XUSB_PADCTL>;
530*fb1ff013SThierry Reding        reset-names = "padctl";
531*fb1ff013SThierry Reding
532*fb1ff013SThierry Reding        avdd-usb-supply = <&vdd_usb_3v3>;
533*fb1ff013SThierry Reding        vclamp-usb-supply = <&vdd_1v8ao>;
534*fb1ff013SThierry Reding
535*fb1ff013SThierry Reding        pads {
536*fb1ff013SThierry Reding            usb2 {
537*fb1ff013SThierry Reding                clocks = <&bpmp TEGRA194_CLK_USB2_TRK>;
538*fb1ff013SThierry Reding                clock-names = "trk";
539*fb1ff013SThierry Reding
540*fb1ff013SThierry Reding                lanes {
541*fb1ff013SThierry Reding                    usb2-0 {
542*fb1ff013SThierry Reding                        nvidia,function = "xusb";
543*fb1ff013SThierry Reding                        status = "disabled";
544*fb1ff013SThierry Reding                        #phy-cells = <0>;
545*fb1ff013SThierry Reding                    };
546*fb1ff013SThierry Reding
547*fb1ff013SThierry Reding                    usb2-1 {
548*fb1ff013SThierry Reding                        nvidia,function = "xusb";
549*fb1ff013SThierry Reding                        #phy-cells = <0>;
550*fb1ff013SThierry Reding                    };
551*fb1ff013SThierry Reding
552*fb1ff013SThierry Reding                    usb2-2 {
553*fb1ff013SThierry Reding                        nvidia,function = "xusb";
554*fb1ff013SThierry Reding                        status = "disabled";
555*fb1ff013SThierry Reding                        #phy-cells = <0>;
556*fb1ff013SThierry Reding                    };
557*fb1ff013SThierry Reding
558*fb1ff013SThierry Reding                    usb2-3 {
559*fb1ff013SThierry Reding                        nvidia,function = "xusb";
560*fb1ff013SThierry Reding                        #phy-cells = <0>;
561*fb1ff013SThierry Reding                    };
562*fb1ff013SThierry Reding                };
563*fb1ff013SThierry Reding            };
564*fb1ff013SThierry Reding
565*fb1ff013SThierry Reding            usb3 {
566*fb1ff013SThierry Reding                lanes {
567*fb1ff013SThierry Reding                    usb3-0 {
568*fb1ff013SThierry Reding                        nvidia,function = "xusb";
569*fb1ff013SThierry Reding                        #phy-cells = <0>;
570*fb1ff013SThierry Reding                    };
571*fb1ff013SThierry Reding
572*fb1ff013SThierry Reding                    usb3-1 {
573*fb1ff013SThierry Reding                        nvidia,function = "xusb";
574*fb1ff013SThierry Reding                        status = "disabled";
575*fb1ff013SThierry Reding                        #phy-cells = <0>;
576*fb1ff013SThierry Reding                    };
577*fb1ff013SThierry Reding
578*fb1ff013SThierry Reding                    usb3-2 {
579*fb1ff013SThierry Reding                        nvidia,function = "xusb";
580*fb1ff013SThierry Reding                        status = "disabled";
581*fb1ff013SThierry Reding                        #phy-cells = <0>;
582*fb1ff013SThierry Reding                    };
583*fb1ff013SThierry Reding
584*fb1ff013SThierry Reding                    usb3-3 {
585*fb1ff013SThierry Reding                        nvidia,function = "xusb";
586*fb1ff013SThierry Reding                        #phy-cells = <0>;
587*fb1ff013SThierry Reding                    };
588*fb1ff013SThierry Reding                };
589*fb1ff013SThierry Reding            };
590*fb1ff013SThierry Reding        };
591*fb1ff013SThierry Reding
592*fb1ff013SThierry Reding        ports {
593*fb1ff013SThierry Reding            usb2-0 {
594*fb1ff013SThierry Reding                status = "disabled";
595*fb1ff013SThierry Reding            };
596*fb1ff013SThierry Reding
597*fb1ff013SThierry Reding            usb2-1 {
598*fb1ff013SThierry Reding                vbus-supply = <&vdd_5v0_sys>;
599*fb1ff013SThierry Reding                mode = "host";
600*fb1ff013SThierry Reding            };
601*fb1ff013SThierry Reding
602*fb1ff013SThierry Reding            usb2-2 {
603*fb1ff013SThierry Reding                status = "disabled";
604*fb1ff013SThierry Reding            };
605*fb1ff013SThierry Reding
606*fb1ff013SThierry Reding            usb2-3 {
607*fb1ff013SThierry Reding                vbus-supply = <&vdd_5v_sata>;
608*fb1ff013SThierry Reding                mode = "host";
609*fb1ff013SThierry Reding            };
610*fb1ff013SThierry Reding
611*fb1ff013SThierry Reding            usb3-0 {
612*fb1ff013SThierry Reding                vbus-supply = <&vdd_5v0_sys>;
613*fb1ff013SThierry Reding                nvidia,usb2-companion = <1>;
614*fb1ff013SThierry Reding            };
615*fb1ff013SThierry Reding
616*fb1ff013SThierry Reding            usb3-1 {
617*fb1ff013SThierry Reding                status = "disabled";
618*fb1ff013SThierry Reding            };
619*fb1ff013SThierry Reding
620*fb1ff013SThierry Reding            usb3-2 {
621*fb1ff013SThierry Reding                status = "disabled";
622*fb1ff013SThierry Reding            };
623*fb1ff013SThierry Reding
624*fb1ff013SThierry Reding            usb3-3 {
625*fb1ff013SThierry Reding                maximum-speed = "super-speed";
626*fb1ff013SThierry Reding                vbus-supply = <&vdd_5v0_sys>;
627*fb1ff013SThierry Reding                nvidia,usb2-companion = <3>;
628*fb1ff013SThierry Reding            };
629*fb1ff013SThierry Reding        };
630*fb1ff013SThierry Reding    };
631