brintos

brintos / linux-shallow public Read only

0
0
Text · 21.1 KiB · 6e33983 Raw
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