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

dt-bindings: phy: tegra-xusb: Convert to json-schema

Convert the Tegra XUSB pad controller bindings from free-form text
format to json-schema.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://lore.kernel.org/r/20230113150804.1272555-1-thierry.reding@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Thierry Reding and committed by
Vinod Koul
fb1ff013 0dcaef53

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