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,tegra194-xusb-padctl.yaml# 5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*cb7aa33aSEmmanuel Vadot 7*cb7aa33aSEmmanuel Vadottitle: NVIDIA Tegra194 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 enum: 46*cb7aa33aSEmmanuel Vadot - nvidia,tegra194-xusb-padctl 47*cb7aa33aSEmmanuel Vadot - nvidia,tegra234-xusb-padctl 48*cb7aa33aSEmmanuel Vadot 49*cb7aa33aSEmmanuel Vadot reg: 50*cb7aa33aSEmmanuel Vadot items: 51*cb7aa33aSEmmanuel Vadot - description: pad controller registers 52*cb7aa33aSEmmanuel Vadot - description: AO registers 53*cb7aa33aSEmmanuel Vadot 54*cb7aa33aSEmmanuel Vadot reg-names: 55*cb7aa33aSEmmanuel Vadot items: 56*cb7aa33aSEmmanuel Vadot - const: padctl 57*cb7aa33aSEmmanuel Vadot - const: ao 58*cb7aa33aSEmmanuel Vadot 59*cb7aa33aSEmmanuel Vadot interrupts: 60*cb7aa33aSEmmanuel Vadot items: 61*cb7aa33aSEmmanuel Vadot - description: XUSB pad controller interrupt 62*cb7aa33aSEmmanuel Vadot 63*cb7aa33aSEmmanuel Vadot resets: 64*cb7aa33aSEmmanuel Vadot items: 65*cb7aa33aSEmmanuel Vadot - description: pad controller reset 66*cb7aa33aSEmmanuel Vadot 67*cb7aa33aSEmmanuel Vadot reset-names: 68*cb7aa33aSEmmanuel Vadot items: 69*cb7aa33aSEmmanuel Vadot - const: padctl 70*cb7aa33aSEmmanuel Vadot 71*cb7aa33aSEmmanuel Vadot avdd-usb-supply: 72*cb7aa33aSEmmanuel Vadot description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must 73*cb7aa33aSEmmanuel Vadot supply 3.3 V. 74*cb7aa33aSEmmanuel Vadot 75*cb7aa33aSEmmanuel Vadot vclamp-usb-supply: 76*cb7aa33aSEmmanuel Vadot description: Bias rail for USB pad. Must supply 1.8 V. 77*cb7aa33aSEmmanuel Vadot 78*cb7aa33aSEmmanuel Vadot pads: 79*cb7aa33aSEmmanuel Vadot description: A required child node named "pads" contains a list of 80*cb7aa33aSEmmanuel Vadot subnodes, one for each of the pads exposed by the XUSB pad controller. 81*cb7aa33aSEmmanuel Vadot Each pad may need additional resources that can be referenced in its 82*cb7aa33aSEmmanuel Vadot pad node. 83*cb7aa33aSEmmanuel Vadot 84*cb7aa33aSEmmanuel Vadot The "status" property is used to enable or disable the use of a pad. 85*cb7aa33aSEmmanuel Vadot If set to "disabled", the pad will not be used on the given board. In 86*cb7aa33aSEmmanuel Vadot order to use the pad and any of its lanes, this property must be set 87*cb7aa33aSEmmanuel Vadot to "okay" or absent. 88*cb7aa33aSEmmanuel Vadot type: object 89*cb7aa33aSEmmanuel Vadot additionalProperties: false 90*cb7aa33aSEmmanuel Vadot properties: 91*cb7aa33aSEmmanuel Vadot usb2: 92*cb7aa33aSEmmanuel Vadot type: object 93*cb7aa33aSEmmanuel Vadot additionalProperties: false 94*cb7aa33aSEmmanuel Vadot properties: 95*cb7aa33aSEmmanuel Vadot clocks: 96*cb7aa33aSEmmanuel Vadot items: 97*cb7aa33aSEmmanuel Vadot - description: USB2 tracking clock 98*cb7aa33aSEmmanuel Vadot 99*cb7aa33aSEmmanuel Vadot clock-names: 100*cb7aa33aSEmmanuel Vadot items: 101*cb7aa33aSEmmanuel Vadot - const: trk 102*cb7aa33aSEmmanuel Vadot 103*cb7aa33aSEmmanuel Vadot lanes: 104*cb7aa33aSEmmanuel Vadot type: object 105*cb7aa33aSEmmanuel Vadot additionalProperties: false 106*cb7aa33aSEmmanuel Vadot properties: 107*cb7aa33aSEmmanuel Vadot usb2-0: 108*cb7aa33aSEmmanuel Vadot type: object 109*cb7aa33aSEmmanuel Vadot additionalProperties: false 110*cb7aa33aSEmmanuel Vadot properties: 111*cb7aa33aSEmmanuel Vadot "#phy-cells": 112*cb7aa33aSEmmanuel Vadot const: 0 113*cb7aa33aSEmmanuel Vadot 114*cb7aa33aSEmmanuel Vadot nvidia,function: 115*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 116*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 117*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 118*cb7aa33aSEmmanuel Vadot 119*cb7aa33aSEmmanuel Vadot usb2-1: 120*cb7aa33aSEmmanuel Vadot type: object 121*cb7aa33aSEmmanuel Vadot additionalProperties: false 122*cb7aa33aSEmmanuel Vadot properties: 123*cb7aa33aSEmmanuel Vadot "#phy-cells": 124*cb7aa33aSEmmanuel Vadot const: 0 125*cb7aa33aSEmmanuel Vadot 126*cb7aa33aSEmmanuel Vadot nvidia,function: 127*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 128*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 129*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 130*cb7aa33aSEmmanuel Vadot 131*cb7aa33aSEmmanuel Vadot usb2-2: 132*cb7aa33aSEmmanuel Vadot type: object 133*cb7aa33aSEmmanuel Vadot additionalProperties: false 134*cb7aa33aSEmmanuel Vadot properties: 135*cb7aa33aSEmmanuel Vadot "#phy-cells": 136*cb7aa33aSEmmanuel Vadot const: 0 137*cb7aa33aSEmmanuel Vadot 138*cb7aa33aSEmmanuel Vadot nvidia,function: 139*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 140*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 141*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 142*cb7aa33aSEmmanuel Vadot 143*cb7aa33aSEmmanuel Vadot usb2-3: 144*cb7aa33aSEmmanuel Vadot type: object 145*cb7aa33aSEmmanuel Vadot additionalProperties: false 146*cb7aa33aSEmmanuel Vadot properties: 147*cb7aa33aSEmmanuel Vadot "#phy-cells": 148*cb7aa33aSEmmanuel Vadot const: 0 149*cb7aa33aSEmmanuel Vadot 150*cb7aa33aSEmmanuel Vadot nvidia,function: 151*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 152*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 153*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 154*cb7aa33aSEmmanuel Vadot 155*cb7aa33aSEmmanuel Vadot usb3: 156*cb7aa33aSEmmanuel Vadot type: object 157*cb7aa33aSEmmanuel Vadot additionalProperties: false 158*cb7aa33aSEmmanuel Vadot properties: 159*cb7aa33aSEmmanuel Vadot lanes: 160*cb7aa33aSEmmanuel Vadot type: object 161*cb7aa33aSEmmanuel Vadot additionalProperties: false 162*cb7aa33aSEmmanuel Vadot properties: 163*cb7aa33aSEmmanuel Vadot usb3-0: 164*cb7aa33aSEmmanuel Vadot type: object 165*cb7aa33aSEmmanuel Vadot additionalProperties: false 166*cb7aa33aSEmmanuel Vadot properties: 167*cb7aa33aSEmmanuel Vadot "#phy-cells": 168*cb7aa33aSEmmanuel Vadot const: 0 169*cb7aa33aSEmmanuel Vadot 170*cb7aa33aSEmmanuel Vadot nvidia,function: 171*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 172*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 173*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 174*cb7aa33aSEmmanuel Vadot 175*cb7aa33aSEmmanuel Vadot usb3-1: 176*cb7aa33aSEmmanuel Vadot type: object 177*cb7aa33aSEmmanuel Vadot additionalProperties: false 178*cb7aa33aSEmmanuel Vadot properties: 179*cb7aa33aSEmmanuel Vadot "#phy-cells": 180*cb7aa33aSEmmanuel Vadot const: 0 181*cb7aa33aSEmmanuel Vadot 182*cb7aa33aSEmmanuel Vadot nvidia,function: 183*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 184*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 185*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 186*cb7aa33aSEmmanuel Vadot 187*cb7aa33aSEmmanuel Vadot usb3-2: 188*cb7aa33aSEmmanuel Vadot type: object 189*cb7aa33aSEmmanuel Vadot additionalProperties: false 190*cb7aa33aSEmmanuel Vadot properties: 191*cb7aa33aSEmmanuel Vadot "#phy-cells": 192*cb7aa33aSEmmanuel Vadot const: 0 193*cb7aa33aSEmmanuel Vadot 194*cb7aa33aSEmmanuel Vadot nvidia,function: 195*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 196*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 197*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 198*cb7aa33aSEmmanuel Vadot 199*cb7aa33aSEmmanuel Vadot usb3-3: 200*cb7aa33aSEmmanuel Vadot type: object 201*cb7aa33aSEmmanuel Vadot additionalProperties: false 202*cb7aa33aSEmmanuel Vadot properties: 203*cb7aa33aSEmmanuel Vadot "#phy-cells": 204*cb7aa33aSEmmanuel Vadot const: 0 205*cb7aa33aSEmmanuel Vadot 206*cb7aa33aSEmmanuel Vadot nvidia,function: 207*cb7aa33aSEmmanuel Vadot description: Function selection for this lane. 208*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 209*cb7aa33aSEmmanuel Vadot enum: [ xusb ] 210*cb7aa33aSEmmanuel Vadot 211*cb7aa33aSEmmanuel Vadot ports: 212*cb7aa33aSEmmanuel Vadot description: A required child node named "ports" contains a list of 213*cb7aa33aSEmmanuel Vadot subnodes, one for each of the ports exposed by the XUSB pad controller. 214*cb7aa33aSEmmanuel Vadot Each port may need additional resources that can be referenced in its 215*cb7aa33aSEmmanuel Vadot port node. 216*cb7aa33aSEmmanuel Vadot 217*cb7aa33aSEmmanuel Vadot The "status" property is used to enable or disable the use of a port. 218*cb7aa33aSEmmanuel Vadot If set to "disabled", the port will not be used on the given board. In 219*cb7aa33aSEmmanuel Vadot order to use the port, this property must be set to "okay". 220*cb7aa33aSEmmanuel Vadot type: object 221*cb7aa33aSEmmanuel Vadot additionalProperties: false 222*cb7aa33aSEmmanuel Vadot properties: 223*cb7aa33aSEmmanuel Vadot usb2-0: 224*cb7aa33aSEmmanuel Vadot type: object 225*cb7aa33aSEmmanuel Vadot additionalProperties: false 226*cb7aa33aSEmmanuel Vadot properties: 227*cb7aa33aSEmmanuel Vadot # no need to further describe this because the connector will 228*cb7aa33aSEmmanuel Vadot # match on gpio-usb-b-connector or usb-b-connector and cause 229*cb7aa33aSEmmanuel Vadot # that binding to be selected for the subnode 230*cb7aa33aSEmmanuel Vadot connector: 231*cb7aa33aSEmmanuel Vadot type: object 232*cb7aa33aSEmmanuel Vadot 233*cb7aa33aSEmmanuel Vadot mode: 234*cb7aa33aSEmmanuel Vadot description: A string that determines the mode in which to 235*cb7aa33aSEmmanuel Vadot run the port. 236*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 237*cb7aa33aSEmmanuel Vadot enum: [ host, peripheral, otg ] 238*cb7aa33aSEmmanuel Vadot 239*cb7aa33aSEmmanuel Vadot nvidia,internal: 240*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 241*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 242*cb7aa33aSEmmanuel Vadot the port is considered to be external. 243*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 244*cb7aa33aSEmmanuel Vadot 245*cb7aa33aSEmmanuel Vadot usb-role-switch: 246*cb7aa33aSEmmanuel Vadot description: | 247*cb7aa33aSEmmanuel Vadot A boolean property whole presence indicates that the port 248*cb7aa33aSEmmanuel Vadot supports OTG or peripheral mode. If present, the port 249*cb7aa33aSEmmanuel Vadot supports switching between USB host and peripheral roles. 250*cb7aa33aSEmmanuel Vadot A connector must be added as a subnode in that case. 251*cb7aa33aSEmmanuel Vadot 252*cb7aa33aSEmmanuel Vadot See ../connector/usb-connector.yaml. 253*cb7aa33aSEmmanuel Vadot 254*cb7aa33aSEmmanuel Vadot vbus-supply: 255*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 256*cb7aa33aSEmmanuel Vadot voltage. 257*cb7aa33aSEmmanuel Vadot 258*cb7aa33aSEmmanuel Vadot dependencies: 259*cb7aa33aSEmmanuel Vadot usb-role-switch: [ connector ] 260*cb7aa33aSEmmanuel Vadot 261*cb7aa33aSEmmanuel Vadot usb2-1: 262*cb7aa33aSEmmanuel Vadot type: object 263*cb7aa33aSEmmanuel Vadot additionalProperties: false 264*cb7aa33aSEmmanuel Vadot properties: 265*cb7aa33aSEmmanuel Vadot # no need to further describe this because the connector will 266*cb7aa33aSEmmanuel Vadot # match on gpio-usb-b-connector or usb-b-connector and cause 267*cb7aa33aSEmmanuel Vadot # that binding to be selected for the subnode 268*cb7aa33aSEmmanuel Vadot connector: 269*cb7aa33aSEmmanuel Vadot type: object 270*cb7aa33aSEmmanuel Vadot 271*cb7aa33aSEmmanuel Vadot mode: 272*cb7aa33aSEmmanuel Vadot description: A string that determines the mode in which to 273*cb7aa33aSEmmanuel Vadot run the port. 274*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 275*cb7aa33aSEmmanuel Vadot enum: [ host, peripheral, otg ] 276*cb7aa33aSEmmanuel Vadot 277*cb7aa33aSEmmanuel Vadot nvidia,internal: 278*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 279*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 280*cb7aa33aSEmmanuel Vadot the port is considered to be external. 281*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 282*cb7aa33aSEmmanuel Vadot 283*cb7aa33aSEmmanuel Vadot usb-role-switch: 284*cb7aa33aSEmmanuel Vadot description: | 285*cb7aa33aSEmmanuel Vadot A boolean property whole presence indicates that the port 286*cb7aa33aSEmmanuel Vadot supports OTG or peripheral mode. If present, the port 287*cb7aa33aSEmmanuel Vadot supports switching between USB host and peripheral roles. 288*cb7aa33aSEmmanuel Vadot A connector must be added as a subnode in that case. 289*cb7aa33aSEmmanuel Vadot 290*cb7aa33aSEmmanuel Vadot See ../connector/usb-connector.yaml. 291*cb7aa33aSEmmanuel Vadot 292*cb7aa33aSEmmanuel Vadot vbus-supply: 293*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 294*cb7aa33aSEmmanuel Vadot voltage. 295*cb7aa33aSEmmanuel Vadot 296*cb7aa33aSEmmanuel Vadot dependencies: 297*cb7aa33aSEmmanuel Vadot usb-role-switch: [ connector ] 298*cb7aa33aSEmmanuel Vadot 299*cb7aa33aSEmmanuel Vadot usb2-2: 300*cb7aa33aSEmmanuel Vadot type: object 301*cb7aa33aSEmmanuel Vadot additionalProperties: false 302*cb7aa33aSEmmanuel Vadot properties: 303*cb7aa33aSEmmanuel Vadot # no need to further describe this because the connector will 304*cb7aa33aSEmmanuel Vadot # match on gpio-usb-b-connector or usb-b-connector and cause 305*cb7aa33aSEmmanuel Vadot # that binding to be selected for the subnode 306*cb7aa33aSEmmanuel Vadot connector: 307*cb7aa33aSEmmanuel Vadot type: object 308*cb7aa33aSEmmanuel Vadot 309*cb7aa33aSEmmanuel Vadot mode: 310*cb7aa33aSEmmanuel Vadot description: A string that determines the mode in which to 311*cb7aa33aSEmmanuel Vadot run the port. 312*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 313*cb7aa33aSEmmanuel Vadot enum: [ host, peripheral, otg ] 314*cb7aa33aSEmmanuel Vadot 315*cb7aa33aSEmmanuel Vadot nvidia,internal: 316*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 317*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 318*cb7aa33aSEmmanuel Vadot the port is considered to be external. 319*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 320*cb7aa33aSEmmanuel Vadot 321*cb7aa33aSEmmanuel Vadot usb-role-switch: 322*cb7aa33aSEmmanuel Vadot description: | 323*cb7aa33aSEmmanuel Vadot A boolean property whole presence indicates that the port 324*cb7aa33aSEmmanuel Vadot supports OTG or peripheral mode. If present, the port 325*cb7aa33aSEmmanuel Vadot supports switching between USB host and peripheral roles. 326*cb7aa33aSEmmanuel Vadot A connector must be added as a subnode in that case. 327*cb7aa33aSEmmanuel Vadot 328*cb7aa33aSEmmanuel Vadot See ../connector/usb-connector.yaml. 329*cb7aa33aSEmmanuel Vadot 330*cb7aa33aSEmmanuel Vadot vbus-supply: 331*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 332*cb7aa33aSEmmanuel Vadot voltage. 333*cb7aa33aSEmmanuel Vadot 334*cb7aa33aSEmmanuel Vadot dependencies: 335*cb7aa33aSEmmanuel Vadot usb-role-switch: [ connector ] 336*cb7aa33aSEmmanuel Vadot 337*cb7aa33aSEmmanuel Vadot usb2-3: 338*cb7aa33aSEmmanuel Vadot type: object 339*cb7aa33aSEmmanuel Vadot additionalProperties: false 340*cb7aa33aSEmmanuel Vadot properties: 341*cb7aa33aSEmmanuel Vadot # no need to further describe this because the connector will 342*cb7aa33aSEmmanuel Vadot # match on gpio-usb-b-connector or usb-b-connector and cause 343*cb7aa33aSEmmanuel Vadot # that binding to be selected for the subnode 344*cb7aa33aSEmmanuel Vadot connector: 345*cb7aa33aSEmmanuel Vadot type: object 346*cb7aa33aSEmmanuel Vadot 347*cb7aa33aSEmmanuel Vadot mode: 348*cb7aa33aSEmmanuel Vadot description: A string that determines the mode in which to 349*cb7aa33aSEmmanuel Vadot run the port. 350*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 351*cb7aa33aSEmmanuel Vadot enum: [ host, peripheral, otg ] 352*cb7aa33aSEmmanuel Vadot 353*cb7aa33aSEmmanuel Vadot nvidia,internal: 354*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 355*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 356*cb7aa33aSEmmanuel Vadot the port is considered to be external. 357*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 358*cb7aa33aSEmmanuel Vadot 359*cb7aa33aSEmmanuel Vadot usb-role-switch: 360*cb7aa33aSEmmanuel Vadot description: | 361*cb7aa33aSEmmanuel Vadot A boolean property whole presence indicates that the port 362*cb7aa33aSEmmanuel Vadot supports OTG or peripheral mode. If present, the port 363*cb7aa33aSEmmanuel Vadot supports switching between USB host and peripheral roles. 364*cb7aa33aSEmmanuel Vadot A connector must be added as a subnode in that case. 365*cb7aa33aSEmmanuel Vadot 366*cb7aa33aSEmmanuel Vadot See ../connector/usb-connector.yaml. 367*cb7aa33aSEmmanuel Vadot 368*cb7aa33aSEmmanuel Vadot vbus-supply: 369*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 370*cb7aa33aSEmmanuel Vadot voltage. 371*cb7aa33aSEmmanuel Vadot 372*cb7aa33aSEmmanuel Vadot dependencies: 373*cb7aa33aSEmmanuel Vadot usb-role-switch: [ connector ] 374*cb7aa33aSEmmanuel Vadot 375*cb7aa33aSEmmanuel Vadot usb3-0: 376*cb7aa33aSEmmanuel Vadot type: object 377*cb7aa33aSEmmanuel Vadot additionalProperties: false 378*cb7aa33aSEmmanuel Vadot properties: 379*cb7aa33aSEmmanuel Vadot maximum-speed: 380*cb7aa33aSEmmanuel Vadot description: A string property that specifies the maximum 381*cb7aa33aSEmmanuel Vadot supported speed of a USB3 port. 382*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 383*cb7aa33aSEmmanuel Vadot oneOf: 384*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 2 speed. 385*cb7aa33aSEmmanuel Vadot This is the default. 386*cb7aa33aSEmmanuel Vadot const: super-speed-plus 387*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 1 speed 388*cb7aa33aSEmmanuel Vadot only. 389*cb7aa33aSEmmanuel Vadot const: super-speed 390*cb7aa33aSEmmanuel Vadot 391*cb7aa33aSEmmanuel Vadot nvidia,internal: 392*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 393*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 394*cb7aa33aSEmmanuel Vadot the port is considered to be external. 395*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 396*cb7aa33aSEmmanuel Vadot 397*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion: 398*cb7aa33aSEmmanuel Vadot description: A single cell that specifies the physical port 399*cb7aa33aSEmmanuel Vadot number to map this super-speed USB port to. The range of 400*cb7aa33aSEmmanuel Vadot valid port numbers varies with the SoC generation. 401*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 402*cb7aa33aSEmmanuel Vadot enum: [ 0, 1, 2, 3 ] 403*cb7aa33aSEmmanuel Vadot 404*cb7aa33aSEmmanuel Vadot vbus-supply: 405*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 406*cb7aa33aSEmmanuel Vadot voltage. 407*cb7aa33aSEmmanuel Vadot 408*cb7aa33aSEmmanuel Vadot usb3-1: 409*cb7aa33aSEmmanuel Vadot type: object 410*cb7aa33aSEmmanuel Vadot additionalProperties: false 411*cb7aa33aSEmmanuel Vadot properties: 412*cb7aa33aSEmmanuel Vadot maximum-speed: 413*cb7aa33aSEmmanuel Vadot description: A string property that specifies the maximum 414*cb7aa33aSEmmanuel Vadot supported speed of a USB3 port. 415*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 416*cb7aa33aSEmmanuel Vadot oneOf: 417*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 2 speed. 418*cb7aa33aSEmmanuel Vadot This is the default. 419*cb7aa33aSEmmanuel Vadot const: super-speed-plus 420*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 1 speed 421*cb7aa33aSEmmanuel Vadot only. 422*cb7aa33aSEmmanuel Vadot const: super-speed 423*cb7aa33aSEmmanuel Vadot 424*cb7aa33aSEmmanuel Vadot nvidia,internal: 425*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 426*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 427*cb7aa33aSEmmanuel Vadot the port is considered to be external. 428*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 429*cb7aa33aSEmmanuel Vadot 430*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion: 431*cb7aa33aSEmmanuel Vadot description: A single cell that specifies the physical port 432*cb7aa33aSEmmanuel Vadot number to map this super-speed USB port to. The range of 433*cb7aa33aSEmmanuel Vadot valid port numbers varies with the SoC generation. 434*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 435*cb7aa33aSEmmanuel Vadot enum: [ 0, 1, 2, 3 ] 436*cb7aa33aSEmmanuel Vadot 437*cb7aa33aSEmmanuel Vadot vbus-supply: 438*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 439*cb7aa33aSEmmanuel Vadot voltage. 440*cb7aa33aSEmmanuel Vadot 441*cb7aa33aSEmmanuel Vadot usb3-2: 442*cb7aa33aSEmmanuel Vadot type: object 443*cb7aa33aSEmmanuel Vadot additionalProperties: false 444*cb7aa33aSEmmanuel Vadot properties: 445*cb7aa33aSEmmanuel Vadot maximum-speed: 446*cb7aa33aSEmmanuel Vadot description: A string property that specifies the maximum 447*cb7aa33aSEmmanuel Vadot supported speed of a USB3 port. 448*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 449*cb7aa33aSEmmanuel Vadot oneOf: 450*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 2 speed. 451*cb7aa33aSEmmanuel Vadot This is the default. 452*cb7aa33aSEmmanuel Vadot const: super-speed-plus 453*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 1 speed 454*cb7aa33aSEmmanuel Vadot only. 455*cb7aa33aSEmmanuel Vadot const: super-speed 456*cb7aa33aSEmmanuel Vadot 457*cb7aa33aSEmmanuel Vadot nvidia,internal: 458*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 459*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 460*cb7aa33aSEmmanuel Vadot the port is considered to be external. 461*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 462*cb7aa33aSEmmanuel Vadot 463*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion: 464*cb7aa33aSEmmanuel Vadot description: A single cell that specifies the physical port 465*cb7aa33aSEmmanuel Vadot number to map this super-speed USB port to. The range of 466*cb7aa33aSEmmanuel Vadot valid port numbers varies with the SoC generation. 467*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 468*cb7aa33aSEmmanuel Vadot enum: [ 0, 1, 2, 3 ] 469*cb7aa33aSEmmanuel Vadot 470*cb7aa33aSEmmanuel Vadot vbus-supply: 471*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 472*cb7aa33aSEmmanuel Vadot voltage. 473*cb7aa33aSEmmanuel Vadot 474*cb7aa33aSEmmanuel Vadot usb3-3: 475*cb7aa33aSEmmanuel Vadot type: object 476*cb7aa33aSEmmanuel Vadot additionalProperties: false 477*cb7aa33aSEmmanuel Vadot properties: 478*cb7aa33aSEmmanuel Vadot maximum-speed: 479*cb7aa33aSEmmanuel Vadot description: A string property that specifies the maximum 480*cb7aa33aSEmmanuel Vadot supported speed of a USB3 port. 481*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/string 482*cb7aa33aSEmmanuel Vadot oneOf: 483*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 2 speed. 484*cb7aa33aSEmmanuel Vadot This is the default. 485*cb7aa33aSEmmanuel Vadot const: super-speed-plus 486*cb7aa33aSEmmanuel Vadot - description: The USB3 port supports USB 3.1 Gen 1 speed 487*cb7aa33aSEmmanuel Vadot only. 488*cb7aa33aSEmmanuel Vadot const: super-speed 489*cb7aa33aSEmmanuel Vadot 490*cb7aa33aSEmmanuel Vadot nvidia,internal: 491*cb7aa33aSEmmanuel Vadot description: A boolean property whose presence determines 492*cb7aa33aSEmmanuel Vadot that a port is internal. In the absence of this property 493*cb7aa33aSEmmanuel Vadot the port is considered to be external. 494*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/flag 495*cb7aa33aSEmmanuel Vadot 496*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion: 497*cb7aa33aSEmmanuel Vadot description: A single cell that specifies the physical port 498*cb7aa33aSEmmanuel Vadot number to map this super-speed USB port to. The range of 499*cb7aa33aSEmmanuel Vadot valid port numbers varies with the SoC generation. 500*cb7aa33aSEmmanuel Vadot $ref: /schemas/types.yaml#/definitions/uint32 501*cb7aa33aSEmmanuel Vadot enum: [ 0, 1, 2, 3 ] 502*cb7aa33aSEmmanuel Vadot 503*cb7aa33aSEmmanuel Vadot vbus-supply: 504*cb7aa33aSEmmanuel Vadot description: A phandle to the regulator supplying the VBUS 505*cb7aa33aSEmmanuel Vadot voltage. 506*cb7aa33aSEmmanuel Vadot 507*cb7aa33aSEmmanuel VadotadditionalProperties: false 508*cb7aa33aSEmmanuel Vadot 509*cb7aa33aSEmmanuel Vadotrequired: 510*cb7aa33aSEmmanuel Vadot - compatible 511*cb7aa33aSEmmanuel Vadot - reg 512*cb7aa33aSEmmanuel Vadot - resets 513*cb7aa33aSEmmanuel Vadot - reset-names 514*cb7aa33aSEmmanuel Vadot - avdd-usb-supply 515*cb7aa33aSEmmanuel Vadot - vclamp-usb-supply 516*cb7aa33aSEmmanuel Vadot 517*cb7aa33aSEmmanuel Vadotexamples: 518*cb7aa33aSEmmanuel Vadot - | 519*cb7aa33aSEmmanuel Vadot #include <dt-bindings/clock/tegra194-clock.h> 520*cb7aa33aSEmmanuel Vadot #include <dt-bindings/gpio/tegra194-gpio.h> 521*cb7aa33aSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 522*cb7aa33aSEmmanuel Vadot #include <dt-bindings/reset/tegra194-reset.h> 523*cb7aa33aSEmmanuel Vadot 524*cb7aa33aSEmmanuel Vadot padctl@3520000 { 525*cb7aa33aSEmmanuel Vadot compatible = "nvidia,tegra194-xusb-padctl"; 526*cb7aa33aSEmmanuel Vadot reg = <0x03520000 0x1000>, 527*cb7aa33aSEmmanuel Vadot <0x03540000 0x1000>; 528*cb7aa33aSEmmanuel Vadot reg-names = "padctl", "ao"; 529*cb7aa33aSEmmanuel Vadot interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>; 530*cb7aa33aSEmmanuel Vadot 531*cb7aa33aSEmmanuel Vadot resets = <&bpmp TEGRA194_RESET_XUSB_PADCTL>; 532*cb7aa33aSEmmanuel Vadot reset-names = "padctl"; 533*cb7aa33aSEmmanuel Vadot 534*cb7aa33aSEmmanuel Vadot avdd-usb-supply = <&vdd_usb_3v3>; 535*cb7aa33aSEmmanuel Vadot vclamp-usb-supply = <&vdd_1v8ao>; 536*cb7aa33aSEmmanuel Vadot 537*cb7aa33aSEmmanuel Vadot pads { 538*cb7aa33aSEmmanuel Vadot usb2 { 539*cb7aa33aSEmmanuel Vadot clocks = <&bpmp TEGRA194_CLK_USB2_TRK>; 540*cb7aa33aSEmmanuel Vadot clock-names = "trk"; 541*cb7aa33aSEmmanuel Vadot 542*cb7aa33aSEmmanuel Vadot lanes { 543*cb7aa33aSEmmanuel Vadot usb2-0 { 544*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 545*cb7aa33aSEmmanuel Vadot status = "disabled"; 546*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 547*cb7aa33aSEmmanuel Vadot }; 548*cb7aa33aSEmmanuel Vadot 549*cb7aa33aSEmmanuel Vadot usb2-1 { 550*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 551*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 552*cb7aa33aSEmmanuel Vadot }; 553*cb7aa33aSEmmanuel Vadot 554*cb7aa33aSEmmanuel Vadot usb2-2 { 555*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 556*cb7aa33aSEmmanuel Vadot status = "disabled"; 557*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 558*cb7aa33aSEmmanuel Vadot }; 559*cb7aa33aSEmmanuel Vadot 560*cb7aa33aSEmmanuel Vadot usb2-3 { 561*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 562*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 563*cb7aa33aSEmmanuel Vadot }; 564*cb7aa33aSEmmanuel Vadot }; 565*cb7aa33aSEmmanuel Vadot }; 566*cb7aa33aSEmmanuel Vadot 567*cb7aa33aSEmmanuel Vadot usb3 { 568*cb7aa33aSEmmanuel Vadot lanes { 569*cb7aa33aSEmmanuel Vadot usb3-0 { 570*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 571*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 572*cb7aa33aSEmmanuel Vadot }; 573*cb7aa33aSEmmanuel Vadot 574*cb7aa33aSEmmanuel Vadot usb3-1 { 575*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 576*cb7aa33aSEmmanuel Vadot status = "disabled"; 577*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 578*cb7aa33aSEmmanuel Vadot }; 579*cb7aa33aSEmmanuel Vadot 580*cb7aa33aSEmmanuel Vadot usb3-2 { 581*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 582*cb7aa33aSEmmanuel Vadot status = "disabled"; 583*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 584*cb7aa33aSEmmanuel Vadot }; 585*cb7aa33aSEmmanuel Vadot 586*cb7aa33aSEmmanuel Vadot usb3-3 { 587*cb7aa33aSEmmanuel Vadot nvidia,function = "xusb"; 588*cb7aa33aSEmmanuel Vadot #phy-cells = <0>; 589*cb7aa33aSEmmanuel Vadot }; 590*cb7aa33aSEmmanuel Vadot }; 591*cb7aa33aSEmmanuel Vadot }; 592*cb7aa33aSEmmanuel Vadot }; 593*cb7aa33aSEmmanuel Vadot 594*cb7aa33aSEmmanuel Vadot ports { 595*cb7aa33aSEmmanuel Vadot usb2-0 { 596*cb7aa33aSEmmanuel Vadot status = "disabled"; 597*cb7aa33aSEmmanuel Vadot }; 598*cb7aa33aSEmmanuel Vadot 599*cb7aa33aSEmmanuel Vadot usb2-1 { 600*cb7aa33aSEmmanuel Vadot vbus-supply = <&vdd_5v0_sys>; 601*cb7aa33aSEmmanuel Vadot mode = "host"; 602*cb7aa33aSEmmanuel Vadot }; 603*cb7aa33aSEmmanuel Vadot 604*cb7aa33aSEmmanuel Vadot usb2-2 { 605*cb7aa33aSEmmanuel Vadot status = "disabled"; 606*cb7aa33aSEmmanuel Vadot }; 607*cb7aa33aSEmmanuel Vadot 608*cb7aa33aSEmmanuel Vadot usb2-3 { 609*cb7aa33aSEmmanuel Vadot vbus-supply = <&vdd_5v_sata>; 610*cb7aa33aSEmmanuel Vadot mode = "host"; 611*cb7aa33aSEmmanuel Vadot }; 612*cb7aa33aSEmmanuel Vadot 613*cb7aa33aSEmmanuel Vadot usb3-0 { 614*cb7aa33aSEmmanuel Vadot vbus-supply = <&vdd_5v0_sys>; 615*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion = <1>; 616*cb7aa33aSEmmanuel Vadot }; 617*cb7aa33aSEmmanuel Vadot 618*cb7aa33aSEmmanuel Vadot usb3-1 { 619*cb7aa33aSEmmanuel Vadot status = "disabled"; 620*cb7aa33aSEmmanuel Vadot }; 621*cb7aa33aSEmmanuel Vadot 622*cb7aa33aSEmmanuel Vadot usb3-2 { 623*cb7aa33aSEmmanuel Vadot status = "disabled"; 624*cb7aa33aSEmmanuel Vadot }; 625*cb7aa33aSEmmanuel Vadot 626*cb7aa33aSEmmanuel Vadot usb3-3 { 627*cb7aa33aSEmmanuel Vadot maximum-speed = "super-speed"; 628*cb7aa33aSEmmanuel Vadot vbus-supply = <&vdd_5v0_sys>; 629*cb7aa33aSEmmanuel Vadot nvidia,usb2-companion = <3>; 630*cb7aa33aSEmmanuel Vadot }; 631*cb7aa33aSEmmanuel Vadot }; 632*cb7aa33aSEmmanuel Vadot }; 633