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