xref: /freebsd/sys/contrib/device-tree/Bindings/phy/nvidia,tegra186-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,tegra186-xusb-padctl.yaml#
5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cb7aa33aSEmmanuel Vadot
7*cb7aa33aSEmmanuel Vadottitle: NVIDIA Tegra186 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    const: nvidia,tegra186-xusb-padctl
46*cb7aa33aSEmmanuel Vadot
47*cb7aa33aSEmmanuel Vadot  reg:
48*cb7aa33aSEmmanuel Vadot    items:
49*cb7aa33aSEmmanuel Vadot      - description: pad controller registers
50*cb7aa33aSEmmanuel Vadot      - description: AO registers
51*cb7aa33aSEmmanuel Vadot
52*cb7aa33aSEmmanuel Vadot  interrupts:
53*cb7aa33aSEmmanuel Vadot    items:
54*cb7aa33aSEmmanuel Vadot      - description: XUSB pad controller interrupt
55*cb7aa33aSEmmanuel Vadot
56*cb7aa33aSEmmanuel Vadot  reg-names:
57*cb7aa33aSEmmanuel Vadot    items:
58*cb7aa33aSEmmanuel Vadot      - const: padctl
59*cb7aa33aSEmmanuel Vadot      - const: ao
60*cb7aa33aSEmmanuel Vadot
61*cb7aa33aSEmmanuel Vadot  resets:
62*cb7aa33aSEmmanuel Vadot    items:
63*cb7aa33aSEmmanuel Vadot      - description: pad controller reset
64*cb7aa33aSEmmanuel Vadot
65*cb7aa33aSEmmanuel Vadot  reset-names:
66*cb7aa33aSEmmanuel Vadot    items:
67*cb7aa33aSEmmanuel Vadot      - const: padctl
68*cb7aa33aSEmmanuel Vadot
69*cb7aa33aSEmmanuel Vadot  avdd-pll-erefeut-supply:
70*cb7aa33aSEmmanuel Vadot    description: UPHY brick and reference clock as well as UTMI PHY
71*cb7aa33aSEmmanuel Vadot      power supply. Must supply 1.8 V.
72*cb7aa33aSEmmanuel Vadot
73*cb7aa33aSEmmanuel Vadot  avdd-usb-supply:
74*cb7aa33aSEmmanuel Vadot    description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
75*cb7aa33aSEmmanuel Vadot      supply 3.3 V.
76*cb7aa33aSEmmanuel Vadot
77*cb7aa33aSEmmanuel Vadot  vclamp-usb-supply:
78*cb7aa33aSEmmanuel Vadot    description: Bias rail for USB pad. Must supply 1.8 V.
79*cb7aa33aSEmmanuel Vadot
80*cb7aa33aSEmmanuel Vadot  vddio-hsic-supply:
81*cb7aa33aSEmmanuel Vadot    description: HSIC PHY power supply. Must supply 1.2 V.
82*cb7aa33aSEmmanuel Vadot
83*cb7aa33aSEmmanuel Vadot  pads:
84*cb7aa33aSEmmanuel Vadot    description: A required child node named "pads" contains a list of
85*cb7aa33aSEmmanuel Vadot      subnodes, one for each of the pads exposed by the XUSB pad controller.
86*cb7aa33aSEmmanuel Vadot      Each pad may need additional resources that can be referenced in its
87*cb7aa33aSEmmanuel Vadot      pad node.
88*cb7aa33aSEmmanuel Vadot
89*cb7aa33aSEmmanuel Vadot      The "status" property is used to enable or disable the use of a pad.
90*cb7aa33aSEmmanuel Vadot      If set to "disabled", the pad will not be used on the given board. In
91*cb7aa33aSEmmanuel Vadot      order to use the pad and any of its lanes, this property must be set
92*cb7aa33aSEmmanuel Vadot      to "okay" or be absent.
93*cb7aa33aSEmmanuel Vadot    type: object
94*cb7aa33aSEmmanuel Vadot    additionalProperties: false
95*cb7aa33aSEmmanuel Vadot    properties:
96*cb7aa33aSEmmanuel Vadot      usb2:
97*cb7aa33aSEmmanuel Vadot        type: object
98*cb7aa33aSEmmanuel Vadot        additionalProperties: false
99*cb7aa33aSEmmanuel Vadot        properties:
100*cb7aa33aSEmmanuel Vadot          clocks:
101*cb7aa33aSEmmanuel Vadot            items:
102*cb7aa33aSEmmanuel Vadot              - description: USB2 tracking clock
103*cb7aa33aSEmmanuel Vadot
104*cb7aa33aSEmmanuel Vadot          clock-names:
105*cb7aa33aSEmmanuel Vadot            items:
106*cb7aa33aSEmmanuel Vadot              - const: trk
107*cb7aa33aSEmmanuel Vadot
108*cb7aa33aSEmmanuel Vadot          lanes:
109*cb7aa33aSEmmanuel Vadot            type: object
110*cb7aa33aSEmmanuel Vadot            additionalProperties: false
111*cb7aa33aSEmmanuel Vadot            properties:
112*cb7aa33aSEmmanuel Vadot              usb2-0:
113*cb7aa33aSEmmanuel Vadot                type: object
114*cb7aa33aSEmmanuel Vadot                additionalProperties: false
115*cb7aa33aSEmmanuel Vadot                properties:
116*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
117*cb7aa33aSEmmanuel Vadot                    const: 0
118*cb7aa33aSEmmanuel Vadot
119*cb7aa33aSEmmanuel Vadot                  nvidia,function:
120*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
121*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
122*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
123*cb7aa33aSEmmanuel Vadot
124*cb7aa33aSEmmanuel Vadot              usb2-1:
125*cb7aa33aSEmmanuel Vadot                type: object
126*cb7aa33aSEmmanuel Vadot                additionalProperties: false
127*cb7aa33aSEmmanuel Vadot                properties:
128*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
129*cb7aa33aSEmmanuel Vadot                    const: 0
130*cb7aa33aSEmmanuel Vadot
131*cb7aa33aSEmmanuel Vadot                  nvidia,function:
132*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
133*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
134*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
135*cb7aa33aSEmmanuel Vadot
136*cb7aa33aSEmmanuel Vadot              usb2-2:
137*cb7aa33aSEmmanuel Vadot                type: object
138*cb7aa33aSEmmanuel Vadot                additionalProperties: false
139*cb7aa33aSEmmanuel Vadot                properties:
140*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
141*cb7aa33aSEmmanuel Vadot                    const: 0
142*cb7aa33aSEmmanuel Vadot
143*cb7aa33aSEmmanuel Vadot                  nvidia,function:
144*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
145*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
146*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
147*cb7aa33aSEmmanuel Vadot
148*cb7aa33aSEmmanuel Vadot      hsic:
149*cb7aa33aSEmmanuel Vadot        type: object
150*cb7aa33aSEmmanuel Vadot        additionalProperties: false
151*cb7aa33aSEmmanuel Vadot        properties:
152*cb7aa33aSEmmanuel Vadot          clocks:
153*cb7aa33aSEmmanuel Vadot            items:
154*cb7aa33aSEmmanuel Vadot              - description: HSIC tracking clock
155*cb7aa33aSEmmanuel Vadot
156*cb7aa33aSEmmanuel Vadot          clock-names:
157*cb7aa33aSEmmanuel Vadot            items:
158*cb7aa33aSEmmanuel Vadot              - const: trk
159*cb7aa33aSEmmanuel Vadot
160*cb7aa33aSEmmanuel Vadot          lanes:
161*cb7aa33aSEmmanuel Vadot            type: object
162*cb7aa33aSEmmanuel Vadot            additionalProperties: false
163*cb7aa33aSEmmanuel Vadot            properties:
164*cb7aa33aSEmmanuel Vadot              hsic-0:
165*cb7aa33aSEmmanuel Vadot                type: object
166*cb7aa33aSEmmanuel Vadot                additionalProperties: false
167*cb7aa33aSEmmanuel Vadot                properties:
168*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
169*cb7aa33aSEmmanuel Vadot                    const: 0
170*cb7aa33aSEmmanuel Vadot
171*cb7aa33aSEmmanuel Vadot                  nvidia,function:
172*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
173*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
174*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
175*cb7aa33aSEmmanuel Vadot
176*cb7aa33aSEmmanuel Vadot      usb3:
177*cb7aa33aSEmmanuel Vadot        type: object
178*cb7aa33aSEmmanuel Vadot        additionalProperties: false
179*cb7aa33aSEmmanuel Vadot        properties:
180*cb7aa33aSEmmanuel Vadot          lanes:
181*cb7aa33aSEmmanuel Vadot            type: object
182*cb7aa33aSEmmanuel Vadot            additionalProperties: false
183*cb7aa33aSEmmanuel Vadot            properties:
184*cb7aa33aSEmmanuel Vadot              usb3-0:
185*cb7aa33aSEmmanuel Vadot                type: object
186*cb7aa33aSEmmanuel Vadot                additionalProperties: false
187*cb7aa33aSEmmanuel Vadot                properties:
188*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
189*cb7aa33aSEmmanuel Vadot                    const: 0
190*cb7aa33aSEmmanuel Vadot
191*cb7aa33aSEmmanuel Vadot                  nvidia,function:
192*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
193*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
194*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
195*cb7aa33aSEmmanuel Vadot
196*cb7aa33aSEmmanuel Vadot              usb3-1:
197*cb7aa33aSEmmanuel Vadot                type: object
198*cb7aa33aSEmmanuel Vadot                additionalProperties: false
199*cb7aa33aSEmmanuel Vadot                properties:
200*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
201*cb7aa33aSEmmanuel Vadot                    const: 0
202*cb7aa33aSEmmanuel Vadot
203*cb7aa33aSEmmanuel Vadot                  nvidia,function:
204*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
205*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
206*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
207*cb7aa33aSEmmanuel Vadot
208*cb7aa33aSEmmanuel Vadot              usb3-2:
209*cb7aa33aSEmmanuel Vadot                type: object
210*cb7aa33aSEmmanuel Vadot                additionalProperties: false
211*cb7aa33aSEmmanuel Vadot                properties:
212*cb7aa33aSEmmanuel Vadot                  "#phy-cells":
213*cb7aa33aSEmmanuel Vadot                    const: 0
214*cb7aa33aSEmmanuel Vadot
215*cb7aa33aSEmmanuel Vadot                  nvidia,function:
216*cb7aa33aSEmmanuel Vadot                    description: Function selection for this lane.
217*cb7aa33aSEmmanuel Vadot                    $ref: /schemas/types.yaml#/definitions/string
218*cb7aa33aSEmmanuel Vadot                    enum: [ xusb ]
219*cb7aa33aSEmmanuel Vadot
220*cb7aa33aSEmmanuel Vadot  ports:
221*cb7aa33aSEmmanuel Vadot    description: A required child node named "ports" contains a list of
222*cb7aa33aSEmmanuel Vadot      subnodes, one for each of the ports exposed by the XUSB pad controller.
223*cb7aa33aSEmmanuel Vadot      Each port may need additional resources that can be referenced in its
224*cb7aa33aSEmmanuel Vadot      port node.
225*cb7aa33aSEmmanuel Vadot
226*cb7aa33aSEmmanuel Vadot      The "status" property is used to enable or disable the use of a port.
227*cb7aa33aSEmmanuel Vadot      If set to "disabled", the port will not be used on the given board. In
228*cb7aa33aSEmmanuel Vadot      order to use the port, this property must be set to "okay".
229*cb7aa33aSEmmanuel Vadot    type: object
230*cb7aa33aSEmmanuel Vadot    additionalProperties: false
231*cb7aa33aSEmmanuel Vadot    properties:
232*cb7aa33aSEmmanuel Vadot      usb2-0:
233*cb7aa33aSEmmanuel Vadot        type: object
234*cb7aa33aSEmmanuel Vadot        additionalProperties: false
235*cb7aa33aSEmmanuel Vadot        properties:
236*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
237*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
238*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
239*cb7aa33aSEmmanuel Vadot          connector:
240*cb7aa33aSEmmanuel Vadot            type: object
241*cb7aa33aSEmmanuel Vadot
242*cb7aa33aSEmmanuel Vadot          mode:
243*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
244*cb7aa33aSEmmanuel Vadot              run the port.
245*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
246*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
247*cb7aa33aSEmmanuel Vadot
248*cb7aa33aSEmmanuel Vadot          nvidia,internal:
249*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
250*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
251*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
252*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
253*cb7aa33aSEmmanuel Vadot
254*cb7aa33aSEmmanuel Vadot          usb-role-switch:
255*cb7aa33aSEmmanuel Vadot            description: |
256*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
257*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
258*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
259*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
260*cb7aa33aSEmmanuel Vadot
261*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
262*cb7aa33aSEmmanuel Vadot
263*cb7aa33aSEmmanuel Vadot          vbus-supply:
264*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
265*cb7aa33aSEmmanuel Vadot              voltage.
266*cb7aa33aSEmmanuel Vadot
267*cb7aa33aSEmmanuel Vadot        dependencies:
268*cb7aa33aSEmmanuel Vadot          usb-role-switch: [ connector ]
269*cb7aa33aSEmmanuel Vadot
270*cb7aa33aSEmmanuel Vadot      usb2-1:
271*cb7aa33aSEmmanuel Vadot        type: object
272*cb7aa33aSEmmanuel Vadot        additionalProperties: false
273*cb7aa33aSEmmanuel Vadot        properties:
274*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
275*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
276*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
277*cb7aa33aSEmmanuel Vadot          connector:
278*cb7aa33aSEmmanuel Vadot            type: object
279*cb7aa33aSEmmanuel Vadot
280*cb7aa33aSEmmanuel Vadot          mode:
281*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
282*cb7aa33aSEmmanuel Vadot              run the port.
283*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
284*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
285*cb7aa33aSEmmanuel Vadot
286*cb7aa33aSEmmanuel Vadot          nvidia,internal:
287*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
288*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
289*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
290*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
291*cb7aa33aSEmmanuel Vadot
292*cb7aa33aSEmmanuel Vadot          usb-role-switch:
293*cb7aa33aSEmmanuel Vadot            description: |
294*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
295*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
296*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
297*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
298*cb7aa33aSEmmanuel Vadot
299*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
300*cb7aa33aSEmmanuel Vadot
301*cb7aa33aSEmmanuel Vadot          vbus-supply:
302*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
303*cb7aa33aSEmmanuel Vadot              voltage.
304*cb7aa33aSEmmanuel Vadot
305*cb7aa33aSEmmanuel Vadot        dependencies:
306*cb7aa33aSEmmanuel Vadot          usb-role-switch: [ connector ]
307*cb7aa33aSEmmanuel Vadot
308*cb7aa33aSEmmanuel Vadot      usb2-2:
309*cb7aa33aSEmmanuel Vadot        type: object
310*cb7aa33aSEmmanuel Vadot        additionalProperties: false
311*cb7aa33aSEmmanuel Vadot        properties:
312*cb7aa33aSEmmanuel Vadot          # no need to further describe this because the connector will
313*cb7aa33aSEmmanuel Vadot          # match on gpio-usb-b-connector or usb-b-connector and cause
314*cb7aa33aSEmmanuel Vadot          # that binding to be selected for the subnode
315*cb7aa33aSEmmanuel Vadot          connector:
316*cb7aa33aSEmmanuel Vadot            type: object
317*cb7aa33aSEmmanuel Vadot
318*cb7aa33aSEmmanuel Vadot          mode:
319*cb7aa33aSEmmanuel Vadot            description: A string that determines the mode in which to
320*cb7aa33aSEmmanuel Vadot              run the port.
321*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
322*cb7aa33aSEmmanuel Vadot            enum: [ host, peripheral, otg ]
323*cb7aa33aSEmmanuel Vadot
324*cb7aa33aSEmmanuel Vadot          nvidia,internal:
325*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
326*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
327*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
328*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
329*cb7aa33aSEmmanuel Vadot
330*cb7aa33aSEmmanuel Vadot          usb-role-switch:
331*cb7aa33aSEmmanuel Vadot            description: |
332*cb7aa33aSEmmanuel Vadot              A boolean property whole presence indicates that the port
333*cb7aa33aSEmmanuel Vadot              supports OTG or peripheral mode. If present, the port
334*cb7aa33aSEmmanuel Vadot              supports switching between USB host and peripheral roles.
335*cb7aa33aSEmmanuel Vadot              A connector must be added as a subnode in that case.
336*cb7aa33aSEmmanuel Vadot
337*cb7aa33aSEmmanuel Vadot              See ../connector/usb-connector.yaml.
338*cb7aa33aSEmmanuel Vadot
339*cb7aa33aSEmmanuel Vadot          vbus-supply:
340*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
341*cb7aa33aSEmmanuel Vadot              voltage.
342*cb7aa33aSEmmanuel Vadot
343*cb7aa33aSEmmanuel Vadot        dependencies:
344*cb7aa33aSEmmanuel Vadot          usb-role-switch: [ connector ]
345*cb7aa33aSEmmanuel Vadot
346*cb7aa33aSEmmanuel Vadot      hsic-0:
347*cb7aa33aSEmmanuel Vadot        type: object
348*cb7aa33aSEmmanuel Vadot        additionalProperties: false
349*cb7aa33aSEmmanuel Vadot
350*cb7aa33aSEmmanuel Vadot      usb3-0:
351*cb7aa33aSEmmanuel Vadot        type: object
352*cb7aa33aSEmmanuel Vadot        additionalProperties: false
353*cb7aa33aSEmmanuel Vadot        properties:
354*cb7aa33aSEmmanuel Vadot          nvidia,internal:
355*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
356*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
357*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
358*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
359*cb7aa33aSEmmanuel Vadot
360*cb7aa33aSEmmanuel Vadot          nvidia,usb2-companion:
361*cb7aa33aSEmmanuel Vadot            description: A single cell that specifies the physical port
362*cb7aa33aSEmmanuel Vadot              number to map this super-speed USB port to. The range of
363*cb7aa33aSEmmanuel Vadot              valid port numbers varies with the SoC generation.
364*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
365*cb7aa33aSEmmanuel Vadot            enum: [ 0, 1, 2, 3 ]
366*cb7aa33aSEmmanuel Vadot
367*cb7aa33aSEmmanuel Vadot          vbus-supply:
368*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
369*cb7aa33aSEmmanuel Vadot              voltage.
370*cb7aa33aSEmmanuel Vadot
371*cb7aa33aSEmmanuel Vadot      usb3-1:
372*cb7aa33aSEmmanuel Vadot        type: object
373*cb7aa33aSEmmanuel Vadot        additionalProperties: false
374*cb7aa33aSEmmanuel Vadot        properties:
375*cb7aa33aSEmmanuel Vadot          nvidia,internal:
376*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
377*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
378*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
379*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
380*cb7aa33aSEmmanuel Vadot
381*cb7aa33aSEmmanuel Vadot          nvidia,usb2-companion:
382*cb7aa33aSEmmanuel Vadot            description: A single cell that specifies the physical port
383*cb7aa33aSEmmanuel Vadot              number to map this super-speed USB port to. The range of
384*cb7aa33aSEmmanuel Vadot              valid port numbers varies with the SoC generation.
385*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
386*cb7aa33aSEmmanuel Vadot            enum: [ 0, 1, 2, 3 ]
387*cb7aa33aSEmmanuel Vadot
388*cb7aa33aSEmmanuel Vadot          vbus-supply:
389*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
390*cb7aa33aSEmmanuel Vadot              voltage.
391*cb7aa33aSEmmanuel Vadot
392*cb7aa33aSEmmanuel Vadot      usb3-2:
393*cb7aa33aSEmmanuel Vadot        type: object
394*cb7aa33aSEmmanuel Vadot        additionalProperties: false
395*cb7aa33aSEmmanuel Vadot        properties:
396*cb7aa33aSEmmanuel Vadot          nvidia,internal:
397*cb7aa33aSEmmanuel Vadot            description: A boolean property whose presence determines
398*cb7aa33aSEmmanuel Vadot              that a port is internal. In the absence of this property
399*cb7aa33aSEmmanuel Vadot              the port is considered to be external.
400*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
401*cb7aa33aSEmmanuel Vadot
402*cb7aa33aSEmmanuel Vadot          nvidia,usb2-companion:
403*cb7aa33aSEmmanuel Vadot            description: A single cell that specifies the physical port
404*cb7aa33aSEmmanuel Vadot              number to map this super-speed USB port to. The range of
405*cb7aa33aSEmmanuel Vadot              valid port numbers varies with the SoC generation.
406*cb7aa33aSEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/uint32
407*cb7aa33aSEmmanuel Vadot            enum: [ 0, 1, 2, 3 ]
408*cb7aa33aSEmmanuel Vadot
409*cb7aa33aSEmmanuel Vadot          vbus-supply:
410*cb7aa33aSEmmanuel Vadot            description: A phandle to the regulator supplying the VBUS
411*cb7aa33aSEmmanuel Vadot              voltage.
412*cb7aa33aSEmmanuel Vadot
413*cb7aa33aSEmmanuel VadotadditionalProperties: false
414*cb7aa33aSEmmanuel Vadot
415*cb7aa33aSEmmanuel Vadotrequired:
416*cb7aa33aSEmmanuel Vadot  - compatible
417*cb7aa33aSEmmanuel Vadot  - reg
418*cb7aa33aSEmmanuel Vadot  - resets
419*cb7aa33aSEmmanuel Vadot  - reset-names
420*cb7aa33aSEmmanuel Vadot  - avdd-pll-erefeut-supply
421*cb7aa33aSEmmanuel Vadot  - avdd-usb-supply
422*cb7aa33aSEmmanuel Vadot  - vclamp-usb-supply
423*cb7aa33aSEmmanuel Vadot  - vddio-hsic-supply
424*cb7aa33aSEmmanuel Vadot
425*cb7aa33aSEmmanuel Vadotexamples:
426*cb7aa33aSEmmanuel Vadot  - |
427*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/clock/tegra186-clock.h>
428*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/gpio/tegra186-gpio.h>
429*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
430*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/reset/tegra186-reset.h>
431*cb7aa33aSEmmanuel Vadot
432*cb7aa33aSEmmanuel Vadot    padctl@3520000 {
433*cb7aa33aSEmmanuel Vadot        compatible = "nvidia,tegra186-xusb-padctl";
434*cb7aa33aSEmmanuel Vadot        reg = <0x03520000 0x1000>,
435*cb7aa33aSEmmanuel Vadot              <0x03540000 0x1000>;
436*cb7aa33aSEmmanuel Vadot        reg-names = "padctl", "ao";
437*cb7aa33aSEmmanuel Vadot        interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
438*cb7aa33aSEmmanuel Vadot
439*cb7aa33aSEmmanuel Vadot        resets = <&bpmp TEGRA186_RESET_XUSB_PADCTL>;
440*cb7aa33aSEmmanuel Vadot        reset-names = "padctl";
441*cb7aa33aSEmmanuel Vadot
442*cb7aa33aSEmmanuel Vadot        avdd-pll-erefeut-supply = <&vdd_1v8_pll>;
443*cb7aa33aSEmmanuel Vadot        avdd-usb-supply = <&vdd_3v3_sys>;
444*cb7aa33aSEmmanuel Vadot        vclamp-usb-supply = <&vdd_1v8>;
445*cb7aa33aSEmmanuel Vadot        vddio-hsic-supply = <&gnd>;
446*cb7aa33aSEmmanuel Vadot
447*cb7aa33aSEmmanuel Vadot        pads {
448*cb7aa33aSEmmanuel Vadot            usb2 {
449*cb7aa33aSEmmanuel Vadot                clocks = <&bpmp TEGRA186_CLK_USB2_TRK>;
450*cb7aa33aSEmmanuel Vadot                clock-names = "trk";
451*cb7aa33aSEmmanuel Vadot
452*cb7aa33aSEmmanuel Vadot                lanes {
453*cb7aa33aSEmmanuel Vadot                    usb2-0 {
454*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
455*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
456*cb7aa33aSEmmanuel Vadot                    };
457*cb7aa33aSEmmanuel Vadot
458*cb7aa33aSEmmanuel Vadot                    usb2-1 {
459*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
460*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
461*cb7aa33aSEmmanuel Vadot                    };
462*cb7aa33aSEmmanuel Vadot
463*cb7aa33aSEmmanuel Vadot                    usb2-2 {
464*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
465*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
466*cb7aa33aSEmmanuel Vadot                    };
467*cb7aa33aSEmmanuel Vadot                };
468*cb7aa33aSEmmanuel Vadot            };
469*cb7aa33aSEmmanuel Vadot
470*cb7aa33aSEmmanuel Vadot            hsic {
471*cb7aa33aSEmmanuel Vadot                clocks = <&bpmp TEGRA186_CLK_HSIC_TRK>;
472*cb7aa33aSEmmanuel Vadot                clock-names = "trk";
473*cb7aa33aSEmmanuel Vadot                status = "disabled";
474*cb7aa33aSEmmanuel Vadot
475*cb7aa33aSEmmanuel Vadot                lanes {
476*cb7aa33aSEmmanuel Vadot                    hsic-0 {
477*cb7aa33aSEmmanuel Vadot                        status = "disabled";
478*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
479*cb7aa33aSEmmanuel Vadot                    };
480*cb7aa33aSEmmanuel Vadot                };
481*cb7aa33aSEmmanuel Vadot            };
482*cb7aa33aSEmmanuel Vadot
483*cb7aa33aSEmmanuel Vadot            usb3 {
484*cb7aa33aSEmmanuel Vadot                lanes {
485*cb7aa33aSEmmanuel Vadot                    usb3-0 {
486*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
487*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
488*cb7aa33aSEmmanuel Vadot                    };
489*cb7aa33aSEmmanuel Vadot
490*cb7aa33aSEmmanuel Vadot                    usb3-1 {
491*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
492*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
493*cb7aa33aSEmmanuel Vadot                    };
494*cb7aa33aSEmmanuel Vadot
495*cb7aa33aSEmmanuel Vadot                    usb3-2 {
496*cb7aa33aSEmmanuel Vadot                        nvidia,function = "xusb";
497*cb7aa33aSEmmanuel Vadot                        #phy-cells = <0>;
498*cb7aa33aSEmmanuel Vadot                    };
499*cb7aa33aSEmmanuel Vadot                };
500*cb7aa33aSEmmanuel Vadot            };
501*cb7aa33aSEmmanuel Vadot        };
502*cb7aa33aSEmmanuel Vadot
503*cb7aa33aSEmmanuel Vadot        ports {
504*cb7aa33aSEmmanuel Vadot            usb2-0 {
505*cb7aa33aSEmmanuel Vadot                mode = "otg";
506*cb7aa33aSEmmanuel Vadot                vbus-supply = <&vdd_usb0>;
507*cb7aa33aSEmmanuel Vadot                usb-role-switch;
508*cb7aa33aSEmmanuel Vadot
509*cb7aa33aSEmmanuel Vadot                connector {
510*cb7aa33aSEmmanuel Vadot                    compatible = "gpio-usb-b-connector",
511*cb7aa33aSEmmanuel Vadot                                 "usb-b-connector";
512*cb7aa33aSEmmanuel Vadot                    label = "micro-USB";
513*cb7aa33aSEmmanuel Vadot                    type = "micro";
514*cb7aa33aSEmmanuel Vadot                    vbus-gpios = <&gpio TEGRA186_MAIN_GPIO(X, 7) GPIO_ACTIVE_LOW>;
515*cb7aa33aSEmmanuel Vadot                    id-gpios = <&pmic 0 GPIO_ACTIVE_HIGH>;
516*cb7aa33aSEmmanuel Vadot                };
517*cb7aa33aSEmmanuel Vadot            };
518*cb7aa33aSEmmanuel Vadot
519*cb7aa33aSEmmanuel Vadot            usb2-1 {
520*cb7aa33aSEmmanuel Vadot                vbus-supply = <&vdd_usb1>;
521*cb7aa33aSEmmanuel Vadot                mode = "host";
522*cb7aa33aSEmmanuel Vadot            };
523*cb7aa33aSEmmanuel Vadot
524*cb7aa33aSEmmanuel Vadot            usb2-2 {
525*cb7aa33aSEmmanuel Vadot                status = "disabled";
526*cb7aa33aSEmmanuel Vadot            };
527*cb7aa33aSEmmanuel Vadot
528*cb7aa33aSEmmanuel Vadot            hsic-0 {
529*cb7aa33aSEmmanuel Vadot                status = "disabled";
530*cb7aa33aSEmmanuel Vadot            };
531*cb7aa33aSEmmanuel Vadot
532*cb7aa33aSEmmanuel Vadot            usb3-0 {
533*cb7aa33aSEmmanuel Vadot                nvidia,usb2-companion = <1>;
534*cb7aa33aSEmmanuel Vadot            };
535*cb7aa33aSEmmanuel Vadot
536*cb7aa33aSEmmanuel Vadot            usb3-1 {
537*cb7aa33aSEmmanuel Vadot                status = "disabled";
538*cb7aa33aSEmmanuel Vadot            };
539*cb7aa33aSEmmanuel Vadot
540*cb7aa33aSEmmanuel Vadot            usb3-2 {
541*cb7aa33aSEmmanuel Vadot                status = "disabled";
542*cb7aa33aSEmmanuel Vadot            };
543*cb7aa33aSEmmanuel Vadot        };
544*cb7aa33aSEmmanuel Vadot    };
545