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