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