633 lines · yaml
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause2%YAML 1.23---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 controller8 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 differential15 signals) which connect directly to pins/pads on the SoC package. Each lane16 is controlled by a HW block referred to as a "pad" in the Tegra hardware17 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 be19 separately configured and powered up.20 21 Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or22 super-speed USB. Other lanes are for various types of low-speed, full-speed23 or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller24 contains a software-configurable mux that sits between the I/O controller25 ports (e.g. PCIe) and the lanes.26 27 In addition to per-lane configuration, USB 3.0 ports may require additional28 settings on a per-board basis.29 30 Pads will be represented as children of the top-level XUSB pad controller31 device tree node. Each lane exposed by the pad will be represented by its32 own subnode and can be referenced by users of the lane using the standard33 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 XUSB36 pad controller and the XUSB controller as "ports". This is confusing since37 "port" is typically used to denote the physical USB receptacle. The device38 tree binding in this document uses the term "port" to refer to the logical39 abstraction of the signals that are routed to a USB receptacle (i.e. a PHY40 for the USB signal, the VBUS power supply, the USB 2.0 companion port for41 USB 3.0 receptacles, ...).42 43properties:44 compatible:45 enum:46 - nvidia,tegra194-xusb-padctl47 - nvidia,tegra234-xusb-padctl48 49 reg:50 items:51 - description: pad controller registers52 - description: AO registers53 54 reg-names:55 items:56 - const: padctl57 - const: ao58 59 interrupts:60 items:61 - description: XUSB pad controller interrupt62 63 resets:64 items:65 - description: pad controller reset66 67 reset-names:68 items:69 - const: padctl70 71 avdd-usb-supply:72 description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must73 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 of80 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 its82 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. In86 order to use the pad and any of its lanes, this property must be set87 to "okay" or absent.88 type: object89 additionalProperties: false90 properties:91 usb2:92 type: object93 additionalProperties: false94 properties:95 clocks:96 items:97 - description: USB2 tracking clock98 99 clock-names:100 items:101 - const: trk102 103 lanes:104 type: object105 additionalProperties: false106 properties:107 usb2-0:108 type: object109 additionalProperties: false110 properties:111 "#phy-cells":112 const: 0113 114 nvidia,function:115 description: Function selection for this lane.116 $ref: /schemas/types.yaml#/definitions/string117 enum: [ xusb ]118 119 usb2-1:120 type: object121 additionalProperties: false122 properties:123 "#phy-cells":124 const: 0125 126 nvidia,function:127 description: Function selection for this lane.128 $ref: /schemas/types.yaml#/definitions/string129 enum: [ xusb ]130 131 usb2-2:132 type: object133 additionalProperties: false134 properties:135 "#phy-cells":136 const: 0137 138 nvidia,function:139 description: Function selection for this lane.140 $ref: /schemas/types.yaml#/definitions/string141 enum: [ xusb ]142 143 usb2-3:144 type: object145 additionalProperties: false146 properties:147 "#phy-cells":148 const: 0149 150 nvidia,function:151 description: Function selection for this lane.152 $ref: /schemas/types.yaml#/definitions/string153 enum: [ xusb ]154 155 usb3:156 type: object157 additionalProperties: false158 properties:159 lanes:160 type: object161 additionalProperties: false162 properties:163 usb3-0:164 type: object165 additionalProperties: false166 properties:167 "#phy-cells":168 const: 0169 170 nvidia,function:171 description: Function selection for this lane.172 $ref: /schemas/types.yaml#/definitions/string173 enum: [ xusb ]174 175 usb3-1:176 type: object177 additionalProperties: false178 properties:179 "#phy-cells":180 const: 0181 182 nvidia,function:183 description: Function selection for this lane.184 $ref: /schemas/types.yaml#/definitions/string185 enum: [ xusb ]186 187 usb3-2:188 type: object189 additionalProperties: false190 properties:191 "#phy-cells":192 const: 0193 194 nvidia,function:195 description: Function selection for this lane.196 $ref: /schemas/types.yaml#/definitions/string197 enum: [ xusb ]198 199 usb3-3:200 type: object201 additionalProperties: false202 properties:203 "#phy-cells":204 const: 0205 206 nvidia,function:207 description: Function selection for this lane.208 $ref: /schemas/types.yaml#/definitions/string209 enum: [ xusb ]210 211 ports:212 description: A required child node named "ports" contains a list of213 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 its215 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. In219 order to use the port, this property must be set to "okay".220 type: object221 additionalProperties: false222 properties:223 usb2-0:224 type: object225 additionalProperties: false226 properties:227 # no need to further describe this because the connector will228 # match on gpio-usb-b-connector or usb-b-connector and cause229 # that binding to be selected for the subnode230 connector:231 type: object232 233 mode:234 description: A string that determines the mode in which to235 run the port.236 $ref: /schemas/types.yaml#/definitions/string237 enum: [ host, peripheral, otg ]238 239 nvidia,internal:240 description: A boolean property whose presence determines241 that a port is internal. In the absence of this property242 the port is considered to be external.243 $ref: /schemas/types.yaml#/definitions/flag244 245 usb-role-switch:246 description: |247 A boolean property whole presence indicates that the port248 supports OTG or peripheral mode. If present, the port249 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 VBUS256 voltage.257 258 dependencies:259 usb-role-switch: [ connector ]260 261 usb2-1:262 type: object263 additionalProperties: false264 properties:265 # no need to further describe this because the connector will266 # match on gpio-usb-b-connector or usb-b-connector and cause267 # that binding to be selected for the subnode268 connector:269 type: object270 271 mode:272 description: A string that determines the mode in which to273 run the port.274 $ref: /schemas/types.yaml#/definitions/string275 enum: [ host, peripheral, otg ]276 277 nvidia,internal:278 description: A boolean property whose presence determines279 that a port is internal. In the absence of this property280 the port is considered to be external.281 $ref: /schemas/types.yaml#/definitions/flag282 283 usb-role-switch:284 description: |285 A boolean property whole presence indicates that the port286 supports OTG or peripheral mode. If present, the port287 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 VBUS294 voltage.295 296 dependencies:297 usb-role-switch: [ connector ]298 299 usb2-2:300 type: object301 additionalProperties: false302 properties:303 # no need to further describe this because the connector will304 # match on gpio-usb-b-connector or usb-b-connector and cause305 # that binding to be selected for the subnode306 connector:307 type: object308 309 mode:310 description: A string that determines the mode in which to311 run the port.312 $ref: /schemas/types.yaml#/definitions/string313 enum: [ host, peripheral, otg ]314 315 nvidia,internal:316 description: A boolean property whose presence determines317 that a port is internal. In the absence of this property318 the port is considered to be external.319 $ref: /schemas/types.yaml#/definitions/flag320 321 usb-role-switch:322 description: |323 A boolean property whole presence indicates that the port324 supports OTG or peripheral mode. If present, the port325 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 VBUS332 voltage.333 334 dependencies:335 usb-role-switch: [ connector ]336 337 usb2-3:338 type: object339 additionalProperties: false340 properties:341 # no need to further describe this because the connector will342 # match on gpio-usb-b-connector or usb-b-connector and cause343 # that binding to be selected for the subnode344 connector:345 type: object346 347 mode:348 description: A string that determines the mode in which to349 run the port.350 $ref: /schemas/types.yaml#/definitions/string351 enum: [ host, peripheral, otg ]352 353 nvidia,internal:354 description: A boolean property whose presence determines355 that a port is internal. In the absence of this property356 the port is considered to be external.357 $ref: /schemas/types.yaml#/definitions/flag358 359 usb-role-switch:360 description: |361 A boolean property whole presence indicates that the port362 supports OTG or peripheral mode. If present, the port363 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 VBUS370 voltage.371 372 dependencies:373 usb-role-switch: [ connector ]374 375 usb3-0:376 type: object377 additionalProperties: false378 properties:379 maximum-speed:380 description: A string property that specifies the maximum381 supported speed of a USB3 port.382 $ref: /schemas/types.yaml#/definitions/string383 oneOf:384 - description: The USB3 port supports USB 3.1 Gen 2 speed.385 This is the default.386 const: super-speed-plus387 - description: The USB3 port supports USB 3.1 Gen 1 speed388 only.389 const: super-speed390 391 nvidia,internal:392 description: A boolean property whose presence determines393 that a port is internal. In the absence of this property394 the port is considered to be external.395 $ref: /schemas/types.yaml#/definitions/flag396 397 nvidia,usb2-companion:398 description: A single cell that specifies the physical port399 number to map this super-speed USB port to. The range of400 valid port numbers varies with the SoC generation.401 $ref: /schemas/types.yaml#/definitions/uint32402 enum: [ 0, 1, 2, 3 ]403 404 vbus-supply:405 description: A phandle to the regulator supplying the VBUS406 voltage.407 408 usb3-1:409 type: object410 additionalProperties: false411 properties:412 maximum-speed:413 description: A string property that specifies the maximum414 supported speed of a USB3 port.415 $ref: /schemas/types.yaml#/definitions/string416 oneOf:417 - description: The USB3 port supports USB 3.1 Gen 2 speed.418 This is the default.419 const: super-speed-plus420 - description: The USB3 port supports USB 3.1 Gen 1 speed421 only.422 const: super-speed423 424 nvidia,internal:425 description: A boolean property whose presence determines426 that a port is internal. In the absence of this property427 the port is considered to be external.428 $ref: /schemas/types.yaml#/definitions/flag429 430 nvidia,usb2-companion:431 description: A single cell that specifies the physical port432 number to map this super-speed USB port to. The range of433 valid port numbers varies with the SoC generation.434 $ref: /schemas/types.yaml#/definitions/uint32435 enum: [ 0, 1, 2, 3 ]436 437 vbus-supply:438 description: A phandle to the regulator supplying the VBUS439 voltage.440 441 usb3-2:442 type: object443 additionalProperties: false444 properties:445 maximum-speed:446 description: A string property that specifies the maximum447 supported speed of a USB3 port.448 $ref: /schemas/types.yaml#/definitions/string449 oneOf:450 - description: The USB3 port supports USB 3.1 Gen 2 speed.451 This is the default.452 const: super-speed-plus453 - description: The USB3 port supports USB 3.1 Gen 1 speed454 only.455 const: super-speed456 457 nvidia,internal:458 description: A boolean property whose presence determines459 that a port is internal. In the absence of this property460 the port is considered to be external.461 $ref: /schemas/types.yaml#/definitions/flag462 463 nvidia,usb2-companion:464 description: A single cell that specifies the physical port465 number to map this super-speed USB port to. The range of466 valid port numbers varies with the SoC generation.467 $ref: /schemas/types.yaml#/definitions/uint32468 enum: [ 0, 1, 2, 3 ]469 470 vbus-supply:471 description: A phandle to the regulator supplying the VBUS472 voltage.473 474 usb3-3:475 type: object476 additionalProperties: false477 properties:478 maximum-speed:479 description: A string property that specifies the maximum480 supported speed of a USB3 port.481 $ref: /schemas/types.yaml#/definitions/string482 oneOf:483 - description: The USB3 port supports USB 3.1 Gen 2 speed.484 This is the default.485 const: super-speed-plus486 - description: The USB3 port supports USB 3.1 Gen 1 speed487 only.488 const: super-speed489 490 nvidia,internal:491 description: A boolean property whose presence determines492 that a port is internal. In the absence of this property493 the port is considered to be external.494 $ref: /schemas/types.yaml#/definitions/flag495 496 nvidia,usb2-companion:497 description: A single cell that specifies the physical port498 number to map this super-speed USB port to. The range of499 valid port numbers varies with the SoC generation.500 $ref: /schemas/types.yaml#/definitions/uint32501 enum: [ 0, 1, 2, 3 ]502 503 vbus-supply:504 description: A phandle to the regulator supplying the VBUS505 voltage.506 507additionalProperties: false508 509required:510 - compatible511 - reg512 - resets513 - reset-names514 - avdd-usb-supply515 - vclamp-usb-supply516 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