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