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