Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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