cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

nvidia,tegra124-xusb-padctl.txt (17053B)


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