1*c66ec88fSEmmanuel VadotNVIDIA Tegra PCIe controller 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotRequired properties: 4*c66ec88fSEmmanuel Vadot- compatible: Must be: 5*c66ec88fSEmmanuel Vadot - "nvidia,tegra20-pcie": for Tegra20 6*c66ec88fSEmmanuel Vadot - "nvidia,tegra30-pcie": for Tegra30 7*c66ec88fSEmmanuel Vadot - "nvidia,tegra124-pcie": for Tegra124 and Tegra132 8*c66ec88fSEmmanuel Vadot - "nvidia,tegra210-pcie": for Tegra210 9*c66ec88fSEmmanuel Vadot - "nvidia,tegra186-pcie": for Tegra186 10*c66ec88fSEmmanuel Vadot- power-domains: To ungate power partition by BPMP powergate driver. Must 11*c66ec88fSEmmanuel Vadot contain BPMP phandle and PCIe power partition ID. This is required only 12*c66ec88fSEmmanuel Vadot for Tegra186. 13*c66ec88fSEmmanuel Vadot- device_type: Must be "pci" 14*c66ec88fSEmmanuel Vadot- reg: A list of physical base address and length for each set of controller 15*c66ec88fSEmmanuel Vadot registers. Must contain an entry for each entry in the reg-names property. 16*c66ec88fSEmmanuel Vadot- reg-names: Must include the following entries: 17*c66ec88fSEmmanuel Vadot "pads": PADS registers 18*c66ec88fSEmmanuel Vadot "afi": AFI registers 19*c66ec88fSEmmanuel Vadot "cs": configuration space region 20*c66ec88fSEmmanuel Vadot- interrupts: A list of interrupt outputs of the controller. Must contain an 21*c66ec88fSEmmanuel Vadot entry for each entry in the interrupt-names property. 22*c66ec88fSEmmanuel Vadot- interrupt-names: Must include the following entries: 23*c66ec88fSEmmanuel Vadot "intr": The Tegra interrupt that is asserted for controller interrupts 24*c66ec88fSEmmanuel Vadot "msi": The Tegra interrupt that is asserted when an MSI is received 25*c66ec88fSEmmanuel Vadot- bus-range: Range of bus numbers associated with this controller 26*c66ec88fSEmmanuel Vadot- #address-cells: Address representation for root ports (must be 3) 27*c66ec88fSEmmanuel Vadot - cell 0 specifies the bus and device numbers of the root port: 28*c66ec88fSEmmanuel Vadot [23:16]: bus number 29*c66ec88fSEmmanuel Vadot [15:11]: device number 30*c66ec88fSEmmanuel Vadot - cell 1 denotes the upper 32 address bits and should be 0 31*c66ec88fSEmmanuel Vadot - cell 2 contains the lower 32 address bits and is used to translate to the 32*c66ec88fSEmmanuel Vadot CPU address space 33*c66ec88fSEmmanuel Vadot- #size-cells: Size representation for root ports (must be 2) 34*c66ec88fSEmmanuel Vadot- ranges: Describes the translation of addresses for root ports and standard 35*c66ec88fSEmmanuel Vadot PCI regions. The entries must be 6 cells each, where the first three cells 36*c66ec88fSEmmanuel Vadot correspond to the address as described for the #address-cells property 37*c66ec88fSEmmanuel Vadot above, the fourth cell is the physical CPU address to translate to and the 38*c66ec88fSEmmanuel Vadot fifth and six cells are as described for the #size-cells property above. 39*c66ec88fSEmmanuel Vadot - The first two entries are expected to translate the addresses for the root 40*c66ec88fSEmmanuel Vadot port registers, which are referenced by the assigned-addresses property of 41*c66ec88fSEmmanuel Vadot the root port nodes (see below). 42*c66ec88fSEmmanuel Vadot - The remaining entries setup the mapping for the standard I/O, memory and 43*c66ec88fSEmmanuel Vadot prefetchable PCI regions. The first cell determines the type of region 44*c66ec88fSEmmanuel Vadot that is setup: 45*c66ec88fSEmmanuel Vadot - 0x81000000: I/O memory region 46*c66ec88fSEmmanuel Vadot - 0x82000000: non-prefetchable memory region 47*c66ec88fSEmmanuel Vadot - 0xc2000000: prefetchable memory region 48*c66ec88fSEmmanuel Vadot Please refer to the standard PCI bus binding document for a more detailed 49*c66ec88fSEmmanuel Vadot explanation. 50*c66ec88fSEmmanuel Vadot- #interrupt-cells: Size representation for interrupts (must be 1) 51*c66ec88fSEmmanuel Vadot- interrupt-map-mask and interrupt-map: Standard PCI IRQ mapping properties 52*c66ec88fSEmmanuel Vadot Please refer to the standard PCI bus binding document for a more detailed 53*c66ec88fSEmmanuel Vadot explanation. 54*c66ec88fSEmmanuel Vadot- clocks: Must contain an entry for each entry in clock-names. 55*c66ec88fSEmmanuel Vadot See ../clocks/clock-bindings.txt for details. 56*c66ec88fSEmmanuel Vadot- clock-names: Must include the following entries: 57*c66ec88fSEmmanuel Vadot - pex 58*c66ec88fSEmmanuel Vadot - afi 59*c66ec88fSEmmanuel Vadot - pll_e 60*c66ec88fSEmmanuel Vadot - cml (not required for Tegra20) 61*c66ec88fSEmmanuel Vadot- resets: Must contain an entry for each entry in reset-names. 62*c66ec88fSEmmanuel Vadot See ../reset/reset.txt for details. 63*c66ec88fSEmmanuel Vadot- reset-names: Must include the following entries: 64*c66ec88fSEmmanuel Vadot - pex 65*c66ec88fSEmmanuel Vadot - afi 66*c66ec88fSEmmanuel Vadot - pcie_x 67*c66ec88fSEmmanuel Vadot 68*c66ec88fSEmmanuel VadotOptional properties: 69*c66ec88fSEmmanuel Vadot- pinctrl-names: A list of pinctrl state names. Must contain the following 70*c66ec88fSEmmanuel Vadot entries: 71*c66ec88fSEmmanuel Vadot - "default": active state, puts PCIe I/O out of deep power down state 72*c66ec88fSEmmanuel Vadot - "idle": puts PCIe I/O into deep power down state 73*c66ec88fSEmmanuel Vadot- pinctrl-0: phandle for the default/active state of pin configurations. 74*c66ec88fSEmmanuel Vadot- pinctrl-1: phandle for the idle state of pin configurations. 75*c66ec88fSEmmanuel Vadot 76*c66ec88fSEmmanuel VadotRequired properties on Tegra124 and later (deprecated): 77*c66ec88fSEmmanuel Vadot- phys: Must contain an entry for each entry in phy-names. 78*c66ec88fSEmmanuel Vadot- phy-names: Must include the following entries: 79*c66ec88fSEmmanuel Vadot - pcie 80*c66ec88fSEmmanuel Vadot 81*c66ec88fSEmmanuel VadotThese properties are deprecated in favour of per-lane PHYs define in each of 82*c66ec88fSEmmanuel Vadotthe root ports (see below). 83*c66ec88fSEmmanuel Vadot 84*c66ec88fSEmmanuel VadotPower supplies for Tegra20: 85*c66ec88fSEmmanuel Vadot- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 86*c66ec88fSEmmanuel Vadot- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 87*c66ec88fSEmmanuel Vadot- avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 88*c66ec88fSEmmanuel Vadot supply 1.05 V. 89*c66ec88fSEmmanuel Vadot- avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must 90*c66ec88fSEmmanuel Vadot supply 1.05 V. 91*c66ec88fSEmmanuel Vadot- vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V. 92*c66ec88fSEmmanuel Vadot 93*c66ec88fSEmmanuel VadotPower supplies for Tegra30: 94*c66ec88fSEmmanuel Vadot- Required: 95*c66ec88fSEmmanuel Vadot - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 96*c66ec88fSEmmanuel Vadot supply 1.05 V. 97*c66ec88fSEmmanuel Vadot - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must 98*c66ec88fSEmmanuel Vadot supply 1.05 V. 99*c66ec88fSEmmanuel Vadot - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 100*c66ec88fSEmmanuel Vadot supply 1.8 V. 101*c66ec88fSEmmanuel Vadot - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 102*c66ec88fSEmmanuel Vadot Must supply 3.3 V. 103*c66ec88fSEmmanuel Vadot- Optional: 104*c66ec88fSEmmanuel Vadot - If lanes 0 to 3 are used: 105*c66ec88fSEmmanuel Vadot - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 106*c66ec88fSEmmanuel Vadot - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 107*c66ec88fSEmmanuel Vadot - If lanes 4 or 5 are used: 108*c66ec88fSEmmanuel Vadot - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 109*c66ec88fSEmmanuel Vadot - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 110*c66ec88fSEmmanuel Vadot 111*c66ec88fSEmmanuel VadotPower supplies for Tegra124: 112*c66ec88fSEmmanuel Vadot- Required: 113*c66ec88fSEmmanuel Vadot - avddio-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 114*c66ec88fSEmmanuel Vadot - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 115*c66ec88fSEmmanuel Vadot - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 116*c66ec88fSEmmanuel Vadot Must supply 3.3 V. 117*c66ec88fSEmmanuel Vadot - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 118*c66ec88fSEmmanuel Vadot supply 2.8-3.3 V. 119*c66ec88fSEmmanuel Vadot 120*c66ec88fSEmmanuel VadotPower supplies for Tegra210: 121*c66ec88fSEmmanuel Vadot- Required: 122*c66ec88fSEmmanuel Vadot - hvddio-pex-supply: High-voltage supply for PCIe I/O and PCIe output 123*c66ec88fSEmmanuel Vadot clocks. Must supply 1.8 V. 124*c66ec88fSEmmanuel Vadot - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 125*c66ec88fSEmmanuel Vadot - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 126*c66ec88fSEmmanuel Vadot supply 1.8 V. 127*c66ec88fSEmmanuel Vadot 128*c66ec88fSEmmanuel VadotPower supplies for Tegra186: 129*c66ec88fSEmmanuel Vadot- Required: 130*c66ec88fSEmmanuel Vadot - dvdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 131*c66ec88fSEmmanuel Vadot - hvdd-pex-pll-supply: High-voltage supply for PLLE (shared with USB3). Must 132*c66ec88fSEmmanuel Vadot supply 1.8 V. 133*c66ec88fSEmmanuel Vadot - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 134*c66ec88fSEmmanuel Vadot Must supply 1.8 V. 135*c66ec88fSEmmanuel Vadot - vddio-pexctl-aud-supply: Power supply for PCIe side band signals. Must 136*c66ec88fSEmmanuel Vadot supply 1.8 V. 137*c66ec88fSEmmanuel Vadot 138*c66ec88fSEmmanuel VadotRoot ports are defined as subnodes of the PCIe controller node. 139*c66ec88fSEmmanuel Vadot 140*c66ec88fSEmmanuel VadotRequired properties: 141*c66ec88fSEmmanuel Vadot- device_type: Must be "pci" 142*c66ec88fSEmmanuel Vadot- assigned-addresses: Address and size of the port configuration registers 143*c66ec88fSEmmanuel Vadot- reg: PCI bus address of the root port 144*c66ec88fSEmmanuel Vadot- #address-cells: Must be 3 145*c66ec88fSEmmanuel Vadot- #size-cells: Must be 2 146*c66ec88fSEmmanuel Vadot- ranges: Sub-ranges distributed from the PCIe controller node. An empty 147*c66ec88fSEmmanuel Vadot property is sufficient. 148*c66ec88fSEmmanuel Vadot- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations 149*c66ec88fSEmmanuel Vadot are: 150*c66ec88fSEmmanuel Vadot - Root port 0 uses 4 lanes, root port 1 is unused. 151*c66ec88fSEmmanuel Vadot - Both root ports use 2 lanes. 152*c66ec88fSEmmanuel Vadot 153*c66ec88fSEmmanuel VadotRequired properties for Tegra124 and later: 154*c66ec88fSEmmanuel Vadot- phys: Must contain an phandle to a PHY for each entry in phy-names. 155*c66ec88fSEmmanuel Vadot- phy-names: Must include an entry for each active lane. Note that the number 156*c66ec88fSEmmanuel Vadot of entries does not have to (though usually will) be equal to the specified 157*c66ec88fSEmmanuel Vadot number of lanes in the nvidia,num-lanes property. Entries are of the form 158*c66ec88fSEmmanuel Vadot "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes. 159*c66ec88fSEmmanuel Vadot 160*c66ec88fSEmmanuel VadotExamples: 161*c66ec88fSEmmanuel Vadot========= 162*c66ec88fSEmmanuel Vadot 163*c66ec88fSEmmanuel VadotTegra20: 164*c66ec88fSEmmanuel Vadot-------- 165*c66ec88fSEmmanuel Vadot 166*c66ec88fSEmmanuel VadotSoC DTSI: 167*c66ec88fSEmmanuel Vadot 168*c66ec88fSEmmanuel Vadot pcie-controller@80003000 { 169*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra20-pcie"; 170*c66ec88fSEmmanuel Vadot device_type = "pci"; 171*c66ec88fSEmmanuel Vadot reg = <0x80003000 0x00000800 /* PADS registers */ 172*c66ec88fSEmmanuel Vadot 0x80003800 0x00000200 /* AFI registers */ 173*c66ec88fSEmmanuel Vadot 0x90000000 0x10000000>; /* configuration space */ 174*c66ec88fSEmmanuel Vadot reg-names = "pads", "afi", "cs"; 175*c66ec88fSEmmanuel Vadot interrupts = <0 98 0x04 /* controller interrupt */ 176*c66ec88fSEmmanuel Vadot 0 99 0x04>; /* MSI interrupt */ 177*c66ec88fSEmmanuel Vadot interrupt-names = "intr", "msi"; 178*c66ec88fSEmmanuel Vadot 179*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 180*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 0>; 181*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 182*c66ec88fSEmmanuel Vadot 183*c66ec88fSEmmanuel Vadot bus-range = <0x00 0xff>; 184*c66ec88fSEmmanuel Vadot #address-cells = <3>; 185*c66ec88fSEmmanuel Vadot #size-cells = <2>; 186*c66ec88fSEmmanuel Vadot 187*c66ec88fSEmmanuel Vadot ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */ 188*c66ec88fSEmmanuel Vadot 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */ 189*c66ec88fSEmmanuel Vadot 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */ 190*c66ec88fSEmmanuel Vadot 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ 191*c66ec88fSEmmanuel Vadot 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ 192*c66ec88fSEmmanuel Vadot 193*c66ec88fSEmmanuel Vadot clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; 194*c66ec88fSEmmanuel Vadot clock-names = "pex", "afi", "pll_e"; 195*c66ec88fSEmmanuel Vadot resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; 196*c66ec88fSEmmanuel Vadot reset-names = "pex", "afi", "pcie_x"; 197*c66ec88fSEmmanuel Vadot status = "disabled"; 198*c66ec88fSEmmanuel Vadot 199*c66ec88fSEmmanuel Vadot pci@1,0 { 200*c66ec88fSEmmanuel Vadot device_type = "pci"; 201*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>; 202*c66ec88fSEmmanuel Vadot reg = <0x000800 0 0 0 0>; 203*c66ec88fSEmmanuel Vadot status = "disabled"; 204*c66ec88fSEmmanuel Vadot 205*c66ec88fSEmmanuel Vadot #address-cells = <3>; 206*c66ec88fSEmmanuel Vadot #size-cells = <2>; 207*c66ec88fSEmmanuel Vadot 208*c66ec88fSEmmanuel Vadot ranges; 209*c66ec88fSEmmanuel Vadot 210*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 211*c66ec88fSEmmanuel Vadot }; 212*c66ec88fSEmmanuel Vadot 213*c66ec88fSEmmanuel Vadot pci@2,0 { 214*c66ec88fSEmmanuel Vadot device_type = "pci"; 215*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>; 216*c66ec88fSEmmanuel Vadot reg = <0x001000 0 0 0 0>; 217*c66ec88fSEmmanuel Vadot status = "disabled"; 218*c66ec88fSEmmanuel Vadot 219*c66ec88fSEmmanuel Vadot #address-cells = <3>; 220*c66ec88fSEmmanuel Vadot #size-cells = <2>; 221*c66ec88fSEmmanuel Vadot 222*c66ec88fSEmmanuel Vadot ranges; 223*c66ec88fSEmmanuel Vadot 224*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 225*c66ec88fSEmmanuel Vadot }; 226*c66ec88fSEmmanuel Vadot }; 227*c66ec88fSEmmanuel Vadot 228*c66ec88fSEmmanuel VadotBoard DTS: 229*c66ec88fSEmmanuel Vadot 230*c66ec88fSEmmanuel Vadot pcie-controller@80003000 { 231*c66ec88fSEmmanuel Vadot status = "okay"; 232*c66ec88fSEmmanuel Vadot 233*c66ec88fSEmmanuel Vadot vdd-supply = <&pci_vdd_reg>; 234*c66ec88fSEmmanuel Vadot pex-clk-supply = <&pci_clk_reg>; 235*c66ec88fSEmmanuel Vadot 236*c66ec88fSEmmanuel Vadot /* root port 00:01.0 */ 237*c66ec88fSEmmanuel Vadot pci@1,0 { 238*c66ec88fSEmmanuel Vadot status = "okay"; 239*c66ec88fSEmmanuel Vadot 240*c66ec88fSEmmanuel Vadot /* bridge 01:00.0 (optional) */ 241*c66ec88fSEmmanuel Vadot pci@0,0 { 242*c66ec88fSEmmanuel Vadot reg = <0x010000 0 0 0 0>; 243*c66ec88fSEmmanuel Vadot 244*c66ec88fSEmmanuel Vadot #address-cells = <3>; 245*c66ec88fSEmmanuel Vadot #size-cells = <2>; 246*c66ec88fSEmmanuel Vadot 247*c66ec88fSEmmanuel Vadot device_type = "pci"; 248*c66ec88fSEmmanuel Vadot 249*c66ec88fSEmmanuel Vadot /* endpoint 02:00.0 */ 250*c66ec88fSEmmanuel Vadot pci@0,0 { 251*c66ec88fSEmmanuel Vadot reg = <0x020000 0 0 0 0>; 252*c66ec88fSEmmanuel Vadot }; 253*c66ec88fSEmmanuel Vadot }; 254*c66ec88fSEmmanuel Vadot }; 255*c66ec88fSEmmanuel Vadot }; 256*c66ec88fSEmmanuel Vadot 257*c66ec88fSEmmanuel VadotNote that devices on the PCI bus are dynamically discovered using PCI's bus 258*c66ec88fSEmmanuel Vadotenumeration and therefore don't need corresponding device nodes in DT. However 259*c66ec88fSEmmanuel Vadotif a device on the PCI bus provides a non-probeable bus such as I2C or SPI, 260*c66ec88fSEmmanuel Vadotdevice nodes need to be added in order to allow the bus' children to be 261*c66ec88fSEmmanuel Vadotinstantiated at the proper location in the operating system's device tree (as 262*c66ec88fSEmmanuel Vadotillustrated by the optional nodes in the example above). 263*c66ec88fSEmmanuel Vadot 264*c66ec88fSEmmanuel VadotTegra30: 265*c66ec88fSEmmanuel Vadot-------- 266*c66ec88fSEmmanuel Vadot 267*c66ec88fSEmmanuel VadotSoC DTSI: 268*c66ec88fSEmmanuel Vadot 269*c66ec88fSEmmanuel Vadot pcie-controller@3000 { 270*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra30-pcie"; 271*c66ec88fSEmmanuel Vadot device_type = "pci"; 272*c66ec88fSEmmanuel Vadot reg = <0x00003000 0x00000800 /* PADS registers */ 273*c66ec88fSEmmanuel Vadot 0x00003800 0x00000200 /* AFI registers */ 274*c66ec88fSEmmanuel Vadot 0x10000000 0x10000000>; /* configuration space */ 275*c66ec88fSEmmanuel Vadot reg-names = "pads", "afi", "cs"; 276*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */ 277*c66ec88fSEmmanuel Vadot GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 278*c66ec88fSEmmanuel Vadot interrupt-names = "intr", "msi"; 279*c66ec88fSEmmanuel Vadot 280*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 281*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 0>; 282*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 283*c66ec88fSEmmanuel Vadot 284*c66ec88fSEmmanuel Vadot bus-range = <0x00 0xff>; 285*c66ec88fSEmmanuel Vadot #address-cells = <3>; 286*c66ec88fSEmmanuel Vadot #size-cells = <2>; 287*c66ec88fSEmmanuel Vadot 288*c66ec88fSEmmanuel Vadot ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */ 289*c66ec88fSEmmanuel Vadot 0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */ 290*c66ec88fSEmmanuel Vadot 0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */ 291*c66ec88fSEmmanuel Vadot 0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */ 292*c66ec88fSEmmanuel Vadot 0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */ 293*c66ec88fSEmmanuel Vadot 0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */ 294*c66ec88fSEmmanuel Vadot 295*c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA30_CLK_PCIE>, 296*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA30_CLK_AFI>, 297*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA30_CLK_PLL_E>, 298*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA30_CLK_CML0>; 299*c66ec88fSEmmanuel Vadot clock-names = "pex", "afi", "pll_e", "cml"; 300*c66ec88fSEmmanuel Vadot resets = <&tegra_car 70>, 301*c66ec88fSEmmanuel Vadot <&tegra_car 72>, 302*c66ec88fSEmmanuel Vadot <&tegra_car 74>; 303*c66ec88fSEmmanuel Vadot reset-names = "pex", "afi", "pcie_x"; 304*c66ec88fSEmmanuel Vadot status = "disabled"; 305*c66ec88fSEmmanuel Vadot 306*c66ec88fSEmmanuel Vadot pci@1,0 { 307*c66ec88fSEmmanuel Vadot device_type = "pci"; 308*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>; 309*c66ec88fSEmmanuel Vadot reg = <0x000800 0 0 0 0>; 310*c66ec88fSEmmanuel Vadot status = "disabled"; 311*c66ec88fSEmmanuel Vadot 312*c66ec88fSEmmanuel Vadot #address-cells = <3>; 313*c66ec88fSEmmanuel Vadot #size-cells = <2>; 314*c66ec88fSEmmanuel Vadot ranges; 315*c66ec88fSEmmanuel Vadot 316*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 317*c66ec88fSEmmanuel Vadot }; 318*c66ec88fSEmmanuel Vadot 319*c66ec88fSEmmanuel Vadot pci@2,0 { 320*c66ec88fSEmmanuel Vadot device_type = "pci"; 321*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>; 322*c66ec88fSEmmanuel Vadot reg = <0x001000 0 0 0 0>; 323*c66ec88fSEmmanuel Vadot status = "disabled"; 324*c66ec88fSEmmanuel Vadot 325*c66ec88fSEmmanuel Vadot #address-cells = <3>; 326*c66ec88fSEmmanuel Vadot #size-cells = <2>; 327*c66ec88fSEmmanuel Vadot ranges; 328*c66ec88fSEmmanuel Vadot 329*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 330*c66ec88fSEmmanuel Vadot }; 331*c66ec88fSEmmanuel Vadot 332*c66ec88fSEmmanuel Vadot pci@3,0 { 333*c66ec88fSEmmanuel Vadot device_type = "pci"; 334*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>; 335*c66ec88fSEmmanuel Vadot reg = <0x001800 0 0 0 0>; 336*c66ec88fSEmmanuel Vadot status = "disabled"; 337*c66ec88fSEmmanuel Vadot 338*c66ec88fSEmmanuel Vadot #address-cells = <3>; 339*c66ec88fSEmmanuel Vadot #size-cells = <2>; 340*c66ec88fSEmmanuel Vadot ranges; 341*c66ec88fSEmmanuel Vadot 342*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 343*c66ec88fSEmmanuel Vadot }; 344*c66ec88fSEmmanuel Vadot }; 345*c66ec88fSEmmanuel Vadot 346*c66ec88fSEmmanuel VadotBoard DTS: 347*c66ec88fSEmmanuel Vadot 348*c66ec88fSEmmanuel Vadot pcie-controller@3000 { 349*c66ec88fSEmmanuel Vadot status = "okay"; 350*c66ec88fSEmmanuel Vadot 351*c66ec88fSEmmanuel Vadot avdd-pexa-supply = <&ldo1_reg>; 352*c66ec88fSEmmanuel Vadot vdd-pexa-supply = <&ldo1_reg>; 353*c66ec88fSEmmanuel Vadot avdd-pexb-supply = <&ldo1_reg>; 354*c66ec88fSEmmanuel Vadot vdd-pexb-supply = <&ldo1_reg>; 355*c66ec88fSEmmanuel Vadot avdd-pex-pll-supply = <&ldo1_reg>; 356*c66ec88fSEmmanuel Vadot avdd-plle-supply = <&ldo1_reg>; 357*c66ec88fSEmmanuel Vadot vddio-pex-ctl-supply = <&sys_3v3_reg>; 358*c66ec88fSEmmanuel Vadot hvdd-pex-supply = <&sys_3v3_pexs_reg>; 359*c66ec88fSEmmanuel Vadot 360*c66ec88fSEmmanuel Vadot pci@1,0 { 361*c66ec88fSEmmanuel Vadot status = "okay"; 362*c66ec88fSEmmanuel Vadot }; 363*c66ec88fSEmmanuel Vadot 364*c66ec88fSEmmanuel Vadot pci@3,0 { 365*c66ec88fSEmmanuel Vadot status = "okay"; 366*c66ec88fSEmmanuel Vadot }; 367*c66ec88fSEmmanuel Vadot }; 368*c66ec88fSEmmanuel Vadot 369*c66ec88fSEmmanuel VadotTegra124: 370*c66ec88fSEmmanuel Vadot--------- 371*c66ec88fSEmmanuel Vadot 372*c66ec88fSEmmanuel VadotSoC DTSI: 373*c66ec88fSEmmanuel Vadot 374*c66ec88fSEmmanuel Vadot pcie-controller@1003000 { 375*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra124-pcie"; 376*c66ec88fSEmmanuel Vadot device_type = "pci"; 377*c66ec88fSEmmanuel Vadot reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 378*c66ec88fSEmmanuel Vadot 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 379*c66ec88fSEmmanuel Vadot 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 380*c66ec88fSEmmanuel Vadot reg-names = "pads", "afi", "cs"; 381*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 382*c66ec88fSEmmanuel Vadot <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 383*c66ec88fSEmmanuel Vadot interrupt-names = "intr", "msi"; 384*c66ec88fSEmmanuel Vadot 385*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 386*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 0>; 387*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 388*c66ec88fSEmmanuel Vadot 389*c66ec88fSEmmanuel Vadot bus-range = <0x00 0xff>; 390*c66ec88fSEmmanuel Vadot #address-cells = <3>; 391*c66ec88fSEmmanuel Vadot #size-cells = <2>; 392*c66ec88fSEmmanuel Vadot 393*c66ec88fSEmmanuel Vadot ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 394*c66ec88fSEmmanuel Vadot 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 395*c66ec88fSEmmanuel Vadot 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 396*c66ec88fSEmmanuel Vadot 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 397*c66ec88fSEmmanuel Vadot 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 398*c66ec88fSEmmanuel Vadot 399*c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA124_CLK_PCIE>, 400*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA124_CLK_AFI>, 401*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA124_CLK_PLL_E>, 402*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA124_CLK_CML0>; 403*c66ec88fSEmmanuel Vadot clock-names = "pex", "afi", "pll_e", "cml"; 404*c66ec88fSEmmanuel Vadot resets = <&tegra_car 70>, 405*c66ec88fSEmmanuel Vadot <&tegra_car 72>, 406*c66ec88fSEmmanuel Vadot <&tegra_car 74>; 407*c66ec88fSEmmanuel Vadot reset-names = "pex", "afi", "pcie_x"; 408*c66ec88fSEmmanuel Vadot status = "disabled"; 409*c66ec88fSEmmanuel Vadot 410*c66ec88fSEmmanuel Vadot pci@1,0 { 411*c66ec88fSEmmanuel Vadot device_type = "pci"; 412*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 413*c66ec88fSEmmanuel Vadot reg = <0x000800 0 0 0 0>; 414*c66ec88fSEmmanuel Vadot status = "disabled"; 415*c66ec88fSEmmanuel Vadot 416*c66ec88fSEmmanuel Vadot #address-cells = <3>; 417*c66ec88fSEmmanuel Vadot #size-cells = <2>; 418*c66ec88fSEmmanuel Vadot ranges; 419*c66ec88fSEmmanuel Vadot 420*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 421*c66ec88fSEmmanuel Vadot }; 422*c66ec88fSEmmanuel Vadot 423*c66ec88fSEmmanuel Vadot pci@2,0 { 424*c66ec88fSEmmanuel Vadot device_type = "pci"; 425*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 426*c66ec88fSEmmanuel Vadot reg = <0x001000 0 0 0 0>; 427*c66ec88fSEmmanuel Vadot status = "disabled"; 428*c66ec88fSEmmanuel Vadot 429*c66ec88fSEmmanuel Vadot #address-cells = <3>; 430*c66ec88fSEmmanuel Vadot #size-cells = <2>; 431*c66ec88fSEmmanuel Vadot ranges; 432*c66ec88fSEmmanuel Vadot 433*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <1>; 434*c66ec88fSEmmanuel Vadot }; 435*c66ec88fSEmmanuel Vadot }; 436*c66ec88fSEmmanuel Vadot 437*c66ec88fSEmmanuel VadotBoard DTS: 438*c66ec88fSEmmanuel Vadot 439*c66ec88fSEmmanuel Vadot pcie-controller@1003000 { 440*c66ec88fSEmmanuel Vadot status = "okay"; 441*c66ec88fSEmmanuel Vadot 442*c66ec88fSEmmanuel Vadot avddio-pex-supply = <&vdd_1v05_run>; 443*c66ec88fSEmmanuel Vadot dvddio-pex-supply = <&vdd_1v05_run>; 444*c66ec88fSEmmanuel Vadot avdd-pex-pll-supply = <&vdd_1v05_run>; 445*c66ec88fSEmmanuel Vadot hvdd-pex-supply = <&vdd_3v3_lp0>; 446*c66ec88fSEmmanuel Vadot hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>; 447*c66ec88fSEmmanuel Vadot vddio-pex-ctl-supply = <&vdd_3v3_lp0>; 448*c66ec88fSEmmanuel Vadot avdd-pll-erefe-supply = <&avdd_1v05_run>; 449*c66ec88fSEmmanuel Vadot 450*c66ec88fSEmmanuel Vadot /* Mini PCIe */ 451*c66ec88fSEmmanuel Vadot pci@1,0 { 452*c66ec88fSEmmanuel Vadot phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 453*c66ec88fSEmmanuel Vadot phy-names = "pcie-0"; 454*c66ec88fSEmmanuel Vadot status = "okay"; 455*c66ec88fSEmmanuel Vadot }; 456*c66ec88fSEmmanuel Vadot 457*c66ec88fSEmmanuel Vadot /* Gigabit Ethernet */ 458*c66ec88fSEmmanuel Vadot pci@2,0 { 459*c66ec88fSEmmanuel Vadot phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; 460*c66ec88fSEmmanuel Vadot phy-names = "pcie-0"; 461*c66ec88fSEmmanuel Vadot status = "okay"; 462*c66ec88fSEmmanuel Vadot }; 463*c66ec88fSEmmanuel Vadot }; 464*c66ec88fSEmmanuel Vadot 465*c66ec88fSEmmanuel VadotTegra210: 466*c66ec88fSEmmanuel Vadot--------- 467*c66ec88fSEmmanuel Vadot 468*c66ec88fSEmmanuel VadotSoC DTSI: 469*c66ec88fSEmmanuel Vadot 470*c66ec88fSEmmanuel Vadot pcie-controller@1003000 { 471*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-pcie"; 472*c66ec88fSEmmanuel Vadot device_type = "pci"; 473*c66ec88fSEmmanuel Vadot reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 474*c66ec88fSEmmanuel Vadot 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 475*c66ec88fSEmmanuel Vadot 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 476*c66ec88fSEmmanuel Vadot reg-names = "pads", "afi", "cs"; 477*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 478*c66ec88fSEmmanuel Vadot <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 479*c66ec88fSEmmanuel Vadot interrupt-names = "intr", "msi"; 480*c66ec88fSEmmanuel Vadot 481*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 482*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 0>; 483*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 484*c66ec88fSEmmanuel Vadot 485*c66ec88fSEmmanuel Vadot bus-range = <0x00 0xff>; 486*c66ec88fSEmmanuel Vadot #address-cells = <3>; 487*c66ec88fSEmmanuel Vadot #size-cells = <2>; 488*c66ec88fSEmmanuel Vadot 489*c66ec88fSEmmanuel Vadot ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 490*c66ec88fSEmmanuel Vadot 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 491*c66ec88fSEmmanuel Vadot 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 492*c66ec88fSEmmanuel Vadot 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 493*c66ec88fSEmmanuel Vadot 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 494*c66ec88fSEmmanuel Vadot 495*c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_PCIE>, 496*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA210_CLK_AFI>, 497*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA210_CLK_PLL_E>, 498*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA210_CLK_CML0>; 499*c66ec88fSEmmanuel Vadot clock-names = "pex", "afi", "pll_e", "cml"; 500*c66ec88fSEmmanuel Vadot resets = <&tegra_car 70>, 501*c66ec88fSEmmanuel Vadot <&tegra_car 72>, 502*c66ec88fSEmmanuel Vadot <&tegra_car 74>; 503*c66ec88fSEmmanuel Vadot reset-names = "pex", "afi", "pcie_x"; 504*c66ec88fSEmmanuel Vadot status = "disabled"; 505*c66ec88fSEmmanuel Vadot 506*c66ec88fSEmmanuel Vadot pci@1,0 { 507*c66ec88fSEmmanuel Vadot device_type = "pci"; 508*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 509*c66ec88fSEmmanuel Vadot reg = <0x000800 0 0 0 0>; 510*c66ec88fSEmmanuel Vadot status = "disabled"; 511*c66ec88fSEmmanuel Vadot 512*c66ec88fSEmmanuel Vadot #address-cells = <3>; 513*c66ec88fSEmmanuel Vadot #size-cells = <2>; 514*c66ec88fSEmmanuel Vadot ranges; 515*c66ec88fSEmmanuel Vadot 516*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <4>; 517*c66ec88fSEmmanuel Vadot }; 518*c66ec88fSEmmanuel Vadot 519*c66ec88fSEmmanuel Vadot pci@2,0 { 520*c66ec88fSEmmanuel Vadot device_type = "pci"; 521*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 522*c66ec88fSEmmanuel Vadot reg = <0x001000 0 0 0 0>; 523*c66ec88fSEmmanuel Vadot status = "disabled"; 524*c66ec88fSEmmanuel Vadot 525*c66ec88fSEmmanuel Vadot #address-cells = <3>; 526*c66ec88fSEmmanuel Vadot #size-cells = <2>; 527*c66ec88fSEmmanuel Vadot ranges; 528*c66ec88fSEmmanuel Vadot 529*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <1>; 530*c66ec88fSEmmanuel Vadot }; 531*c66ec88fSEmmanuel Vadot }; 532*c66ec88fSEmmanuel Vadot 533*c66ec88fSEmmanuel VadotBoard DTS: 534*c66ec88fSEmmanuel Vadot 535*c66ec88fSEmmanuel Vadot pcie-controller@1003000 { 536*c66ec88fSEmmanuel Vadot status = "okay"; 537*c66ec88fSEmmanuel Vadot 538*c66ec88fSEmmanuel Vadot avdd-pll-uerefe-supply = <&avdd_1v05_pll>; 539*c66ec88fSEmmanuel Vadot hvddio-pex-supply = <&vdd_1v8>; 540*c66ec88fSEmmanuel Vadot dvddio-pex-supply = <&vdd_pex_1v05>; 541*c66ec88fSEmmanuel Vadot dvdd-pex-pll-supply = <&vdd_pex_1v05>; 542*c66ec88fSEmmanuel Vadot hvdd-pex-pll-e-supply = <&vdd_1v8>; 543*c66ec88fSEmmanuel Vadot vddio-pex-ctl-supply = <&vdd_1v8>; 544*c66ec88fSEmmanuel Vadot 545*c66ec88fSEmmanuel Vadot pci@1,0 { 546*c66ec88fSEmmanuel Vadot phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>, 547*c66ec88fSEmmanuel Vadot <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>, 548*c66ec88fSEmmanuel Vadot <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, 549*c66ec88fSEmmanuel Vadot <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>; 550*c66ec88fSEmmanuel Vadot phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; 551*c66ec88fSEmmanuel Vadot status = "okay"; 552*c66ec88fSEmmanuel Vadot }; 553*c66ec88fSEmmanuel Vadot 554*c66ec88fSEmmanuel Vadot pci@2,0 { 555*c66ec88fSEmmanuel Vadot phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 556*c66ec88fSEmmanuel Vadot phy-names = "pcie-0"; 557*c66ec88fSEmmanuel Vadot status = "okay"; 558*c66ec88fSEmmanuel Vadot }; 559*c66ec88fSEmmanuel Vadot }; 560*c66ec88fSEmmanuel Vadot 561*c66ec88fSEmmanuel VadotTegra186: 562*c66ec88fSEmmanuel Vadot--------- 563*c66ec88fSEmmanuel Vadot 564*c66ec88fSEmmanuel VadotSoC DTSI: 565*c66ec88fSEmmanuel Vadot 566*c66ec88fSEmmanuel Vadot pcie@10003000 { 567*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra186-pcie"; 568*c66ec88fSEmmanuel Vadot power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>; 569*c66ec88fSEmmanuel Vadot device_type = "pci"; 570*c66ec88fSEmmanuel Vadot reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */ 571*c66ec88fSEmmanuel Vadot 0x0 0x10003800 0x0 0x00000800 /* AFI registers */ 572*c66ec88fSEmmanuel Vadot 0x0 0x40000000 0x0 0x10000000>; /* configuration space */ 573*c66ec88fSEmmanuel Vadot reg-names = "pads", "afi", "cs"; 574*c66ec88fSEmmanuel Vadot 575*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 576*c66ec88fSEmmanuel Vadot <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 577*c66ec88fSEmmanuel Vadot interrupt-names = "intr", "msi"; 578*c66ec88fSEmmanuel Vadot 579*c66ec88fSEmmanuel Vadot #interrupt-cells = <1>; 580*c66ec88fSEmmanuel Vadot interrupt-map-mask = <0 0 0 0>; 581*c66ec88fSEmmanuel Vadot interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 582*c66ec88fSEmmanuel Vadot 583*c66ec88fSEmmanuel Vadot bus-range = <0x00 0xff>; 584*c66ec88fSEmmanuel Vadot #address-cells = <3>; 585*c66ec88fSEmmanuel Vadot #size-cells = <2>; 586*c66ec88fSEmmanuel Vadot 587*c66ec88fSEmmanuel Vadot ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */ 588*c66ec88fSEmmanuel Vadot 0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */ 589*c66ec88fSEmmanuel Vadot 0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */ 590*c66ec88fSEmmanuel Vadot 0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */ 591*c66ec88fSEmmanuel Vadot 0x82000000 0 0x50100000 0x0 0x50100000 0 0x07F00000 /* non-prefetchable memory (127 MiB) */ 592*c66ec88fSEmmanuel Vadot 0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */ 593*c66ec88fSEmmanuel Vadot 594*c66ec88fSEmmanuel Vadot clocks = <&bpmp TEGRA186_CLK_AFI>, 595*c66ec88fSEmmanuel Vadot <&bpmp TEGRA186_CLK_PCIE>, 596*c66ec88fSEmmanuel Vadot <&bpmp TEGRA186_CLK_PLLE>; 597*c66ec88fSEmmanuel Vadot clock-names = "afi", "pex", "pll_e"; 598*c66ec88fSEmmanuel Vadot 599*c66ec88fSEmmanuel Vadot resets = <&bpmp TEGRA186_RESET_AFI>, 600*c66ec88fSEmmanuel Vadot <&bpmp TEGRA186_RESET_PCIE>, 601*c66ec88fSEmmanuel Vadot <&bpmp TEGRA186_RESET_PCIEXCLK>; 602*c66ec88fSEmmanuel Vadot reset-names = "afi", "pex", "pcie_x"; 603*c66ec88fSEmmanuel Vadot 604*c66ec88fSEmmanuel Vadot status = "disabled"; 605*c66ec88fSEmmanuel Vadot 606*c66ec88fSEmmanuel Vadot pci@1,0 { 607*c66ec88fSEmmanuel Vadot device_type = "pci"; 608*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>; 609*c66ec88fSEmmanuel Vadot reg = <0x000800 0 0 0 0>; 610*c66ec88fSEmmanuel Vadot status = "disabled"; 611*c66ec88fSEmmanuel Vadot 612*c66ec88fSEmmanuel Vadot #address-cells = <3>; 613*c66ec88fSEmmanuel Vadot #size-cells = <2>; 614*c66ec88fSEmmanuel Vadot ranges; 615*c66ec88fSEmmanuel Vadot 616*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <2>; 617*c66ec88fSEmmanuel Vadot }; 618*c66ec88fSEmmanuel Vadot 619*c66ec88fSEmmanuel Vadot pci@2,0 { 620*c66ec88fSEmmanuel Vadot device_type = "pci"; 621*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>; 622*c66ec88fSEmmanuel Vadot reg = <0x001000 0 0 0 0>; 623*c66ec88fSEmmanuel Vadot status = "disabled"; 624*c66ec88fSEmmanuel Vadot 625*c66ec88fSEmmanuel Vadot #address-cells = <3>; 626*c66ec88fSEmmanuel Vadot #size-cells = <2>; 627*c66ec88fSEmmanuel Vadot ranges; 628*c66ec88fSEmmanuel Vadot 629*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <1>; 630*c66ec88fSEmmanuel Vadot }; 631*c66ec88fSEmmanuel Vadot 632*c66ec88fSEmmanuel Vadot pci@3,0 { 633*c66ec88fSEmmanuel Vadot device_type = "pci"; 634*c66ec88fSEmmanuel Vadot assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>; 635*c66ec88fSEmmanuel Vadot reg = <0x001800 0 0 0 0>; 636*c66ec88fSEmmanuel Vadot status = "disabled"; 637*c66ec88fSEmmanuel Vadot 638*c66ec88fSEmmanuel Vadot #address-cells = <3>; 639*c66ec88fSEmmanuel Vadot #size-cells = <2>; 640*c66ec88fSEmmanuel Vadot ranges; 641*c66ec88fSEmmanuel Vadot 642*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <1>; 643*c66ec88fSEmmanuel Vadot }; 644*c66ec88fSEmmanuel Vadot }; 645*c66ec88fSEmmanuel Vadot 646*c66ec88fSEmmanuel VadotBoard DTS: 647*c66ec88fSEmmanuel Vadot 648*c66ec88fSEmmanuel Vadot pcie@10003000 { 649*c66ec88fSEmmanuel Vadot status = "okay"; 650*c66ec88fSEmmanuel Vadot 651*c66ec88fSEmmanuel Vadot dvdd-pex-supply = <&vdd_pex>; 652*c66ec88fSEmmanuel Vadot hvdd-pex-pll-supply = <&vdd_1v8>; 653*c66ec88fSEmmanuel Vadot hvdd-pex-supply = <&vdd_1v8>; 654*c66ec88fSEmmanuel Vadot vddio-pexctl-aud-supply = <&vdd_1v8>; 655*c66ec88fSEmmanuel Vadot 656*c66ec88fSEmmanuel Vadot pci@1,0 { 657*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <4>; 658*c66ec88fSEmmanuel Vadot status = "okay"; 659*c66ec88fSEmmanuel Vadot }; 660*c66ec88fSEmmanuel Vadot 661*c66ec88fSEmmanuel Vadot pci@2,0 { 662*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <0>; 663*c66ec88fSEmmanuel Vadot status = "disabled"; 664*c66ec88fSEmmanuel Vadot }; 665*c66ec88fSEmmanuel Vadot 666*c66ec88fSEmmanuel Vadot pci@3,0 { 667*c66ec88fSEmmanuel Vadot nvidia,num-lanes = <1>; 668*c66ec88fSEmmanuel Vadot status = "disabled"; 669*c66ec88fSEmmanuel Vadot }; 670*c66ec88fSEmmanuel Vadot }; 671