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