1*4882a593SmuzhiyunDevice tree binding for NVIDIA Tegra XUSB pad controller 2*4882a593Smuzhiyun======================================================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunThe Tegra XUSB pad controller manages a set of I/O lanes (with differential 5*4882a593Smuzhiyunsignals) which connect directly to pins/pads on the SoC package. Each lane 6*4882a593Smuzhiyunis controlled by a HW block referred to as a "pad" in the Tegra hardware 7*4882a593Smuzhiyundocumentation. Each such "pad" may control either one or multiple lanes, 8*4882a593Smuzhiyunand thus contains any logic common to all its lanes. Each lane can be 9*4882a593Smuzhiyunseparately configured and powered up. 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunSome of the lanes are high-speed lanes, which can be used for PCIe, SATA or 12*4882a593Smuzhiyunsuper-speed USB. Other lanes are for various types of low-speed, full-speed 13*4882a593Smuzhiyunor high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller 14*4882a593Smuzhiyuncontains a software-configurable mux that sits between the I/O controller 15*4882a593Smuzhiyunports (e.g. PCIe) and the lanes. 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunIn addition to per-lane configuration, USB 3.0 ports may require additional 18*4882a593Smuzhiyunsettings on a per-board basis. 19*4882a593Smuzhiyun 20*4882a593SmuzhiyunPads will be represented as children of the top-level XUSB pad controller 21*4882a593Smuzhiyundevice tree node. Each lane exposed by the pad will be represented by its 22*4882a593Smuzhiyunown subnode and can be referenced by users of the lane using the standard 23*4882a593SmuzhiyunPHY bindings, as described by the phy-bindings.txt file in this directory. 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunThe Tegra hardware documentation refers to the connection between the XUSB 26*4882a593Smuzhiyunpad controller and the XUSB controller as "ports". This is confusing since 27*4882a593Smuzhiyun"port" is typically used to denote the physical USB receptacle. The device 28*4882a593Smuzhiyuntree binding in this document uses the term "port" to refer to the logical 29*4882a593Smuzhiyunabstraction of the signals that are routed to a USB receptacle (i.e. a PHY 30*4882a593Smuzhiyunfor the USB signal, the VBUS power supply, the USB 2.0 companion port for 31*4882a593SmuzhiyunUSB 3.0 receptacles, ...). 32*4882a593Smuzhiyun 33*4882a593SmuzhiyunRequired properties: 34*4882a593Smuzhiyun-------------------- 35*4882a593Smuzhiyun- compatible: Must be: 36*4882a593Smuzhiyun - Tegra124: "nvidia,tegra124-xusb-padctl" 37*4882a593Smuzhiyun - Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl" 38*4882a593Smuzhiyun - Tegra210: "nvidia,tegra210-xusb-padctl" 39*4882a593Smuzhiyun - Tegra186: "nvidia,tegra186-xusb-padctl" 40*4882a593Smuzhiyun - Tegra194: "nvidia,tegra194-xusb-padctl" 41*4882a593Smuzhiyun- reg: Physical base address and length of the controller's registers. 42*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names. 43*4882a593Smuzhiyun- reset-names: Must include the following entries: 44*4882a593Smuzhiyun - "padctl" 45*4882a593Smuzhiyun 46*4882a593SmuzhiyunFor Tegra124: 47*4882a593Smuzhiyun- avdd-pll-utmip-supply: UTMI PLL power supply. Must supply 1.8 V. 48*4882a593Smuzhiyun- avdd-pll-erefe-supply: PLLE reference PLL power supply. Must supply 1.05 V. 49*4882a593Smuzhiyun- avdd-pex-pll-supply: PCIe/USB3 PLL power supply. Must supply 1.05 V. 50*4882a593Smuzhiyun- hvdd-pex-pll-e-supply: High-voltage PLLE power supply. Must supply 3.3 V. 51*4882a593Smuzhiyun 52*4882a593SmuzhiyunFor Tegra210: 53*4882a593Smuzhiyun- avdd-pll-utmip-supply: UTMI PLL power supply. Must supply 1.8 V. 54*4882a593Smuzhiyun- avdd-pll-uerefe-supply: PLLE reference PLL power supply. Must supply 1.05 V. 55*4882a593Smuzhiyun- dvdd-pex-pll-supply: PCIe/USB3 PLL power supply. Must supply 1.05 V. 56*4882a593Smuzhiyun- hvdd-pex-pll-e-supply: High-voltage PLLE power supply. Must supply 1.8 V. 57*4882a593Smuzhiyun 58*4882a593SmuzhiyunFor Tegra186: 59*4882a593Smuzhiyun- avdd-pll-erefeut-supply: UPHY brick and reference clock as well as UTMI PHY 60*4882a593Smuzhiyun power supply. Must supply 1.8 V. 61*4882a593Smuzhiyun- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply 62*4882a593Smuzhiyun 3.3 V. 63*4882a593Smuzhiyun- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V. 64*4882a593Smuzhiyun- vddio-hsic-supply: HSIC PHY power supply. Must supply 1.2 V. 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunFor Tegra194: 67*4882a593Smuzhiyun- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply 68*4882a593Smuzhiyun 3.3 V. 69*4882a593Smuzhiyun- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V. 70*4882a593Smuzhiyun 71*4882a593SmuzhiyunPad nodes: 72*4882a593Smuzhiyun========== 73*4882a593Smuzhiyun 74*4882a593SmuzhiyunA required child node named "pads" contains a list of subnodes, one for each 75*4882a593Smuzhiyunof the pads exposed by the XUSB pad controller. Each pad may need additional 76*4882a593Smuzhiyunresources that can be referenced in its pad node. 77*4882a593Smuzhiyun 78*4882a593SmuzhiyunThe "status" property is used to enable or disable the use of a pad. If set 79*4882a593Smuzhiyunto "disabled", the pad will not be used on the given board. In order to use 80*4882a593Smuzhiyunthe pad and any of its lanes, this property must be set to "okay". 81*4882a593Smuzhiyun 82*4882a593SmuzhiyunFor Tegra124 and Tegra132, the following pads exist: usb2, ulpi, hsic, pcie 83*4882a593Smuzhiyunand sata. No extra resources are required for operation of these pads. 84*4882a593Smuzhiyun 85*4882a593SmuzhiyunFor Tegra210, the following pads exist: usb2, hsic, pcie and sata. Below is 86*4882a593Smuzhiyuna description of the properties of each pad. 87*4882a593Smuzhiyun 88*4882a593SmuzhiyunUTMI pad: 89*4882a593Smuzhiyun--------- 90*4882a593Smuzhiyun 91*4882a593SmuzhiyunRequired properties: 92*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names. 93*4882a593Smuzhiyun- clock-names: Must contain the following entries: 94*4882a593Smuzhiyun - "trk": phandle and specifier referring to the USB2 tracking clock 95*4882a593Smuzhiyun 96*4882a593SmuzhiyunHSIC pad: 97*4882a593Smuzhiyun--------- 98*4882a593Smuzhiyun 99*4882a593SmuzhiyunRequired properties: 100*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names. 101*4882a593Smuzhiyun- clock-names: Must contain the following entries: 102*4882a593Smuzhiyun - "trk": phandle and specifier referring to the HSIC tracking clock 103*4882a593Smuzhiyun 104*4882a593SmuzhiyunPCIe pad: 105*4882a593Smuzhiyun--------- 106*4882a593Smuzhiyun 107*4882a593SmuzhiyunRequired properties: 108*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names. 109*4882a593Smuzhiyun- clock-names: Must contain the following entries: 110*4882a593Smuzhiyun - "pll": phandle and specifier referring to the PLLE 111*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names. 112*4882a593Smuzhiyun- reset-names: Must contain the following entries: 113*4882a593Smuzhiyun - "phy": reset for the PCIe UPHY block 114*4882a593Smuzhiyun 115*4882a593SmuzhiyunSATA pad: 116*4882a593Smuzhiyun--------- 117*4882a593Smuzhiyun 118*4882a593SmuzhiyunRequired properties: 119*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names. 120*4882a593Smuzhiyun- reset-names: Must contain the following entries: 121*4882a593Smuzhiyun - "phy": reset for the SATA UPHY block 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun 124*4882a593SmuzhiyunPHY nodes: 125*4882a593Smuzhiyun========== 126*4882a593Smuzhiyun 127*4882a593SmuzhiyunEach pad node has a child named "lanes" that contains one or more children of 128*4882a593Smuzhiyunits own, each representing one of the lanes controlled by the pad. 129*4882a593Smuzhiyun 130*4882a593SmuzhiyunRequired properties: 131*4882a593Smuzhiyun-------------------- 132*4882a593Smuzhiyun- status: Defines the operation status of the PHY. Valid values are: 133*4882a593Smuzhiyun - "disabled": the PHY is disabled 134*4882a593Smuzhiyun - "okay": the PHY is enabled 135*4882a593Smuzhiyun- #phy-cells: Should be 0. Since each lane represents a single PHY, there is 136*4882a593Smuzhiyun no need for an additional specifier. 137*4882a593Smuzhiyun- nvidia,function: The output function of the PHY. See below for a list of 138*4882a593Smuzhiyun valid functions per SoC generation. 139*4882a593Smuzhiyun 140*4882a593SmuzhiyunFor Tegra124 and Tegra132, the list of valid PHY nodes is given below: 141*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2 142*4882a593Smuzhiyun - functions: "snps", "xusb", "uart" 143*4882a593Smuzhiyun- ulpi: ulpi-0 144*4882a593Smuzhiyun - functions: "snps", "xusb" 145*4882a593Smuzhiyun- hsic: hsic-0, hsic-1 146*4882a593Smuzhiyun - functions: "snps", "xusb" 147*4882a593Smuzhiyun- pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4 148*4882a593Smuzhiyun - functions: "pcie", "usb3-ss" 149*4882a593Smuzhiyun- sata: sata-0 150*4882a593Smuzhiyun - functions: "usb3-ss", "sata" 151*4882a593Smuzhiyun 152*4882a593SmuzhiyunFor Tegra210, the list of valid PHY nodes is given below: 153*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2, usb2-3 154*4882a593Smuzhiyun - functions: "snps", "xusb", "uart" 155*4882a593Smuzhiyun- hsic: hsic-0, hsic-1 156*4882a593Smuzhiyun - functions: "snps", "xusb" 157*4882a593Smuzhiyun- pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, pcie-5, pcie-6 158*4882a593Smuzhiyun - functions: "pcie-x1", "usb3-ss", "pcie-x4" 159*4882a593Smuzhiyun- sata: sata-0 160*4882a593Smuzhiyun - functions: "usb3-ss", "sata" 161*4882a593Smuzhiyun 162*4882a593SmuzhiyunFor Tegra194, the list of valid PHY nodes is given below: 163*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2, usb2-3 164*4882a593Smuzhiyun - functions: "xusb" 165*4882a593Smuzhiyun- usb3: usb3-0, usb3-1, usb3-2, usb3-3 166*4882a593Smuzhiyun - functions: "xusb" 167*4882a593Smuzhiyun 168*4882a593SmuzhiyunPort nodes: 169*4882a593Smuzhiyun=========== 170*4882a593Smuzhiyun 171*4882a593SmuzhiyunA required child node named "ports" contains a list of all the ports exposed 172*4882a593Smuzhiyunby the XUSB pad controller. Per-port configuration is only required for USB. 173*4882a593Smuzhiyun 174*4882a593SmuzhiyunUSB2 ports: 175*4882a593Smuzhiyun----------- 176*4882a593Smuzhiyun 177*4882a593SmuzhiyunRequired properties: 178*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are: 179*4882a593Smuzhiyun - "disabled": the port is disabled 180*4882a593Smuzhiyun - "okay": the port is enabled 181*4882a593Smuzhiyun- mode: A string that determines the mode in which to run the port. Valid 182*4882a593Smuzhiyun values are: 183*4882a593Smuzhiyun - "host": for USB host mode 184*4882a593Smuzhiyun - "device": for USB device mode 185*4882a593Smuzhiyun - "otg": for USB OTG mode 186*4882a593Smuzhiyun 187*4882a593SmuzhiyunRequired properties for OTG/Peripheral capable USB2 ports: 188*4882a593Smuzhiyun- usb-role-switch: Boolean property to indicate that the port support OTG or 189*4882a593Smuzhiyun peripheral mode. If present, the port supports switching between USB host 190*4882a593Smuzhiyun and peripheral roles. Connector should be added as subnode. 191*4882a593Smuzhiyun See usb/usb-conn-gpio.txt. 192*4882a593Smuzhiyun 193*4882a593SmuzhiyunOptional properties: 194*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port 195*4882a593Smuzhiyun is internal. In the absence of this property the port is considered to be 196*4882a593Smuzhiyun external. 197*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage. 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunULPI ports: 200*4882a593Smuzhiyun----------- 201*4882a593Smuzhiyun 202*4882a593SmuzhiyunOptional properties: 203*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are: 204*4882a593Smuzhiyun - "disabled": the port is disabled 205*4882a593Smuzhiyun - "okay": the port is enabled 206*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port 207*4882a593Smuzhiyun is internal. In the absence of this property the port is considered to be 208*4882a593Smuzhiyun external. 209*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage. 210*4882a593Smuzhiyun 211*4882a593SmuzhiyunHSIC ports: 212*4882a593Smuzhiyun----------- 213*4882a593Smuzhiyun 214*4882a593SmuzhiyunRequired properties: 215*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are: 216*4882a593Smuzhiyun - "disabled": the port is disabled 217*4882a593Smuzhiyun - "okay": the port is enabled 218*4882a593Smuzhiyun 219*4882a593SmuzhiyunOptional properties: 220*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage. 221*4882a593Smuzhiyun 222*4882a593SmuzhiyunSuper-speed USB ports: 223*4882a593Smuzhiyun---------------------- 224*4882a593Smuzhiyun 225*4882a593SmuzhiyunRequired properties: 226*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are: 227*4882a593Smuzhiyun - "disabled": the port is disabled 228*4882a593Smuzhiyun - "okay": the port is enabled 229*4882a593Smuzhiyun- nvidia,usb2-companion: A single cell that specifies the physical port number 230*4882a593Smuzhiyun to map this super-speed USB port to. The range of valid port numbers varies 231*4882a593Smuzhiyun with the SoC generation: 232*4882a593Smuzhiyun - 0-2: for Tegra124 and Tegra132 233*4882a593Smuzhiyun - 0-3: for Tegra210 234*4882a593Smuzhiyun 235*4882a593SmuzhiyunOptional properties: 236*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port 237*4882a593Smuzhiyun is internal. In the absence of this property the port is considered to be 238*4882a593Smuzhiyun external. 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun- maximum-speed: Only for Tegra194. A string property that specifies maximum 241*4882a593Smuzhiyun supported speed of a usb3 port. Valid values are: 242*4882a593Smuzhiyun - "super-speed-plus": default, the usb3 port supports USB 3.1 Gen 2 speed. 243*4882a593Smuzhiyun - "super-speed": the usb3 port supports USB 3.1 Gen 1 speed only. 244*4882a593Smuzhiyun 245*4882a593SmuzhiyunFor Tegra124 and Tegra132, the XUSB pad controller exposes the following 246*4882a593Smuzhiyunports: 247*4882a593Smuzhiyun- 3x USB2: usb2-0, usb2-1, usb2-2 248*4882a593Smuzhiyun- 1x ULPI: ulpi-0 249*4882a593Smuzhiyun- 2x HSIC: hsic-0, hsic-1 250*4882a593Smuzhiyun- 2x super-speed USB: usb3-0, usb3-1 251*4882a593Smuzhiyun 252*4882a593SmuzhiyunFor Tegra210, the XUSB pad controller exposes the following ports: 253*4882a593Smuzhiyun- 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3 254*4882a593Smuzhiyun- 2x HSIC: hsic-0, hsic-1 255*4882a593Smuzhiyun- 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3 256*4882a593Smuzhiyun 257*4882a593SmuzhiyunFor Tegra194, the XUSB pad controller exposes the following ports: 258*4882a593Smuzhiyun- 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3 259*4882a593Smuzhiyun- 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3 260*4882a593Smuzhiyun 261*4882a593SmuzhiyunExamples: 262*4882a593Smuzhiyun========= 263*4882a593Smuzhiyun 264*4882a593SmuzhiyunTegra124 and Tegra132: 265*4882a593Smuzhiyun---------------------- 266*4882a593Smuzhiyun 267*4882a593SmuzhiyunSoC include: 268*4882a593Smuzhiyun 269*4882a593Smuzhiyun padctl@7009f000 { 270*4882a593Smuzhiyun /* for Tegra124 */ 271*4882a593Smuzhiyun compatible = "nvidia,tegra124-xusb-padctl"; 272*4882a593Smuzhiyun /* for Tegra132 */ 273*4882a593Smuzhiyun compatible = "nvidia,tegra132-xusb-padctl", 274*4882a593Smuzhiyun "nvidia,tegra124-xusb-padctl"; 275*4882a593Smuzhiyun reg = <0x0 0x7009f000 0x0 0x1000>; 276*4882a593Smuzhiyun resets = <&tegra_car 142>; 277*4882a593Smuzhiyun reset-names = "padctl"; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun pads { 280*4882a593Smuzhiyun usb2 { 281*4882a593Smuzhiyun status = "disabled"; 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun lanes { 284*4882a593Smuzhiyun usb2-0 { 285*4882a593Smuzhiyun status = "disabled"; 286*4882a593Smuzhiyun #phy-cells = <0>; 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun usb2-1 { 290*4882a593Smuzhiyun status = "disabled"; 291*4882a593Smuzhiyun #phy-cells = <0>; 292*4882a593Smuzhiyun }; 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun usb2-2 { 295*4882a593Smuzhiyun status = "disabled"; 296*4882a593Smuzhiyun #phy-cells = <0>; 297*4882a593Smuzhiyun }; 298*4882a593Smuzhiyun }; 299*4882a593Smuzhiyun }; 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun ulpi { 302*4882a593Smuzhiyun status = "disabled"; 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun lanes { 305*4882a593Smuzhiyun ulpi-0 { 306*4882a593Smuzhiyun status = "disabled"; 307*4882a593Smuzhiyun #phy-cells = <0>; 308*4882a593Smuzhiyun }; 309*4882a593Smuzhiyun }; 310*4882a593Smuzhiyun }; 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun hsic { 313*4882a593Smuzhiyun status = "disabled"; 314*4882a593Smuzhiyun 315*4882a593Smuzhiyun lanes { 316*4882a593Smuzhiyun hsic-0 { 317*4882a593Smuzhiyun status = "disabled"; 318*4882a593Smuzhiyun #phy-cells = <0>; 319*4882a593Smuzhiyun }; 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun hsic-1 { 322*4882a593Smuzhiyun status = "disabled"; 323*4882a593Smuzhiyun #phy-cells = <0>; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun }; 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun pcie { 329*4882a593Smuzhiyun status = "disabled"; 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun lanes { 332*4882a593Smuzhiyun pcie-0 { 333*4882a593Smuzhiyun status = "disabled"; 334*4882a593Smuzhiyun #phy-cells = <0>; 335*4882a593Smuzhiyun }; 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun pcie-1 { 338*4882a593Smuzhiyun status = "disabled"; 339*4882a593Smuzhiyun #phy-cells = <0>; 340*4882a593Smuzhiyun }; 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun pcie-2 { 343*4882a593Smuzhiyun status = "disabled"; 344*4882a593Smuzhiyun #phy-cells = <0>; 345*4882a593Smuzhiyun }; 346*4882a593Smuzhiyun 347*4882a593Smuzhiyun pcie-3 { 348*4882a593Smuzhiyun status = "disabled"; 349*4882a593Smuzhiyun #phy-cells = <0>; 350*4882a593Smuzhiyun }; 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun pcie-4 { 353*4882a593Smuzhiyun status = "disabled"; 354*4882a593Smuzhiyun #phy-cells = <0>; 355*4882a593Smuzhiyun }; 356*4882a593Smuzhiyun }; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun 359*4882a593Smuzhiyun sata { 360*4882a593Smuzhiyun status = "disabled"; 361*4882a593Smuzhiyun 362*4882a593Smuzhiyun lanes { 363*4882a593Smuzhiyun sata-0 { 364*4882a593Smuzhiyun status = "disabled"; 365*4882a593Smuzhiyun #phy-cells = <0>; 366*4882a593Smuzhiyun }; 367*4882a593Smuzhiyun }; 368*4882a593Smuzhiyun }; 369*4882a593Smuzhiyun }; 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun ports { 372*4882a593Smuzhiyun usb2-0 { 373*4882a593Smuzhiyun status = "disabled"; 374*4882a593Smuzhiyun }; 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun usb2-1 { 377*4882a593Smuzhiyun status = "disabled"; 378*4882a593Smuzhiyun }; 379*4882a593Smuzhiyun 380*4882a593Smuzhiyun usb2-2 { 381*4882a593Smuzhiyun status = "disabled"; 382*4882a593Smuzhiyun }; 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun ulpi-0 { 385*4882a593Smuzhiyun status = "disabled"; 386*4882a593Smuzhiyun }; 387*4882a593Smuzhiyun 388*4882a593Smuzhiyun hsic-0 { 389*4882a593Smuzhiyun status = "disabled"; 390*4882a593Smuzhiyun }; 391*4882a593Smuzhiyun 392*4882a593Smuzhiyun hsic-1 { 393*4882a593Smuzhiyun status = "disabled"; 394*4882a593Smuzhiyun }; 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun usb3-0 { 397*4882a593Smuzhiyun status = "disabled"; 398*4882a593Smuzhiyun }; 399*4882a593Smuzhiyun 400*4882a593Smuzhiyun usb3-1 { 401*4882a593Smuzhiyun status = "disabled"; 402*4882a593Smuzhiyun }; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun }; 405*4882a593Smuzhiyun 406*4882a593SmuzhiyunBoard file: 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun padctl@7009f000 { 409*4882a593Smuzhiyun status = "okay"; 410*4882a593Smuzhiyun 411*4882a593Smuzhiyun pads { 412*4882a593Smuzhiyun usb2 { 413*4882a593Smuzhiyun status = "okay"; 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun lanes { 416*4882a593Smuzhiyun usb2-0 { 417*4882a593Smuzhiyun nvidia,function = "xusb"; 418*4882a593Smuzhiyun status = "okay"; 419*4882a593Smuzhiyun }; 420*4882a593Smuzhiyun 421*4882a593Smuzhiyun usb2-1 { 422*4882a593Smuzhiyun nvidia,function = "xusb"; 423*4882a593Smuzhiyun status = "okay"; 424*4882a593Smuzhiyun }; 425*4882a593Smuzhiyun 426*4882a593Smuzhiyun usb2-2 { 427*4882a593Smuzhiyun nvidia,function = "xusb"; 428*4882a593Smuzhiyun status = "okay"; 429*4882a593Smuzhiyun }; 430*4882a593Smuzhiyun }; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun pcie { 434*4882a593Smuzhiyun status = "okay"; 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun lanes { 437*4882a593Smuzhiyun pcie-0 { 438*4882a593Smuzhiyun nvidia,function = "usb3-ss"; 439*4882a593Smuzhiyun status = "okay"; 440*4882a593Smuzhiyun }; 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun pcie-2 { 443*4882a593Smuzhiyun nvidia,function = "pcie"; 444*4882a593Smuzhiyun status = "okay"; 445*4882a593Smuzhiyun }; 446*4882a593Smuzhiyun 447*4882a593Smuzhiyun pcie-4 { 448*4882a593Smuzhiyun nvidia,function = "pcie"; 449*4882a593Smuzhiyun status = "okay"; 450*4882a593Smuzhiyun }; 451*4882a593Smuzhiyun }; 452*4882a593Smuzhiyun }; 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun sata { 455*4882a593Smuzhiyun status = "okay"; 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun lanes { 458*4882a593Smuzhiyun sata-0 { 459*4882a593Smuzhiyun nvidia,function = "sata"; 460*4882a593Smuzhiyun status = "okay"; 461*4882a593Smuzhiyun }; 462*4882a593Smuzhiyun }; 463*4882a593Smuzhiyun }; 464*4882a593Smuzhiyun }; 465*4882a593Smuzhiyun 466*4882a593Smuzhiyun ports { 467*4882a593Smuzhiyun /* Micro A/B */ 468*4882a593Smuzhiyun usb2-0 { 469*4882a593Smuzhiyun status = "okay"; 470*4882a593Smuzhiyun mode = "otg"; 471*4882a593Smuzhiyun }; 472*4882a593Smuzhiyun 473*4882a593Smuzhiyun /* Mini PCIe */ 474*4882a593Smuzhiyun usb2-1 { 475*4882a593Smuzhiyun status = "okay"; 476*4882a593Smuzhiyun mode = "host"; 477*4882a593Smuzhiyun }; 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun /* USB3 */ 480*4882a593Smuzhiyun usb2-2 { 481*4882a593Smuzhiyun status = "okay"; 482*4882a593Smuzhiyun mode = "host"; 483*4882a593Smuzhiyun 484*4882a593Smuzhiyun vbus-supply = <&vdd_usb3_vbus>; 485*4882a593Smuzhiyun }; 486*4882a593Smuzhiyun 487*4882a593Smuzhiyun usb3-0 { 488*4882a593Smuzhiyun nvidia,port = <2>; 489*4882a593Smuzhiyun status = "okay"; 490*4882a593Smuzhiyun }; 491*4882a593Smuzhiyun }; 492*4882a593Smuzhiyun }; 493*4882a593Smuzhiyun 494*4882a593SmuzhiyunTegra210: 495*4882a593Smuzhiyun--------- 496*4882a593Smuzhiyun 497*4882a593SmuzhiyunSoC include: 498*4882a593Smuzhiyun 499*4882a593Smuzhiyun padctl@7009f000 { 500*4882a593Smuzhiyun compatible = "nvidia,tegra210-xusb-padctl"; 501*4882a593Smuzhiyun reg = <0x0 0x7009f000 0x0 0x1000>; 502*4882a593Smuzhiyun resets = <&tegra_car 142>; 503*4882a593Smuzhiyun reset-names = "padctl"; 504*4882a593Smuzhiyun 505*4882a593Smuzhiyun status = "disabled"; 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun pads { 508*4882a593Smuzhiyun usb2 { 509*4882a593Smuzhiyun clocks = <&tegra_car TEGRA210_CLK_USB2_TRK>; 510*4882a593Smuzhiyun clock-names = "trk"; 511*4882a593Smuzhiyun status = "disabled"; 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun lanes { 514*4882a593Smuzhiyun usb2-0 { 515*4882a593Smuzhiyun status = "disabled"; 516*4882a593Smuzhiyun #phy-cells = <0>; 517*4882a593Smuzhiyun }; 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun usb2-1 { 520*4882a593Smuzhiyun status = "disabled"; 521*4882a593Smuzhiyun #phy-cells = <0>; 522*4882a593Smuzhiyun }; 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun usb2-2 { 525*4882a593Smuzhiyun status = "disabled"; 526*4882a593Smuzhiyun #phy-cells = <0>; 527*4882a593Smuzhiyun }; 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun usb2-3 { 530*4882a593Smuzhiyun status = "disabled"; 531*4882a593Smuzhiyun #phy-cells = <0>; 532*4882a593Smuzhiyun }; 533*4882a593Smuzhiyun }; 534*4882a593Smuzhiyun }; 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun hsic { 537*4882a593Smuzhiyun clocks = <&tegra_car TEGRA210_CLK_HSIC_TRK>; 538*4882a593Smuzhiyun clock-names = "trk"; 539*4882a593Smuzhiyun status = "disabled"; 540*4882a593Smuzhiyun 541*4882a593Smuzhiyun lanes { 542*4882a593Smuzhiyun hsic-0 { 543*4882a593Smuzhiyun status = "disabled"; 544*4882a593Smuzhiyun #phy-cells = <0>; 545*4882a593Smuzhiyun }; 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun hsic-1 { 548*4882a593Smuzhiyun status = "disabled"; 549*4882a593Smuzhiyun #phy-cells = <0>; 550*4882a593Smuzhiyun }; 551*4882a593Smuzhiyun }; 552*4882a593Smuzhiyun }; 553*4882a593Smuzhiyun 554*4882a593Smuzhiyun pcie { 555*4882a593Smuzhiyun clocks = <&tegra_car TEGRA210_CLK_PLL_E>; 556*4882a593Smuzhiyun clock-names = "pll"; 557*4882a593Smuzhiyun resets = <&tegra_car 205>; 558*4882a593Smuzhiyun reset-names = "phy"; 559*4882a593Smuzhiyun status = "disabled"; 560*4882a593Smuzhiyun 561*4882a593Smuzhiyun lanes { 562*4882a593Smuzhiyun pcie-0 { 563*4882a593Smuzhiyun status = "disabled"; 564*4882a593Smuzhiyun #phy-cells = <0>; 565*4882a593Smuzhiyun }; 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun pcie-1 { 568*4882a593Smuzhiyun status = "disabled"; 569*4882a593Smuzhiyun #phy-cells = <0>; 570*4882a593Smuzhiyun }; 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun pcie-2 { 573*4882a593Smuzhiyun status = "disabled"; 574*4882a593Smuzhiyun #phy-cells = <0>; 575*4882a593Smuzhiyun }; 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun pcie-3 { 578*4882a593Smuzhiyun status = "disabled"; 579*4882a593Smuzhiyun #phy-cells = <0>; 580*4882a593Smuzhiyun }; 581*4882a593Smuzhiyun 582*4882a593Smuzhiyun pcie-4 { 583*4882a593Smuzhiyun status = "disabled"; 584*4882a593Smuzhiyun #phy-cells = <0>; 585*4882a593Smuzhiyun }; 586*4882a593Smuzhiyun 587*4882a593Smuzhiyun pcie-5 { 588*4882a593Smuzhiyun status = "disabled"; 589*4882a593Smuzhiyun #phy-cells = <0>; 590*4882a593Smuzhiyun }; 591*4882a593Smuzhiyun 592*4882a593Smuzhiyun pcie-6 { 593*4882a593Smuzhiyun status = "disabled"; 594*4882a593Smuzhiyun #phy-cells = <0>; 595*4882a593Smuzhiyun }; 596*4882a593Smuzhiyun }; 597*4882a593Smuzhiyun }; 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun sata { 600*4882a593Smuzhiyun clocks = <&tegra_car TEGRA210_CLK_PLL_E>; 601*4882a593Smuzhiyun clock-names = "pll"; 602*4882a593Smuzhiyun resets = <&tegra_car 204>; 603*4882a593Smuzhiyun reset-names = "phy"; 604*4882a593Smuzhiyun status = "disabled"; 605*4882a593Smuzhiyun 606*4882a593Smuzhiyun lanes { 607*4882a593Smuzhiyun sata-0 { 608*4882a593Smuzhiyun status = "disabled"; 609*4882a593Smuzhiyun #phy-cells = <0>; 610*4882a593Smuzhiyun }; 611*4882a593Smuzhiyun }; 612*4882a593Smuzhiyun }; 613*4882a593Smuzhiyun }; 614*4882a593Smuzhiyun 615*4882a593Smuzhiyun ports { 616*4882a593Smuzhiyun usb2-0 { 617*4882a593Smuzhiyun status = "disabled"; 618*4882a593Smuzhiyun }; 619*4882a593Smuzhiyun 620*4882a593Smuzhiyun usb2-1 { 621*4882a593Smuzhiyun status = "disabled"; 622*4882a593Smuzhiyun }; 623*4882a593Smuzhiyun 624*4882a593Smuzhiyun usb2-2 { 625*4882a593Smuzhiyun status = "disabled"; 626*4882a593Smuzhiyun }; 627*4882a593Smuzhiyun 628*4882a593Smuzhiyun usb2-3 { 629*4882a593Smuzhiyun status = "disabled"; 630*4882a593Smuzhiyun }; 631*4882a593Smuzhiyun 632*4882a593Smuzhiyun hsic-0 { 633*4882a593Smuzhiyun status = "disabled"; 634*4882a593Smuzhiyun }; 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun hsic-1 { 637*4882a593Smuzhiyun status = "disabled"; 638*4882a593Smuzhiyun }; 639*4882a593Smuzhiyun 640*4882a593Smuzhiyun usb3-0 { 641*4882a593Smuzhiyun status = "disabled"; 642*4882a593Smuzhiyun }; 643*4882a593Smuzhiyun 644*4882a593Smuzhiyun usb3-1 { 645*4882a593Smuzhiyun status = "disabled"; 646*4882a593Smuzhiyun }; 647*4882a593Smuzhiyun 648*4882a593Smuzhiyun usb3-2 { 649*4882a593Smuzhiyun status = "disabled"; 650*4882a593Smuzhiyun }; 651*4882a593Smuzhiyun 652*4882a593Smuzhiyun usb3-3 { 653*4882a593Smuzhiyun status = "disabled"; 654*4882a593Smuzhiyun }; 655*4882a593Smuzhiyun }; 656*4882a593Smuzhiyun }; 657*4882a593Smuzhiyun 658*4882a593SmuzhiyunBoard file: 659*4882a593Smuzhiyun 660*4882a593Smuzhiyun padctl@7009f000 { 661*4882a593Smuzhiyun status = "okay"; 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun pads { 664*4882a593Smuzhiyun usb2 { 665*4882a593Smuzhiyun status = "okay"; 666*4882a593Smuzhiyun 667*4882a593Smuzhiyun lanes { 668*4882a593Smuzhiyun usb2-0 { 669*4882a593Smuzhiyun nvidia,function = "xusb"; 670*4882a593Smuzhiyun status = "okay"; 671*4882a593Smuzhiyun }; 672*4882a593Smuzhiyun 673*4882a593Smuzhiyun usb2-1 { 674*4882a593Smuzhiyun nvidia,function = "xusb"; 675*4882a593Smuzhiyun status = "okay"; 676*4882a593Smuzhiyun }; 677*4882a593Smuzhiyun 678*4882a593Smuzhiyun usb2-2 { 679*4882a593Smuzhiyun nvidia,function = "xusb"; 680*4882a593Smuzhiyun status = "okay"; 681*4882a593Smuzhiyun }; 682*4882a593Smuzhiyun 683*4882a593Smuzhiyun usb2-3 { 684*4882a593Smuzhiyun nvidia,function = "xusb"; 685*4882a593Smuzhiyun status = "okay"; 686*4882a593Smuzhiyun }; 687*4882a593Smuzhiyun }; 688*4882a593Smuzhiyun }; 689*4882a593Smuzhiyun 690*4882a593Smuzhiyun pcie { 691*4882a593Smuzhiyun status = "okay"; 692*4882a593Smuzhiyun 693*4882a593Smuzhiyun lanes { 694*4882a593Smuzhiyun pcie-0 { 695*4882a593Smuzhiyun nvidia,function = "pcie-x1"; 696*4882a593Smuzhiyun status = "okay"; 697*4882a593Smuzhiyun }; 698*4882a593Smuzhiyun 699*4882a593Smuzhiyun pcie-1 { 700*4882a593Smuzhiyun nvidia,function = "pcie-x4"; 701*4882a593Smuzhiyun status = "okay"; 702*4882a593Smuzhiyun }; 703*4882a593Smuzhiyun 704*4882a593Smuzhiyun pcie-2 { 705*4882a593Smuzhiyun nvidia,function = "pcie-x4"; 706*4882a593Smuzhiyun status = "okay"; 707*4882a593Smuzhiyun }; 708*4882a593Smuzhiyun 709*4882a593Smuzhiyun pcie-3 { 710*4882a593Smuzhiyun nvidia,function = "pcie-x4"; 711*4882a593Smuzhiyun status = "okay"; 712*4882a593Smuzhiyun }; 713*4882a593Smuzhiyun 714*4882a593Smuzhiyun pcie-4 { 715*4882a593Smuzhiyun nvidia,function = "pcie-x4"; 716*4882a593Smuzhiyun status = "okay"; 717*4882a593Smuzhiyun }; 718*4882a593Smuzhiyun 719*4882a593Smuzhiyun pcie-5 { 720*4882a593Smuzhiyun nvidia,function = "usb3-ss"; 721*4882a593Smuzhiyun status = "okay"; 722*4882a593Smuzhiyun }; 723*4882a593Smuzhiyun 724*4882a593Smuzhiyun pcie-6 { 725*4882a593Smuzhiyun nvidia,function = "usb3-ss"; 726*4882a593Smuzhiyun status = "okay"; 727*4882a593Smuzhiyun }; 728*4882a593Smuzhiyun }; 729*4882a593Smuzhiyun }; 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun sata { 732*4882a593Smuzhiyun status = "okay"; 733*4882a593Smuzhiyun 734*4882a593Smuzhiyun lanes { 735*4882a593Smuzhiyun sata-0 { 736*4882a593Smuzhiyun nvidia,function = "sata"; 737*4882a593Smuzhiyun status = "okay"; 738*4882a593Smuzhiyun }; 739*4882a593Smuzhiyun }; 740*4882a593Smuzhiyun }; 741*4882a593Smuzhiyun }; 742*4882a593Smuzhiyun 743*4882a593Smuzhiyun ports { 744*4882a593Smuzhiyun usb2-0 { 745*4882a593Smuzhiyun status = "okay"; 746*4882a593Smuzhiyun mode = "otg"; 747*4882a593Smuzhiyun }; 748*4882a593Smuzhiyun 749*4882a593Smuzhiyun usb2-1 { 750*4882a593Smuzhiyun status = "okay"; 751*4882a593Smuzhiyun vbus-supply = <&vdd_5v0_rtl>; 752*4882a593Smuzhiyun mode = "host"; 753*4882a593Smuzhiyun }; 754*4882a593Smuzhiyun 755*4882a593Smuzhiyun usb2-2 { 756*4882a593Smuzhiyun status = "okay"; 757*4882a593Smuzhiyun vbus-supply = <&vdd_usb_vbus>; 758*4882a593Smuzhiyun mode = "host"; 759*4882a593Smuzhiyun }; 760*4882a593Smuzhiyun 761*4882a593Smuzhiyun usb2-3 { 762*4882a593Smuzhiyun status = "okay"; 763*4882a593Smuzhiyun mode = "host"; 764*4882a593Smuzhiyun }; 765*4882a593Smuzhiyun 766*4882a593Smuzhiyun usb3-0 { 767*4882a593Smuzhiyun status = "okay"; 768*4882a593Smuzhiyun nvidia,lanes = "pcie-6"; 769*4882a593Smuzhiyun nvidia,port = <1>; 770*4882a593Smuzhiyun }; 771*4882a593Smuzhiyun 772*4882a593Smuzhiyun usb3-1 { 773*4882a593Smuzhiyun status = "okay"; 774*4882a593Smuzhiyun nvidia,lanes = "pcie-5"; 775*4882a593Smuzhiyun nvidia,port = <2>; 776*4882a593Smuzhiyun }; 777*4882a593Smuzhiyun }; 778*4882a593Smuzhiyun }; 779