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