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