xref: /freebsd/sys/contrib/device-tree/Bindings/phy/nvidia,tegra124-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,tegra124-xusb-padctl.yaml#
5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cb7aa33aSEmmanuel Vadot
7*cb7aa33aSEmmanuel Vadottitle: NVIDIA Tegra124 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    oneOf:
46*cb7aa33aSEmmanuel Vadot      - enum:
47*cb7aa33aSEmmanuel Vadot          - nvidia,tegra124-xusb-padctl
48*cb7aa33aSEmmanuel Vadot
49*cb7aa33aSEmmanuel Vadot      - items:
50*cb7aa33aSEmmanuel Vadot          - const: nvidia,tegra132-xusb-padctl
51*cb7aa33aSEmmanuel Vadot          - const: nvidia,tegra124-xusb-padctl
52*cb7aa33aSEmmanuel Vadot
53*cb7aa33aSEmmanuel Vadot  reg:
54*cb7aa33aSEmmanuel Vadot    maxItems: 1
55*cb7aa33aSEmmanuel Vadot
56*cb7aa33aSEmmanuel Vadot  interrupts:
57*cb7aa33aSEmmanuel Vadot    items:
58*cb7aa33aSEmmanuel Vadot      - description: XUSB pad controller interrupt
59*cb7aa33aSEmmanuel Vadot
60*cb7aa33aSEmmanuel Vadot  resets:
61*cb7aa33aSEmmanuel Vadot    items:
62*cb7aa33aSEmmanuel Vadot      - description: pad controller reset
63*cb7aa33aSEmmanuel Vadot
64*cb7aa33aSEmmanuel Vadot  reset-names:
65*cb7aa33aSEmmanuel Vadot    items:
66*cb7aa33aSEmmanuel Vadot      - const: padctl
67*cb7aa33aSEmmanuel Vadot
68*cb7aa33aSEmmanuel Vadot  avdd-pll-utmip-supply:
69*cb7aa33aSEmmanuel Vadot    description: UTMI PLL power supply. Must supply 1.8 V.
70*cb7aa33aSEmmanuel Vadot
71*cb7aa33aSEmmanuel Vadot  avdd-pll-erefe-supply:
72*cb7aa33aSEmmanuel Vadot    description: PLLE reference PLL power supply. Must supply 1.05 V.
73*cb7aa33aSEmmanuel Vadot
74*cb7aa33aSEmmanuel Vadot  avdd-pex-pll-supply:
75*cb7aa33aSEmmanuel Vadot    description: PCIe/USB3 PLL power supply. Must supply 1.05 V.
76*cb7aa33aSEmmanuel Vadot
77*cb7aa33aSEmmanuel Vadot  hvdd-pex-pll-e-supply:
78*cb7aa33aSEmmanuel Vadot    description: High-voltage PLLE power supply. Must supply 3.3 V.
79*cb7aa33aSEmmanuel Vadot
80*cb7aa33aSEmmanuel Vadot  pads:
81*cb7aa33aSEmmanuel Vadot    description: A required child node named "pads" contains a list of
82*cb7aa33aSEmmanuel Vadot      subnodes, one for each of the pads exposed by the XUSB pad controller.
83*cb7aa33aSEmmanuel Vadot      Each pad may need additional resources that can be referenced in its
84*cb7aa33aSEmmanuel Vadot      pad node.
85*cb7aa33aSEmmanuel Vadot
86*cb7aa33aSEmmanuel Vadot      The "status" property is used to enable or disable the use of a pad.
87*cb7aa33aSEmmanuel Vadot      If set to "disabled", the pad will not be used on the given board. In
88*cb7aa33aSEmmanuel Vadot      order to use the pad and any of its lanes, this property must be set
89*cb7aa33aSEmmanuel Vadot      to "okay" or be absent.
90*cb7aa33aSEmmanuel Vadot    type: object
91*cb7aa33aSEmmanuel Vadot    additionalProperties: false
92*cb7aa33aSEmmanuel Vadot    properties:
93*cb7aa33aSEmmanuel Vadot      usb2:
94*cb7aa33aSEmmanuel Vadot        type: object
95*cb7aa33aSEmmanuel Vadot        additionalProperties: false
96*cb7aa33aSEmmanuel Vadot        properties:
97*cb7aa33aSEmmanuel Vadot          clocks:
98*cb7aa33aSEmmanuel Vadot            items:
99*cb7aa33aSEmmanuel Vadot              - description: USB2 tracking clock
100*cb7aa33aSEmmanuel Vadot
101*cb7aa33aSEmmanuel Vadot          clock-names:
102*cb7aa33aSEmmanuel Vadot            items:
103*cb7aa33aSEmmanuel Vadot              - const: trk
104*cb7aa33aSEmmanuel Vadot
105*cb7aa33aSEmmanuel Vadot          lanes:
106*cb7aa33aSEmmanuel Vadot            type: object
107*cb7aa33aSEmmanuel Vadot            additionalProperties: false
108*cb7aa33aSEmmanuel Vadot            properties:
109*cb7aa33aSEmmanuel Vadot              usb2-0:
110*cb7aa33aSEmmanuel Vadot                type: object
111*cb7aa33aSEmmanuel Vadot                additionalProperties: false
112*cb7aa33aSEmmanuel Vadot                properties:
113*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
114*cb7aa33aSEmmanuel Vadot                    const: 0
115*cb7aa33aSEmmanuel Vadot
116*cb7aa33aSEmmanuel Vadot                  nvidia,function:
117*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
118*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
119*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb, uart ]
120*cb7aa33aSEmmanuel Vadot
121*cb7aa33aSEmmanuel Vadot              usb2-1:
122*cb7aa33aSEmmanuel Vadot                type: object
123*cb7aa33aSEmmanuel Vadot                additionalProperties: false
124*cb7aa33aSEmmanuel Vadot                properties:
125*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
126*cb7aa33aSEmmanuel Vadot                    const: 0
127*cb7aa33aSEmmanuel Vadot
128*cb7aa33aSEmmanuel Vadot                  nvidia,function:
129*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
130*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
131*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb, uart ]
132*cb7aa33aSEmmanuel Vadot
133*cb7aa33aSEmmanuel Vadot              usb2-2:
134*cb7aa33aSEmmanuel Vadot                type: object
135*cb7aa33aSEmmanuel Vadot                additionalProperties: false
136*cb7aa33aSEmmanuel Vadot                properties:
137*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
138*cb7aa33aSEmmanuel Vadot                    const: 0
139*cb7aa33aSEmmanuel Vadot
140*cb7aa33aSEmmanuel Vadot                  nvidia,function:
141*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
142*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
143*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb, uart ]
144*cb7aa33aSEmmanuel Vadot
145*cb7aa33aSEmmanuel Vadot      ulpi:
146*cb7aa33aSEmmanuel Vadot        type: object
147*cb7aa33aSEmmanuel Vadot        additionalProperties: false
148*cb7aa33aSEmmanuel Vadot        properties:
149*cb7aa33aSEmmanuel Vadot          lanes:
150*cb7aa33aSEmmanuel Vadot            type: object
151*cb7aa33aSEmmanuel Vadot            additionalProperties: false
152*cb7aa33aSEmmanuel Vadot            properties:
153*cb7aa33aSEmmanuel Vadot              ulpi-0:
154*cb7aa33aSEmmanuel Vadot                type: object
155*cb7aa33aSEmmanuel Vadot                additionalProperties: false
156*cb7aa33aSEmmanuel Vadot                properties:
157*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
158*cb7aa33aSEmmanuel Vadot                    const: 0
159*cb7aa33aSEmmanuel Vadot
160*cb7aa33aSEmmanuel Vadot                  nvidia,function:
161*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
162*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
163*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb ]
164*cb7aa33aSEmmanuel Vadot
165*cb7aa33aSEmmanuel Vadot      hsic:
166*cb7aa33aSEmmanuel Vadot        type: object
167*cb7aa33aSEmmanuel Vadot        additionalProperties: false
168*cb7aa33aSEmmanuel Vadot        properties:
169*cb7aa33aSEmmanuel Vadot          clocks:
170*cb7aa33aSEmmanuel Vadot            items:
171*cb7aa33aSEmmanuel Vadot              - description: HSIC tracking clock
172*cb7aa33aSEmmanuel Vadot
173*cb7aa33aSEmmanuel Vadot          clock-names:
174*cb7aa33aSEmmanuel Vadot            items:
175*cb7aa33aSEmmanuel Vadot              - const: trk
176*cb7aa33aSEmmanuel Vadot
177*cb7aa33aSEmmanuel Vadot          lanes:
178*cb7aa33aSEmmanuel Vadot            type: object
179*cb7aa33aSEmmanuel Vadot            additionalProperties: false
180*cb7aa33aSEmmanuel Vadot            properties:
181*cb7aa33aSEmmanuel Vadot              hsic-0:
182*cb7aa33aSEmmanuel Vadot                type: object
183*cb7aa33aSEmmanuel Vadot                additionalProperties: false
184*cb7aa33aSEmmanuel Vadot                properties:
185*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
186*cb7aa33aSEmmanuel Vadot                    const: 0
187*cb7aa33aSEmmanuel Vadot
188*cb7aa33aSEmmanuel Vadot                  nvidia,function:
189*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
190*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
191*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb ]
192*cb7aa33aSEmmanuel Vadot
193*cb7aa33aSEmmanuel Vadot              hsic-1:
194*cb7aa33aSEmmanuel Vadot                type: object
195*cb7aa33aSEmmanuel Vadot                additionalProperties: false
196*cb7aa33aSEmmanuel Vadot                properties:
197*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
198*cb7aa33aSEmmanuel Vadot                    const: 0
199*cb7aa33aSEmmanuel Vadot
200*cb7aa33aSEmmanuel Vadot                  nvidia,function:
201*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
202*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
203*cb7aa33aSEmmanuel Vadot                    enum: [ snps, xusb ]
204*cb7aa33aSEmmanuel Vadot
205*cb7aa33aSEmmanuel Vadot      pcie:
206*cb7aa33aSEmmanuel Vadot        type: object
207*cb7aa33aSEmmanuel Vadot        additionalProperties: false
208*cb7aa33aSEmmanuel Vadot        properties:
209*cb7aa33aSEmmanuel Vadot          clocks:
210*cb7aa33aSEmmanuel Vadot            items:
211*cb7aa33aSEmmanuel Vadot              - description: PLLE clock
212*cb7aa33aSEmmanuel Vadot
213*cb7aa33aSEmmanuel Vadot          clock-names:
214*cb7aa33aSEmmanuel Vadot            items:
215*cb7aa33aSEmmanuel Vadot              - const: pll
216*cb7aa33aSEmmanuel Vadot
217*cb7aa33aSEmmanuel Vadot          resets:
218*cb7aa33aSEmmanuel Vadot            items:
219*cb7aa33aSEmmanuel Vadot              - description: reset for the PCIe UPHY block
220*cb7aa33aSEmmanuel Vadot
221*cb7aa33aSEmmanuel Vadot          reset-names:
222*cb7aa33aSEmmanuel Vadot            items:
223*cb7aa33aSEmmanuel Vadot              - const: phy
224*cb7aa33aSEmmanuel Vadot
225*cb7aa33aSEmmanuel Vadot          lanes:
226*cb7aa33aSEmmanuel Vadot            type: object
227*cb7aa33aSEmmanuel Vadot            additionalProperties: false
228*cb7aa33aSEmmanuel Vadot            properties:
229*cb7aa33aSEmmanuel Vadot              pcie-0:
230*cb7aa33aSEmmanuel Vadot                type: object
231*cb7aa33aSEmmanuel Vadot                additionalProperties: false
232*cb7aa33aSEmmanuel Vadot                properties:
233*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
234*cb7aa33aSEmmanuel Vadot                    const: 0
235*cb7aa33aSEmmanuel Vadot
236*cb7aa33aSEmmanuel Vadot                  nvidia,function:
237*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
238*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
239*cb7aa33aSEmmanuel Vadot                    enum: [ pcie, usb3-ss ]
240*cb7aa33aSEmmanuel Vadot
241*cb7aa33aSEmmanuel Vadot              pcie-1:
242*cb7aa33aSEmmanuel Vadot                type: object
243*cb7aa33aSEmmanuel Vadot                additionalProperties: false
244*cb7aa33aSEmmanuel Vadot                properties:
245*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
246*cb7aa33aSEmmanuel Vadot                    const: 0
247*cb7aa33aSEmmanuel Vadot
248*cb7aa33aSEmmanuel Vadot                  nvidia,function:
249*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
250*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
251*cb7aa33aSEmmanuel Vadot                    enum: [ pcie, usb3-ss ]
252*cb7aa33aSEmmanuel Vadot
253*cb7aa33aSEmmanuel Vadot              pcie-2:
254*cb7aa33aSEmmanuel Vadot                type: object
255*cb7aa33aSEmmanuel Vadot                additionalProperties: false
256*cb7aa33aSEmmanuel Vadot                properties:
257*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
258*cb7aa33aSEmmanuel Vadot                    const: 0
259*cb7aa33aSEmmanuel Vadot
260*cb7aa33aSEmmanuel Vadot                  nvidia,function:
261*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
262*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
263*cb7aa33aSEmmanuel Vadot                    enum: [ pcie, usb3-ss ]
264*cb7aa33aSEmmanuel Vadot
265*cb7aa33aSEmmanuel Vadot              pcie-3:
266*cb7aa33aSEmmanuel Vadot                type: object
267*cb7aa33aSEmmanuel Vadot                additionalProperties: false
268*cb7aa33aSEmmanuel Vadot                properties:
269*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
270*cb7aa33aSEmmanuel Vadot                    const: 0
271*cb7aa33aSEmmanuel Vadot
272*cb7aa33aSEmmanuel Vadot                  nvidia,function:
273*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
274*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
275*cb7aa33aSEmmanuel Vadot                    enum: [ pcie, usb3-ss ]
276*cb7aa33aSEmmanuel Vadot
277*cb7aa33aSEmmanuel Vadot              pcie-4:
278*cb7aa33aSEmmanuel Vadot                type: object
279*cb7aa33aSEmmanuel Vadot                additionalProperties: false
280*cb7aa33aSEmmanuel Vadot                properties:
281*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
282*cb7aa33aSEmmanuel Vadot                    const: 0
283*cb7aa33aSEmmanuel Vadot
284*cb7aa33aSEmmanuel Vadot                  nvidia,function:
285*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
286*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
287*cb7aa33aSEmmanuel Vadot                    enum: [ pcie, usb3-ss ]
288*cb7aa33aSEmmanuel Vadot
289*cb7aa33aSEmmanuel Vadot      sata:
290*cb7aa33aSEmmanuel Vadot        type: object
291*cb7aa33aSEmmanuel Vadot        additionalProperties: false
292*cb7aa33aSEmmanuel Vadot        properties:
293*cb7aa33aSEmmanuel Vadot          resets:
294*cb7aa33aSEmmanuel Vadot            items:
295*cb7aa33aSEmmanuel Vadot              - description: reset for the SATA UPHY block
296*cb7aa33aSEmmanuel Vadot
297*cb7aa33aSEmmanuel Vadot          reset-names:
298*cb7aa33aSEmmanuel Vadot            items:
299*cb7aa33aSEmmanuel Vadot              - const: phy
300*cb7aa33aSEmmanuel Vadot
301*cb7aa33aSEmmanuel Vadot          lanes:
302*cb7aa33aSEmmanuel Vadot            type: object
303*cb7aa33aSEmmanuel Vadot            additionalProperties: false
304*cb7aa33aSEmmanuel Vadot            properties:
305*cb7aa33aSEmmanuel Vadot              sata-0:
306*cb7aa33aSEmmanuel Vadot                type: object
307*cb7aa33aSEmmanuel Vadot                additionalProperties: false
308*cb7aa33aSEmmanuel Vadot                properties:
309*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
310*cb7aa33aSEmmanuel Vadot                    const: 0
311*cb7aa33aSEmmanuel Vadot
312*cb7aa33aSEmmanuel Vadot                  nvidia,function:
313*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
314*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
315*cb7aa33aSEmmanuel Vadot                    enum: [ sata, usb3-ss ]
316*cb7aa33aSEmmanuel Vadot
317*cb7aa33aSEmmanuel Vadot  ports:
318*cb7aa33aSEmmanuel Vadot    description: A required child node named "ports" contains a list of
319*cb7aa33aSEmmanuel Vadot      subnodes, one for each of the ports exposed by the XUSB pad controller.
320*cb7aa33aSEmmanuel Vadot      Each port may need additional resources that can be referenced in its
321*cb7aa33aSEmmanuel Vadot      port node.
322*cb7aa33aSEmmanuel Vadot
323*cb7aa33aSEmmanuel Vadot      The "status" property is used to enable or disable the use of a port.
324*cb7aa33aSEmmanuel Vadot      If set to "disabled", the port will not be used on the given board. In
325*cb7aa33aSEmmanuel Vadot      order to use the port, this property must be set to "okay".
326*cb7aa33aSEmmanuel Vadot    type: object
327*cb7aa33aSEmmanuel Vadot    additionalProperties: false
328*cb7aa33aSEmmanuel Vadot    properties:
329*cb7aa33aSEmmanuel Vadot      usb2-0:
330*cb7aa33aSEmmanuel Vadot        type: object
331*cb7aa33aSEmmanuel Vadot        additionalProperties: false
332*cb7aa33aSEmmanuel Vadot        properties:
333*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
334*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
335*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
336*cb7aa33aSEmmanuel Vadot          connector:
337*cb7aa33aSEmmanuel Vadot            type: object
338*cb7aa33aSEmmanuel Vadot
339*cb7aa33aSEmmanuel Vadot          mode:
340*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
341*cb7aa33aSEmmanuel Vadot              run the port.
342*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
343*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
344*cb7aa33aSEmmanuel Vadot
345*cb7aa33aSEmmanuel Vadot          nvidia,internal:
346*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
347*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
348*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
349*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
350*cb7aa33aSEmmanuel Vadot
351*cb7aa33aSEmmanuel Vadot          usb-role-switch:
352*cb7aa33aSEmmanuel Vadot            description: |
353*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
354*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
355*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
356*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
357*cb7aa33aSEmmanuel Vadot
358*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
359*cb7aa33aSEmmanuel Vadot
360*cb7aa33aSEmmanuel Vadot          vbus-supply:
361*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
362*cb7aa33aSEmmanuel Vadot              voltage.
363*cb7aa33aSEmmanuel Vadot
364*cb7aa33aSEmmanuel Vadot      usb2-1:
365*cb7aa33aSEmmanuel Vadot        type: object
366*cb7aa33aSEmmanuel Vadot        additionalProperties: false
367*cb7aa33aSEmmanuel Vadot        properties:
368*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
369*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
370*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
371*cb7aa33aSEmmanuel Vadot          connector:
372*cb7aa33aSEmmanuel Vadot            type: object
373*cb7aa33aSEmmanuel Vadot
374*cb7aa33aSEmmanuel Vadot          mode:
375*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
376*cb7aa33aSEmmanuel Vadot              run the port.
377*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
378*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
379*cb7aa33aSEmmanuel Vadot
380*cb7aa33aSEmmanuel Vadot          nvidia,internal:
381*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
382*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
383*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
384*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
385*cb7aa33aSEmmanuel Vadot
386*cb7aa33aSEmmanuel Vadot          usb-role-switch:
387*cb7aa33aSEmmanuel Vadot            description: |
388*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
389*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
390*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
391*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
392*cb7aa33aSEmmanuel Vadot
393*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
394*cb7aa33aSEmmanuel Vadot
395*cb7aa33aSEmmanuel Vadot          vbus-supply:
396*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
397*cb7aa33aSEmmanuel Vadot              voltage.
398*cb7aa33aSEmmanuel Vadot
399*cb7aa33aSEmmanuel Vadot      usb2-2:
400*cb7aa33aSEmmanuel Vadot        type: object
401*cb7aa33aSEmmanuel Vadot        additionalProperties: false
402*cb7aa33aSEmmanuel Vadot        properties:
403*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
404*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
405*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
406*cb7aa33aSEmmanuel Vadot          connector:
407*cb7aa33aSEmmanuel Vadot            type: object
408*cb7aa33aSEmmanuel Vadot
409*cb7aa33aSEmmanuel Vadot          mode:
410*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
411*cb7aa33aSEmmanuel Vadot              run the port.
412*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
413*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
414*cb7aa33aSEmmanuel Vadot
415*cb7aa33aSEmmanuel Vadot          nvidia,internal:
416*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
417*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
418*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
419*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
420*cb7aa33aSEmmanuel Vadot
421*cb7aa33aSEmmanuel Vadot          usb-role-switch:
422*cb7aa33aSEmmanuel Vadot            description: |
423*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
424*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
425*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
426*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
427*cb7aa33aSEmmanuel Vadot
428*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
429*cb7aa33aSEmmanuel Vadot
430*cb7aa33aSEmmanuel Vadot          vbus-supply:
431*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
432*cb7aa33aSEmmanuel Vadot              voltage.
433*cb7aa33aSEmmanuel Vadot
434*cb7aa33aSEmmanuel Vadot      ulpi-0:
435*cb7aa33aSEmmanuel Vadot        type: object
436*cb7aa33aSEmmanuel Vadot        additionalProperties: false
437*cb7aa33aSEmmanuel Vadot        properties:
438*cb7aa33aSEmmanuel Vadot          nvidia,internal:
439*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
440*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
441*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
442*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
443*cb7aa33aSEmmanuel Vadot
444*cb7aa33aSEmmanuel Vadot          vbus-supply:
445*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
446*cb7aa33aSEmmanuel Vadot              voltage.
447*cb7aa33aSEmmanuel Vadot
448*cb7aa33aSEmmanuel Vadot      hsic-0:
449*cb7aa33aSEmmanuel Vadot        type: object
450*cb7aa33aSEmmanuel Vadot        additionalProperties: false
451*cb7aa33aSEmmanuel Vadot        properties:
452*cb7aa33aSEmmanuel Vadot          vbus-supply:
453*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
454*cb7aa33aSEmmanuel Vadot              voltage.
455*cb7aa33aSEmmanuel Vadot
456*cb7aa33aSEmmanuel Vadot      hsic-1:
457*cb7aa33aSEmmanuel Vadot        type: object
458*cb7aa33aSEmmanuel Vadot        additionalProperties: false
459*cb7aa33aSEmmanuel Vadot        properties:
460*cb7aa33aSEmmanuel Vadot          vbus-supply:
461*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
462*cb7aa33aSEmmanuel Vadot              voltage.
463*cb7aa33aSEmmanuel Vadot
464*cb7aa33aSEmmanuel Vadot      usb3-0:
465*cb7aa33aSEmmanuel Vadot        type: object
466*cb7aa33aSEmmanuel Vadot        additionalProperties: false
467*cb7aa33aSEmmanuel Vadot        properties:
468*cb7aa33aSEmmanuel Vadot          nvidia,internal:
469*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
470*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
471*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
472*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
473*cb7aa33aSEmmanuel Vadot
474*cb7aa33aSEmmanuel Vadot          nvidia,usb2-companion:
475*cb7aa33aSEmmanuel Vadot            description: A single cell that specifies the physical port
476*cb7aa33aSEmmanuel Vadot              number to map this super-speed USB port to. The range of
477*cb7aa33aSEmmanuel Vadot              valid port numbers varies with the SoC generation.
478*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
479*cb7aa33aSEmmanuel Vadot            enum: [ 0, 1, 2 ]
480*cb7aa33aSEmmanuel Vadot
481*cb7aa33aSEmmanuel Vadot          vbus-supply:
482*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
483*cb7aa33aSEmmanuel Vadot              voltage.
484*cb7aa33aSEmmanuel Vadot
485*cb7aa33aSEmmanuel Vadot      usb3-1:
486*cb7aa33aSEmmanuel Vadot        type: object
487*cb7aa33aSEmmanuel Vadot        additionalProperties: false
488*cb7aa33aSEmmanuel Vadot        properties:
489*cb7aa33aSEmmanuel Vadot          nvidia,internal:
490*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
491*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
492*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
493*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
494*cb7aa33aSEmmanuel Vadot
495*cb7aa33aSEmmanuel Vadot          nvidia,usb2-companion:
496*cb7aa33aSEmmanuel Vadot            description: A single cell that specifies the physical port
497*cb7aa33aSEmmanuel Vadot              number to map this super-speed USB port to. The range of
498*cb7aa33aSEmmanuel Vadot              valid port numbers varies with the SoC generation.
499*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
500*cb7aa33aSEmmanuel Vadot            enum: [ 0, 1, 2 ]
501*cb7aa33aSEmmanuel Vadot
502*cb7aa33aSEmmanuel Vadot          vbus-supply:
503*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
504*cb7aa33aSEmmanuel Vadot              voltage.
505*cb7aa33aSEmmanuel Vadot
506*cb7aa33aSEmmanuel VadotadditionalProperties: false
507*cb7aa33aSEmmanuel Vadot
508*cb7aa33aSEmmanuel Vadotrequired:
509*cb7aa33aSEmmanuel Vadot  - compatible
510*cb7aa33aSEmmanuel Vadot  - reg
511*cb7aa33aSEmmanuel Vadot  - resets
512*cb7aa33aSEmmanuel Vadot  - reset-names
513*cb7aa33aSEmmanuel Vadot  - avdd-pll-utmip-supply
514*cb7aa33aSEmmanuel Vadot  - avdd-pll-erefe-supply
515*cb7aa33aSEmmanuel Vadot  - avdd-pex-pll-supply
516*cb7aa33aSEmmanuel Vadot  - hvdd-pex-pll-e-supply
517*cb7aa33aSEmmanuel Vadot
518*cb7aa33aSEmmanuel Vadotexamples:
519*cb7aa33aSEmmanuel Vadot  # Tegra124 and Tegra132
520*cb7aa33aSEmmanuel Vadot  - |
521*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
522*cb7aa33aSEmmanuel Vadot
523*cb7aa33aSEmmanuel Vadot    padctl@7009f000 {
524*cb7aa33aSEmmanuel Vadot        compatible = "nvidia,tegra124-xusb-padctl";
525*cb7aa33aSEmmanuel Vadot        reg = <0x7009f000 0x1000>;
526*cb7aa33aSEmmanuel Vadot        interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
527*cb7aa33aSEmmanuel Vadot        resets = <&tegra_car 142>;
528*cb7aa33aSEmmanuel Vadot        reset-names = "padctl";
529*cb7aa33aSEmmanuel Vadot
530*cb7aa33aSEmmanuel Vadot        avdd-pll-utmip-supply = <&vddio_1v8>;
531*cb7aa33aSEmmanuel Vadot        avdd-pll-erefe-supply = <&avdd_1v05_run>;
532*cb7aa33aSEmmanuel Vadot        avdd-pex-pll-supply = <&vdd_1v05_run>;
533*cb7aa33aSEmmanuel Vadot        hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>;
534*cb7aa33aSEmmanuel Vadot
535*cb7aa33aSEmmanuel Vadot        pads {
536*cb7aa33aSEmmanuel Vadot            usb2 {
537*cb7aa33aSEmmanuel Vadot                lanes {
538*cb7aa33aSEmmanuel Vadot                    usb2-0 {
539*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
540*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
541*cb7aa33aSEmmanuel Vadot                    };
542*cb7aa33aSEmmanuel Vadot
543*cb7aa33aSEmmanuel Vadot                    usb2-1 {
544*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
545*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
546*cb7aa33aSEmmanuel Vadot                    };
547*cb7aa33aSEmmanuel Vadot
548*cb7aa33aSEmmanuel Vadot                    usb2-2 {
549*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
550*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
551*cb7aa33aSEmmanuel Vadot                    };
552*cb7aa33aSEmmanuel Vadot                };
553*cb7aa33aSEmmanuel Vadot            };
554*cb7aa33aSEmmanuel Vadot
555*cb7aa33aSEmmanuel Vadot            ulpi {
556*cb7aa33aSEmmanuel Vadot                lanes {
557*cb7aa33aSEmmanuel Vadot                    ulpi-0 {
558*cb7aa33aSEmmanuel Vadot                        status = "disabled";
559*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
560*cb7aa33aSEmmanuel Vadot                    };
561*cb7aa33aSEmmanuel Vadot                };
562*cb7aa33aSEmmanuel Vadot            };
563*cb7aa33aSEmmanuel Vadot
564*cb7aa33aSEmmanuel Vadot            hsic {
565*cb7aa33aSEmmanuel Vadot                lanes {
566*cb7aa33aSEmmanuel Vadot                    hsic-0 {
567*cb7aa33aSEmmanuel Vadot                        status = "disabled";
568*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
569*cb7aa33aSEmmanuel Vadot                    };
570*cb7aa33aSEmmanuel Vadot
571*cb7aa33aSEmmanuel Vadot                    hsic-1 {
572*cb7aa33aSEmmanuel Vadot                        status = "disabled";
573*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
574*cb7aa33aSEmmanuel Vadot                    };
575*cb7aa33aSEmmanuel Vadot                };
576*cb7aa33aSEmmanuel Vadot            };
577*cb7aa33aSEmmanuel Vadot
578*cb7aa33aSEmmanuel Vadot            pcie {
579*cb7aa33aSEmmanuel Vadot                lanes {
580*cb7aa33aSEmmanuel Vadot                    pcie-0 {
581*cb7aa33aSEmmanuel Vadot                        nvidia,function = "usb3-ss";
582*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
583*cb7aa33aSEmmanuel Vadot                    };
584*cb7aa33aSEmmanuel Vadot
585*cb7aa33aSEmmanuel Vadot                    pcie-1 {
586*cb7aa33aSEmmanuel Vadot                        status = "disabled";
587*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
588*cb7aa33aSEmmanuel Vadot                    };
589*cb7aa33aSEmmanuel Vadot
590*cb7aa33aSEmmanuel Vadot                    pcie-2 {
591*cb7aa33aSEmmanuel Vadot                        nvidia,function = "pcie";
592*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
593*cb7aa33aSEmmanuel Vadot                    };
594*cb7aa33aSEmmanuel Vadot
595*cb7aa33aSEmmanuel Vadot                    pcie-3 {
596*cb7aa33aSEmmanuel Vadot                        status = "disabled";
597*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
598*cb7aa33aSEmmanuel Vadot                    };
599*cb7aa33aSEmmanuel Vadot
600*cb7aa33aSEmmanuel Vadot                    pcie-4 {
601*cb7aa33aSEmmanuel Vadot                        nvidia,function = "pcie";
602*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
603*cb7aa33aSEmmanuel Vadot                    };
604*cb7aa33aSEmmanuel Vadot                };
605*cb7aa33aSEmmanuel Vadot            };
606*cb7aa33aSEmmanuel Vadot
607*cb7aa33aSEmmanuel Vadot            sata {
608*cb7aa33aSEmmanuel Vadot                lanes {
609*cb7aa33aSEmmanuel Vadot                    sata-0 {
610*cb7aa33aSEmmanuel Vadot                        nvidia,function = "sata";
611*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
612*cb7aa33aSEmmanuel Vadot                    };
613*cb7aa33aSEmmanuel Vadot                };
614*cb7aa33aSEmmanuel Vadot            };
615*cb7aa33aSEmmanuel Vadot        };
616*cb7aa33aSEmmanuel Vadot
617*cb7aa33aSEmmanuel Vadot        ports {
618*cb7aa33aSEmmanuel Vadot            /* Micro A/B */
619*cb7aa33aSEmmanuel Vadot            usb2-0 {
620*cb7aa33aSEmmanuel Vadot                mode = "otg";
621*cb7aa33aSEmmanuel Vadot            };
622*cb7aa33aSEmmanuel Vadot
623*cb7aa33aSEmmanuel Vadot            /* Mini PCIe */
624*cb7aa33aSEmmanuel Vadot            usb2-1 {
625*cb7aa33aSEmmanuel Vadot                mode = "host";
626*cb7aa33aSEmmanuel Vadot            };
627*cb7aa33aSEmmanuel Vadot
628*cb7aa33aSEmmanuel Vadot            /* USB3 */
629*cb7aa33aSEmmanuel Vadot            usb2-2 {
630*cb7aa33aSEmmanuel Vadot                vbus-supply = <&vdd_usb3_vbus>;
631*cb7aa33aSEmmanuel Vadot                mode = "host";
632*cb7aa33aSEmmanuel Vadot            };
633*cb7aa33aSEmmanuel Vadot
634*cb7aa33aSEmmanuel Vadot            ulpi-0 {
635*cb7aa33aSEmmanuel Vadot                status = "disabled";
636*cb7aa33aSEmmanuel Vadot            };
637*cb7aa33aSEmmanuel Vadot
638*cb7aa33aSEmmanuel Vadot            hsic-0 {
639*cb7aa33aSEmmanuel Vadot                status = "disabled";
640*cb7aa33aSEmmanuel Vadot            };
641*cb7aa33aSEmmanuel Vadot
642*cb7aa33aSEmmanuel Vadot            hsic-1 {
643*cb7aa33aSEmmanuel Vadot                status = "disabled";
644*cb7aa33aSEmmanuel Vadot            };
645*cb7aa33aSEmmanuel Vadot
646*cb7aa33aSEmmanuel Vadot            usb3-0 {
647*cb7aa33aSEmmanuel Vadot                nvidia,usb2-companion = <2>;
648*cb7aa33aSEmmanuel Vadot            };
649*cb7aa33aSEmmanuel Vadot
650*cb7aa33aSEmmanuel Vadot            usb3-1 {
651*cb7aa33aSEmmanuel Vadot                status = "disabled";
652*cb7aa33aSEmmanuel Vadot            };
653*cb7aa33aSEmmanuel Vadot        };
654*cb7aa33aSEmmanuel Vadot    };
655