1d1523b52SThierry RedingNVIDIA Tegra PCIe controller 2d1523b52SThierry Reding 3d1523b52SThierry RedingRequired properties: 4904fb8e4SManikanta Maddireddy- compatible: Must be: 5904fb8e4SManikanta Maddireddy - "nvidia,tegra20-pcie": for Tegra20 6904fb8e4SManikanta Maddireddy - "nvidia,tegra30-pcie": for Tegra30 7904fb8e4SManikanta Maddireddy - "nvidia,tegra124-pcie": for Tegra124 and Tegra132 8904fb8e4SManikanta Maddireddy - "nvidia,tegra210-pcie": for Tegra210 9904fb8e4SManikanta Maddireddy - "nvidia,tegra186-pcie": for Tegra186 10904fb8e4SManikanta Maddireddy- power-domains: To ungate power partition by BPMP powergate driver. Must 11904fb8e4SManikanta Maddireddy contain BPMP phandle and PCIe power partition ID. This is required only 12904fb8e4SManikanta Maddireddy for Tegra186. 13d1523b52SThierry Reding- device_type: Must be "pci" 14d1523b52SThierry Reding- reg: A list of physical base address and length for each set of controller 15d1523b52SThierry Reding registers. Must contain an entry for each entry in the reg-names property. 16d1523b52SThierry Reding- reg-names: Must include the following entries: 17d1523b52SThierry Reding "pads": PADS registers 18d1523b52SThierry Reding "afi": AFI registers 19d1523b52SThierry Reding "cs": configuration space region 20d1523b52SThierry Reding- interrupts: A list of interrupt outputs of the controller. Must contain an 21d1523b52SThierry Reding entry for each entry in the interrupt-names property. 22d1523b52SThierry Reding- interrupt-names: Must include the following entries: 23d1523b52SThierry Reding "intr": The Tegra interrupt that is asserted for controller interrupts 24d1523b52SThierry Reding "msi": The Tegra interrupt that is asserted when an MSI is received 25d1523b52SThierry Reding- bus-range: Range of bus numbers associated with this controller 26d1523b52SThierry Reding- #address-cells: Address representation for root ports (must be 3) 27d1523b52SThierry Reding - cell 0 specifies the bus and device numbers of the root port: 28d1523b52SThierry Reding [23:16]: bus number 29d1523b52SThierry Reding [15:11]: device number 30d1523b52SThierry Reding - cell 1 denotes the upper 32 address bits and should be 0 31d1523b52SThierry Reding - cell 2 contains the lower 32 address bits and is used to translate to the 32d1523b52SThierry Reding CPU address space 33d1523b52SThierry Reding- #size-cells: Size representation for root ports (must be 2) 34d1523b52SThierry Reding- ranges: Describes the translation of addresses for root ports and standard 35d1523b52SThierry Reding PCI regions. The entries must be 6 cells each, where the first three cells 36d1523b52SThierry Reding correspond to the address as described for the #address-cells property 37d1523b52SThierry Reding above, the fourth cell is the physical CPU address to translate to and the 38d1523b52SThierry Reding fifth and six cells are as described for the #size-cells property above. 39d1523b52SThierry Reding - The first two entries are expected to translate the addresses for the root 40d1523b52SThierry Reding port registers, which are referenced by the assigned-addresses property of 41d1523b52SThierry Reding the root port nodes (see below). 42d1523b52SThierry Reding - The remaining entries setup the mapping for the standard I/O, memory and 43d1523b52SThierry Reding prefetchable PCI regions. The first cell determines the type of region 44d1523b52SThierry Reding that is setup: 45d1523b52SThierry Reding - 0x81000000: I/O memory region 46d1523b52SThierry Reding - 0x82000000: non-prefetchable memory region 47d1523b52SThierry Reding - 0xc2000000: prefetchable memory region 48d1523b52SThierry Reding Please refer to the standard PCI bus binding document for a more detailed 49d1523b52SThierry Reding explanation. 5097070bd4SLucas Stach- #interrupt-cells: Size representation for interrupts (must be 1) 5197070bd4SLucas Stach- interrupt-map-mask and interrupt-map: Standard PCI IRQ mapping properties 5297070bd4SLucas Stach Please refer to the standard PCI bus binding document for a more detailed 5397070bd4SLucas Stach explanation. 54d8f64797SStephen Warren- clocks: Must contain an entry for each entry in clock-names. 55d8f64797SStephen Warren See ../clocks/clock-bindings.txt for details. 56d1523b52SThierry Reding- clock-names: Must include the following entries: 57d8f64797SStephen Warren - pex 58d8f64797SStephen Warren - afi 59d8f64797SStephen Warren - pll_e 60d8f64797SStephen Warren - cml (not required for Tegra20) 6107999587SStephen Warren- resets: Must contain an entry for each entry in reset-names. 6207999587SStephen Warren See ../reset/reset.txt for details. 6307999587SStephen Warren- reset-names: Must include the following entries: 6407999587SStephen Warren - pex 6507999587SStephen Warren - afi 6607999587SStephen Warren - pcie_x 67d1523b52SThierry Reding 68*5992b044SManikanta MaddireddyOptional properties: 69*5992b044SManikanta Maddireddy- pinctrl-names: A list of pinctrl state names. Must contain the following 70*5992b044SManikanta Maddireddy entries: 71*5992b044SManikanta Maddireddy - "default": active state, puts PCIe I/O out of deep power down state 72*5992b044SManikanta Maddireddy - "idle": puts PCIe I/O into deep power down state 73*5992b044SManikanta Maddireddy- pinctrl-0: phandle for the default/active state of pin configurations. 74*5992b044SManikanta Maddireddy- pinctrl-1: phandle for the idle state of pin configurations. 75*5992b044SManikanta Maddireddy 7613541cc3SThierry RedingRequired properties on Tegra124 and later (deprecated): 777f1f054bSThierry Reding- phys: Must contain an entry for each entry in phy-names. 787f1f054bSThierry Reding- phy-names: Must include the following entries: 797f1f054bSThierry Reding - pcie 807f1f054bSThierry Reding 8113541cc3SThierry RedingThese properties are deprecated in favour of per-lane PHYs define in each of 8213541cc3SThierry Redingthe root ports (see below). 8313541cc3SThierry Reding 84e4958675SThierry RedingPower supplies for Tegra20: 85e4958675SThierry Reding- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 86e4958675SThierry Reding- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 87e4958675SThierry Reding- avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 88e4958675SThierry Reding supply 1.05 V. 89e4958675SThierry Reding- avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must 90e4958675SThierry Reding supply 1.05 V. 91e4958675SThierry Reding- vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V. 92e4958675SThierry Reding 93e4958675SThierry RedingPower supplies for Tegra30: 94e4958675SThierry Reding- Required: 95e4958675SThierry Reding - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 96e4958675SThierry Reding supply 1.05 V. 97e4958675SThierry Reding - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must 98e4958675SThierry Reding supply 1.05 V. 99e4958675SThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 100e4958675SThierry Reding supply 1.8 V. 101e4958675SThierry Reding - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 102e4958675SThierry Reding Must supply 3.3 V. 103e4958675SThierry Reding- Optional: 104e4958675SThierry Reding - If lanes 0 to 3 are used: 105e4958675SThierry Reding - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 106e4958675SThierry Reding - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 107e4958675SThierry Reding - If lanes 4 or 5 are used: 108e4958675SThierry Reding - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 109e4958675SThierry Reding - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 110e4958675SThierry Reding 1117f1f054bSThierry RedingPower supplies for Tegra124: 1127f1f054bSThierry Reding- Required: 1137f1f054bSThierry Reding - avddio-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 1147f1f054bSThierry Reding - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 1157f1f054bSThierry Reding - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 1167f1f054bSThierry Reding supply 1.05 V. 1177f1f054bSThierry Reding - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 1187f1f054bSThierry Reding Must supply 3.3 V. 1197f1f054bSThierry Reding - hvdd-pex-pll-e-supply: High-voltage supply for PLLE (shared with USB3). 1207f1f054bSThierry Reding Must supply 3.3 V. 1217f1f054bSThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 1227f1f054bSThierry Reding supply 2.8-3.3 V. 1237f1f054bSThierry Reding - avdd-pll-erefe-supply: Power supply for PLLE (shared with USB3). Must 1247f1f054bSThierry Reding supply 1.05 V. 1257f1f054bSThierry Reding 126528925c4SThierry RedingPower supplies for Tegra210: 127528925c4SThierry Reding- Required: 128528925c4SThierry Reding - avdd-pll-uerefe-supply: Power supply for PLLE (shared with USB3). Must 129528925c4SThierry Reding supply 1.05 V. 130528925c4SThierry Reding - hvddio-pex-supply: High-voltage supply for PCIe I/O and PCIe output 131528925c4SThierry Reding clocks. Must supply 1.8 V. 132528925c4SThierry Reding - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 133528925c4SThierry Reding - dvdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 134528925c4SThierry Reding supply 1.05 V. 135528925c4SThierry Reding - hvdd-pex-pll-e-supply: High-voltage supply for PLLE (shared with USB3). 136528925c4SThierry Reding Must supply 3.3 V. 137528925c4SThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 138528925c4SThierry Reding supply 1.8 V. 139528925c4SThierry Reding 140904fb8e4SManikanta MaddireddyPower supplies for Tegra186: 141904fb8e4SManikanta Maddireddy- Required: 142904fb8e4SManikanta Maddireddy - dvdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 143904fb8e4SManikanta Maddireddy - hvdd-pex-pll-supply: High-voltage supply for PLLE (shared with USB3). Must 144904fb8e4SManikanta Maddireddy supply 1.8 V. 145904fb8e4SManikanta Maddireddy - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 146904fb8e4SManikanta Maddireddy Must supply 1.8 V. 147904fb8e4SManikanta Maddireddy - vddio-pexctl-aud-supply: Power supply for PCIe side band signals. Must 148904fb8e4SManikanta Maddireddy supply 1.8 V. 149904fb8e4SManikanta Maddireddy 150d1523b52SThierry RedingRoot ports are defined as subnodes of the PCIe controller node. 151d1523b52SThierry Reding 152d1523b52SThierry RedingRequired properties: 153d1523b52SThierry Reding- device_type: Must be "pci" 154d1523b52SThierry Reding- assigned-addresses: Address and size of the port configuration registers 155d1523b52SThierry Reding- reg: PCI bus address of the root port 156d1523b52SThierry Reding- #address-cells: Must be 3 157d1523b52SThierry Reding- #size-cells: Must be 2 158d1523b52SThierry Reding- ranges: Sub-ranges distributed from the PCIe controller node. An empty 159d1523b52SThierry Reding property is sufficient. 160d1523b52SThierry Reding- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations 161d1523b52SThierry Reding are: 162d1523b52SThierry Reding - Root port 0 uses 4 lanes, root port 1 is unused. 163d1523b52SThierry Reding - Both root ports use 2 lanes. 164d1523b52SThierry Reding 16513541cc3SThierry RedingRequired properties for Tegra124 and later: 16613541cc3SThierry Reding- phys: Must contain an phandle to a PHY for each entry in phy-names. 16713541cc3SThierry Reding- phy-names: Must include an entry for each active lane. Note that the number 16813541cc3SThierry Reding of entries does not have to (though usually will) be equal to the specified 16913541cc3SThierry Reding number of lanes in the nvidia,num-lanes property. Entries are of the form 17013541cc3SThierry Reding "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes. 17113541cc3SThierry Reding 17213541cc3SThierry RedingExamples: 17313541cc3SThierry Reding========= 17413541cc3SThierry Reding 17513541cc3SThierry RedingTegra20: 17613541cc3SThierry Reding-------- 177d1523b52SThierry Reding 178d1523b52SThierry RedingSoC DTSI: 179d1523b52SThierry Reding 18013541cc3SThierry Reding pcie-controller@80003000 { 181d1523b52SThierry Reding compatible = "nvidia,tegra20-pcie"; 182d1523b52SThierry Reding device_type = "pci"; 183d1523b52SThierry Reding reg = <0x80003000 0x00000800 /* PADS registers */ 184d1523b52SThierry Reding 0x80003800 0x00000200 /* AFI registers */ 185d1523b52SThierry Reding 0x90000000 0x10000000>; /* configuration space */ 186d1523b52SThierry Reding reg-names = "pads", "afi", "cs"; 187d1523b52SThierry Reding interrupts = <0 98 0x04 /* controller interrupt */ 188d1523b52SThierry Reding 0 99 0x04>; /* MSI interrupt */ 189d1523b52SThierry Reding interrupt-names = "intr", "msi"; 190d1523b52SThierry Reding 19197070bd4SLucas Stach #interrupt-cells = <1>; 19297070bd4SLucas Stach interrupt-map-mask = <0 0 0 0>; 19397070bd4SLucas Stach interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 19497070bd4SLucas Stach 195d1523b52SThierry Reding bus-range = <0x00 0xff>; 196d1523b52SThierry Reding #address-cells = <3>; 197d1523b52SThierry Reding #size-cells = <2>; 198d1523b52SThierry Reding 199d1523b52SThierry Reding ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */ 200d1523b52SThierry Reding 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */ 201d1523b52SThierry Reding 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */ 202d1523b52SThierry Reding 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ 203d1523b52SThierry Reding 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ 204d1523b52SThierry Reding 20507999587SStephen Warren clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; 20607999587SStephen Warren clock-names = "pex", "afi", "pll_e"; 20707999587SStephen Warren resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; 20807999587SStephen Warren reset-names = "pex", "afi", "pcie_x"; 209d1523b52SThierry Reding status = "disabled"; 210d1523b52SThierry Reding 211d1523b52SThierry Reding pci@1,0 { 212d1523b52SThierry Reding device_type = "pci"; 213d1523b52SThierry Reding assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>; 214d1523b52SThierry Reding reg = <0x000800 0 0 0 0>; 215d1523b52SThierry Reding status = "disabled"; 216d1523b52SThierry Reding 217d1523b52SThierry Reding #address-cells = <3>; 218d1523b52SThierry Reding #size-cells = <2>; 219d1523b52SThierry Reding 220d1523b52SThierry Reding ranges; 221d1523b52SThierry Reding 222d1523b52SThierry Reding nvidia,num-lanes = <2>; 223d1523b52SThierry Reding }; 224d1523b52SThierry Reding 225d1523b52SThierry Reding pci@2,0 { 226d1523b52SThierry Reding device_type = "pci"; 227d1523b52SThierry Reding assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>; 228d1523b52SThierry Reding reg = <0x001000 0 0 0 0>; 229d1523b52SThierry Reding status = "disabled"; 230d1523b52SThierry Reding 231d1523b52SThierry Reding #address-cells = <3>; 232d1523b52SThierry Reding #size-cells = <2>; 233d1523b52SThierry Reding 234d1523b52SThierry Reding ranges; 235d1523b52SThierry Reding 236d1523b52SThierry Reding nvidia,num-lanes = <2>; 237d1523b52SThierry Reding }; 238d1523b52SThierry Reding }; 239d1523b52SThierry Reding 240d1523b52SThierry RedingBoard DTS: 241d1523b52SThierry Reding 24213541cc3SThierry Reding pcie-controller@80003000 { 243d1523b52SThierry Reding status = "okay"; 244d1523b52SThierry Reding 245d1523b52SThierry Reding vdd-supply = <&pci_vdd_reg>; 246d1523b52SThierry Reding pex-clk-supply = <&pci_clk_reg>; 247d1523b52SThierry Reding 248d1523b52SThierry Reding /* root port 00:01.0 */ 249d1523b52SThierry Reding pci@1,0 { 250d1523b52SThierry Reding status = "okay"; 251d1523b52SThierry Reding 252d1523b52SThierry Reding /* bridge 01:00.0 (optional) */ 253d1523b52SThierry Reding pci@0,0 { 254d1523b52SThierry Reding reg = <0x010000 0 0 0 0>; 255d1523b52SThierry Reding 256d1523b52SThierry Reding #address-cells = <3>; 257d1523b52SThierry Reding #size-cells = <2>; 258d1523b52SThierry Reding 259d1523b52SThierry Reding device_type = "pci"; 260d1523b52SThierry Reding 261d1523b52SThierry Reding /* endpoint 02:00.0 */ 262d1523b52SThierry Reding pci@0,0 { 263d1523b52SThierry Reding reg = <0x020000 0 0 0 0>; 264d1523b52SThierry Reding }; 265d1523b52SThierry Reding }; 266d1523b52SThierry Reding }; 267d1523b52SThierry Reding }; 268d1523b52SThierry Reding 269d1523b52SThierry RedingNote that devices on the PCI bus are dynamically discovered using PCI's bus 270d1523b52SThierry Redingenumeration and therefore don't need corresponding device nodes in DT. However 271d1523b52SThierry Redingif a device on the PCI bus provides a non-probeable bus such as I2C or SPI, 272d1523b52SThierry Redingdevice nodes need to be added in order to allow the bus' children to be 273d1523b52SThierry Redinginstantiated at the proper location in the operating system's device tree (as 274d1523b52SThierry Redingillustrated by the optional nodes in the example above). 27513541cc3SThierry Reding 27613541cc3SThierry RedingTegra30: 27713541cc3SThierry Reding-------- 27813541cc3SThierry Reding 27913541cc3SThierry RedingSoC DTSI: 28013541cc3SThierry Reding 28148c926cdSMarco Franchi pcie-controller@3000 { 28213541cc3SThierry Reding compatible = "nvidia,tegra30-pcie"; 28313541cc3SThierry Reding device_type = "pci"; 28413541cc3SThierry Reding reg = <0x00003000 0x00000800 /* PADS registers */ 28513541cc3SThierry Reding 0x00003800 0x00000200 /* AFI registers */ 28613541cc3SThierry Reding 0x10000000 0x10000000>; /* configuration space */ 28713541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 28813541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */ 28913541cc3SThierry Reding GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 29013541cc3SThierry Reding interrupt-names = "intr", "msi"; 29113541cc3SThierry Reding 29213541cc3SThierry Reding #interrupt-cells = <1>; 29313541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 29413541cc3SThierry Reding interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 29513541cc3SThierry Reding 29613541cc3SThierry Reding bus-range = <0x00 0xff>; 29713541cc3SThierry Reding #address-cells = <3>; 29813541cc3SThierry Reding #size-cells = <2>; 29913541cc3SThierry Reding 30013541cc3SThierry Reding ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */ 30113541cc3SThierry Reding 0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */ 30213541cc3SThierry Reding 0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */ 30313541cc3SThierry Reding 0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */ 30413541cc3SThierry Reding 0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */ 30513541cc3SThierry Reding 0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */ 30613541cc3SThierry Reding 30713541cc3SThierry Reding clocks = <&tegra_car TEGRA30_CLK_PCIE>, 30813541cc3SThierry Reding <&tegra_car TEGRA30_CLK_AFI>, 30913541cc3SThierry Reding <&tegra_car TEGRA30_CLK_PLL_E>, 31013541cc3SThierry Reding <&tegra_car TEGRA30_CLK_CML0>; 31113541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 31213541cc3SThierry Reding resets = <&tegra_car 70>, 31313541cc3SThierry Reding <&tegra_car 72>, 31413541cc3SThierry Reding <&tegra_car 74>; 31513541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 31613541cc3SThierry Reding status = "disabled"; 31713541cc3SThierry Reding 31813541cc3SThierry Reding pci@1,0 { 31913541cc3SThierry Reding device_type = "pci"; 32013541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>; 32113541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 32213541cc3SThierry Reding status = "disabled"; 32313541cc3SThierry Reding 32413541cc3SThierry Reding #address-cells = <3>; 32513541cc3SThierry Reding #size-cells = <2>; 32613541cc3SThierry Reding ranges; 32713541cc3SThierry Reding 32813541cc3SThierry Reding nvidia,num-lanes = <2>; 32913541cc3SThierry Reding }; 33013541cc3SThierry Reding 33113541cc3SThierry Reding pci@2,0 { 33213541cc3SThierry Reding device_type = "pci"; 33313541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>; 33413541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 33513541cc3SThierry Reding status = "disabled"; 33613541cc3SThierry Reding 33713541cc3SThierry Reding #address-cells = <3>; 33813541cc3SThierry Reding #size-cells = <2>; 33913541cc3SThierry Reding ranges; 34013541cc3SThierry Reding 34113541cc3SThierry Reding nvidia,num-lanes = <2>; 34213541cc3SThierry Reding }; 34313541cc3SThierry Reding 34413541cc3SThierry Reding pci@3,0 { 34513541cc3SThierry Reding device_type = "pci"; 34613541cc3SThierry Reding assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>; 34713541cc3SThierry Reding reg = <0x001800 0 0 0 0>; 34813541cc3SThierry Reding status = "disabled"; 34913541cc3SThierry Reding 35013541cc3SThierry Reding #address-cells = <3>; 35113541cc3SThierry Reding #size-cells = <2>; 35213541cc3SThierry Reding ranges; 35313541cc3SThierry Reding 35413541cc3SThierry Reding nvidia,num-lanes = <2>; 35513541cc3SThierry Reding }; 35613541cc3SThierry Reding }; 35713541cc3SThierry Reding 35813541cc3SThierry RedingBoard DTS: 35913541cc3SThierry Reding 36048c926cdSMarco Franchi pcie-controller@3000 { 36113541cc3SThierry Reding status = "okay"; 36213541cc3SThierry Reding 36313541cc3SThierry Reding avdd-pexa-supply = <&ldo1_reg>; 36413541cc3SThierry Reding vdd-pexa-supply = <&ldo1_reg>; 36513541cc3SThierry Reding avdd-pexb-supply = <&ldo1_reg>; 36613541cc3SThierry Reding vdd-pexb-supply = <&ldo1_reg>; 36713541cc3SThierry Reding avdd-pex-pll-supply = <&ldo1_reg>; 36813541cc3SThierry Reding avdd-plle-supply = <&ldo1_reg>; 36913541cc3SThierry Reding vddio-pex-ctl-supply = <&sys_3v3_reg>; 37013541cc3SThierry Reding hvdd-pex-supply = <&sys_3v3_pexs_reg>; 37113541cc3SThierry Reding 37213541cc3SThierry Reding pci@1,0 { 37313541cc3SThierry Reding status = "okay"; 37413541cc3SThierry Reding }; 37513541cc3SThierry Reding 37613541cc3SThierry Reding pci@3,0 { 37713541cc3SThierry Reding status = "okay"; 37813541cc3SThierry Reding }; 37913541cc3SThierry Reding }; 38013541cc3SThierry Reding 38113541cc3SThierry RedingTegra124: 38213541cc3SThierry Reding--------- 38313541cc3SThierry Reding 38413541cc3SThierry RedingSoC DTSI: 38513541cc3SThierry Reding 38648c926cdSMarco Franchi pcie-controller@1003000 { 38713541cc3SThierry Reding compatible = "nvidia,tegra124-pcie"; 38813541cc3SThierry Reding device_type = "pci"; 38913541cc3SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 39013541cc3SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 39113541cc3SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 39213541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 39313541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 39413541cc3SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 39513541cc3SThierry Reding interrupt-names = "intr", "msi"; 39613541cc3SThierry Reding 39713541cc3SThierry Reding #interrupt-cells = <1>; 39813541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 39913541cc3SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 40013541cc3SThierry Reding 40113541cc3SThierry Reding bus-range = <0x00 0xff>; 40213541cc3SThierry Reding #address-cells = <3>; 40313541cc3SThierry Reding #size-cells = <2>; 40413541cc3SThierry Reding 40513541cc3SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 40613541cc3SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 40713541cc3SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 40813541cc3SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 40913541cc3SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 41013541cc3SThierry Reding 41113541cc3SThierry Reding clocks = <&tegra_car TEGRA124_CLK_PCIE>, 41213541cc3SThierry Reding <&tegra_car TEGRA124_CLK_AFI>, 41313541cc3SThierry Reding <&tegra_car TEGRA124_CLK_PLL_E>, 41413541cc3SThierry Reding <&tegra_car TEGRA124_CLK_CML0>; 41513541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 41613541cc3SThierry Reding resets = <&tegra_car 70>, 41713541cc3SThierry Reding <&tegra_car 72>, 41813541cc3SThierry Reding <&tegra_car 74>; 41913541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 42013541cc3SThierry Reding status = "disabled"; 42113541cc3SThierry Reding 42213541cc3SThierry Reding pci@1,0 { 42313541cc3SThierry Reding device_type = "pci"; 42413541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 42513541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 42613541cc3SThierry Reding status = "disabled"; 42713541cc3SThierry Reding 42813541cc3SThierry Reding #address-cells = <3>; 42913541cc3SThierry Reding #size-cells = <2>; 43013541cc3SThierry Reding ranges; 43113541cc3SThierry Reding 43213541cc3SThierry Reding nvidia,num-lanes = <2>; 43313541cc3SThierry Reding }; 43413541cc3SThierry Reding 43513541cc3SThierry Reding pci@2,0 { 43613541cc3SThierry Reding device_type = "pci"; 43713541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 43813541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 43913541cc3SThierry Reding status = "disabled"; 44013541cc3SThierry Reding 44113541cc3SThierry Reding #address-cells = <3>; 44213541cc3SThierry Reding #size-cells = <2>; 44313541cc3SThierry Reding ranges; 44413541cc3SThierry Reding 44513541cc3SThierry Reding nvidia,num-lanes = <1>; 44613541cc3SThierry Reding }; 44713541cc3SThierry Reding }; 44813541cc3SThierry Reding 44913541cc3SThierry RedingBoard DTS: 45013541cc3SThierry Reding 45148c926cdSMarco Franchi pcie-controller@1003000 { 45213541cc3SThierry Reding status = "okay"; 45313541cc3SThierry Reding 45413541cc3SThierry Reding avddio-pex-supply = <&vdd_1v05_run>; 45513541cc3SThierry Reding dvddio-pex-supply = <&vdd_1v05_run>; 45613541cc3SThierry Reding avdd-pex-pll-supply = <&vdd_1v05_run>; 45713541cc3SThierry Reding hvdd-pex-supply = <&vdd_3v3_lp0>; 45813541cc3SThierry Reding hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>; 45913541cc3SThierry Reding vddio-pex-ctl-supply = <&vdd_3v3_lp0>; 46013541cc3SThierry Reding avdd-pll-erefe-supply = <&avdd_1v05_run>; 46113541cc3SThierry Reding 46213541cc3SThierry Reding /* Mini PCIe */ 46313541cc3SThierry Reding pci@1,0 { 46413541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 46513541cc3SThierry Reding phy-names = "pcie-0"; 46613541cc3SThierry Reding status = "okay"; 46713541cc3SThierry Reding }; 46813541cc3SThierry Reding 46913541cc3SThierry Reding /* Gigabit Ethernet */ 47013541cc3SThierry Reding pci@2,0 { 47113541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; 47213541cc3SThierry Reding phy-names = "pcie-0"; 47313541cc3SThierry Reding status = "okay"; 47413541cc3SThierry Reding }; 47513541cc3SThierry Reding }; 476528925c4SThierry Reding 477528925c4SThierry RedingTegra210: 478528925c4SThierry Reding--------- 479528925c4SThierry Reding 480528925c4SThierry RedingSoC DTSI: 481528925c4SThierry Reding 48248c926cdSMarco Franchi pcie-controller@1003000 { 483528925c4SThierry Reding compatible = "nvidia,tegra210-pcie"; 484528925c4SThierry Reding device_type = "pci"; 485528925c4SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 486528925c4SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 487528925c4SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 488528925c4SThierry Reding reg-names = "pads", "afi", "cs"; 489528925c4SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 490528925c4SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 491528925c4SThierry Reding interrupt-names = "intr", "msi"; 492528925c4SThierry Reding 493528925c4SThierry Reding #interrupt-cells = <1>; 494528925c4SThierry Reding interrupt-map-mask = <0 0 0 0>; 495528925c4SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 496528925c4SThierry Reding 497528925c4SThierry Reding bus-range = <0x00 0xff>; 498528925c4SThierry Reding #address-cells = <3>; 499528925c4SThierry Reding #size-cells = <2>; 500528925c4SThierry Reding 501528925c4SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 502528925c4SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 503528925c4SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 504528925c4SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 505528925c4SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 506528925c4SThierry Reding 507528925c4SThierry Reding clocks = <&tegra_car TEGRA210_CLK_PCIE>, 508528925c4SThierry Reding <&tegra_car TEGRA210_CLK_AFI>, 509528925c4SThierry Reding <&tegra_car TEGRA210_CLK_PLL_E>, 510528925c4SThierry Reding <&tegra_car TEGRA210_CLK_CML0>; 511528925c4SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 512528925c4SThierry Reding resets = <&tegra_car 70>, 513528925c4SThierry Reding <&tegra_car 72>, 514528925c4SThierry Reding <&tegra_car 74>; 515528925c4SThierry Reding reset-names = "pex", "afi", "pcie_x"; 516528925c4SThierry Reding status = "disabled"; 517528925c4SThierry Reding 518528925c4SThierry Reding pci@1,0 { 519528925c4SThierry Reding device_type = "pci"; 520528925c4SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 521528925c4SThierry Reding reg = <0x000800 0 0 0 0>; 522528925c4SThierry Reding status = "disabled"; 523528925c4SThierry Reding 524528925c4SThierry Reding #address-cells = <3>; 525528925c4SThierry Reding #size-cells = <2>; 526528925c4SThierry Reding ranges; 527528925c4SThierry Reding 528528925c4SThierry Reding nvidia,num-lanes = <4>; 529528925c4SThierry Reding }; 530528925c4SThierry Reding 531528925c4SThierry Reding pci@2,0 { 532528925c4SThierry Reding device_type = "pci"; 533528925c4SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 534528925c4SThierry Reding reg = <0x001000 0 0 0 0>; 535528925c4SThierry Reding status = "disabled"; 536528925c4SThierry Reding 537528925c4SThierry Reding #address-cells = <3>; 538528925c4SThierry Reding #size-cells = <2>; 539528925c4SThierry Reding ranges; 540528925c4SThierry Reding 541528925c4SThierry Reding nvidia,num-lanes = <1>; 542528925c4SThierry Reding }; 543528925c4SThierry Reding }; 544528925c4SThierry Reding 545528925c4SThierry RedingBoard DTS: 546528925c4SThierry Reding 54748c926cdSMarco Franchi pcie-controller@1003000 { 548528925c4SThierry Reding status = "okay"; 549528925c4SThierry Reding 550528925c4SThierry Reding avdd-pll-uerefe-supply = <&avdd_1v05_pll>; 551528925c4SThierry Reding hvddio-pex-supply = <&vdd_1v8>; 552528925c4SThierry Reding dvddio-pex-supply = <&vdd_pex_1v05>; 553528925c4SThierry Reding dvdd-pex-pll-supply = <&vdd_pex_1v05>; 554528925c4SThierry Reding hvdd-pex-pll-e-supply = <&vdd_1v8>; 555528925c4SThierry Reding vddio-pex-ctl-supply = <&vdd_1v8>; 556528925c4SThierry Reding 557528925c4SThierry Reding pci@1,0 { 558528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>, 559528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>, 560528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, 561528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>; 562528925c4SThierry Reding phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; 563528925c4SThierry Reding status = "okay"; 564528925c4SThierry Reding }; 565528925c4SThierry Reding 566528925c4SThierry Reding pci@2,0 { 567528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 568528925c4SThierry Reding phy-names = "pcie-0"; 569528925c4SThierry Reding status = "okay"; 570528925c4SThierry Reding }; 571528925c4SThierry Reding }; 572904fb8e4SManikanta Maddireddy 573904fb8e4SManikanta MaddireddyTegra186: 574904fb8e4SManikanta Maddireddy--------- 575904fb8e4SManikanta Maddireddy 576904fb8e4SManikanta MaddireddySoC DTSI: 577904fb8e4SManikanta Maddireddy 578904fb8e4SManikanta Maddireddy pcie@10003000 { 579904fb8e4SManikanta Maddireddy compatible = "nvidia,tegra186-pcie"; 580904fb8e4SManikanta Maddireddy power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>; 581904fb8e4SManikanta Maddireddy device_type = "pci"; 582904fb8e4SManikanta Maddireddy reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */ 583904fb8e4SManikanta Maddireddy 0x0 0x10003800 0x0 0x00000800 /* AFI registers */ 584904fb8e4SManikanta Maddireddy 0x0 0x40000000 0x0 0x10000000>; /* configuration space */ 585904fb8e4SManikanta Maddireddy reg-names = "pads", "afi", "cs"; 586904fb8e4SManikanta Maddireddy 587904fb8e4SManikanta Maddireddy interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 588904fb8e4SManikanta Maddireddy <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 589904fb8e4SManikanta Maddireddy interrupt-names = "intr", "msi"; 590904fb8e4SManikanta Maddireddy 591904fb8e4SManikanta Maddireddy #interrupt-cells = <1>; 592904fb8e4SManikanta Maddireddy interrupt-map-mask = <0 0 0 0>; 593904fb8e4SManikanta Maddireddy interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 594904fb8e4SManikanta Maddireddy 595904fb8e4SManikanta Maddireddy bus-range = <0x00 0xff>; 596904fb8e4SManikanta Maddireddy #address-cells = <3>; 597904fb8e4SManikanta Maddireddy #size-cells = <2>; 598904fb8e4SManikanta Maddireddy 599904fb8e4SManikanta Maddireddy ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */ 600904fb8e4SManikanta Maddireddy 0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */ 601904fb8e4SManikanta Maddireddy 0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */ 602904fb8e4SManikanta Maddireddy 0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */ 603904fb8e4SManikanta Maddireddy 0x82000000 0 0x50100000 0x0 0x50100000 0 0x07F00000 /* non-prefetchable memory (127 MiB) */ 604904fb8e4SManikanta Maddireddy 0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */ 605904fb8e4SManikanta Maddireddy 606904fb8e4SManikanta Maddireddy clocks = <&bpmp TEGRA186_CLK_AFI>, 607904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PCIE>, 608904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PLLE>; 609904fb8e4SManikanta Maddireddy clock-names = "afi", "pex", "pll_e"; 610904fb8e4SManikanta Maddireddy 611904fb8e4SManikanta Maddireddy resets = <&bpmp TEGRA186_RESET_AFI>, 612904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIE>, 613904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIEXCLK>; 614904fb8e4SManikanta Maddireddy reset-names = "afi", "pex", "pcie_x"; 615904fb8e4SManikanta Maddireddy 616904fb8e4SManikanta Maddireddy status = "disabled"; 617904fb8e4SManikanta Maddireddy 618904fb8e4SManikanta Maddireddy pci@1,0 { 619904fb8e4SManikanta Maddireddy device_type = "pci"; 620904fb8e4SManikanta Maddireddy assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>; 621904fb8e4SManikanta Maddireddy reg = <0x000800 0 0 0 0>; 622904fb8e4SManikanta Maddireddy status = "disabled"; 623904fb8e4SManikanta Maddireddy 624904fb8e4SManikanta Maddireddy #address-cells = <3>; 625904fb8e4SManikanta Maddireddy #size-cells = <2>; 626904fb8e4SManikanta Maddireddy ranges; 627904fb8e4SManikanta Maddireddy 628904fb8e4SManikanta Maddireddy nvidia,num-lanes = <2>; 629904fb8e4SManikanta Maddireddy }; 630904fb8e4SManikanta Maddireddy 631904fb8e4SManikanta Maddireddy pci@2,0 { 632904fb8e4SManikanta Maddireddy device_type = "pci"; 633904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>; 634904fb8e4SManikanta Maddireddy reg = <0x001000 0 0 0 0>; 635904fb8e4SManikanta Maddireddy status = "disabled"; 636904fb8e4SManikanta Maddireddy 637904fb8e4SManikanta Maddireddy #address-cells = <3>; 638904fb8e4SManikanta Maddireddy #size-cells = <2>; 639904fb8e4SManikanta Maddireddy ranges; 640904fb8e4SManikanta Maddireddy 641904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 642904fb8e4SManikanta Maddireddy }; 643904fb8e4SManikanta Maddireddy 644904fb8e4SManikanta Maddireddy pci@3,0 { 645904fb8e4SManikanta Maddireddy device_type = "pci"; 646904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>; 647904fb8e4SManikanta Maddireddy reg = <0x001800 0 0 0 0>; 648904fb8e4SManikanta Maddireddy status = "disabled"; 649904fb8e4SManikanta Maddireddy 650904fb8e4SManikanta Maddireddy #address-cells = <3>; 651904fb8e4SManikanta Maddireddy #size-cells = <2>; 652904fb8e4SManikanta Maddireddy ranges; 653904fb8e4SManikanta Maddireddy 654904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 655904fb8e4SManikanta Maddireddy }; 656904fb8e4SManikanta Maddireddy }; 657904fb8e4SManikanta Maddireddy 658904fb8e4SManikanta MaddireddyBoard DTS: 659904fb8e4SManikanta Maddireddy 660904fb8e4SManikanta Maddireddy pcie@10003000 { 661904fb8e4SManikanta Maddireddy status = "okay"; 662904fb8e4SManikanta Maddireddy 663904fb8e4SManikanta Maddireddy dvdd-pex-supply = <&vdd_pex>; 664904fb8e4SManikanta Maddireddy hvdd-pex-pll-supply = <&vdd_1v8>; 665904fb8e4SManikanta Maddireddy hvdd-pex-supply = <&vdd_1v8>; 666904fb8e4SManikanta Maddireddy vddio-pexctl-aud-supply = <&vdd_1v8>; 667904fb8e4SManikanta Maddireddy 668904fb8e4SManikanta Maddireddy pci@1,0 { 669904fb8e4SManikanta Maddireddy nvidia,num-lanes = <4>; 670904fb8e4SManikanta Maddireddy status = "okay"; 671904fb8e4SManikanta Maddireddy }; 672904fb8e4SManikanta Maddireddy 673904fb8e4SManikanta Maddireddy pci@2,0 { 674904fb8e4SManikanta Maddireddy nvidia,num-lanes = <0>; 675904fb8e4SManikanta Maddireddy status = "disabled"; 676904fb8e4SManikanta Maddireddy }; 677904fb8e4SManikanta Maddireddy 678904fb8e4SManikanta Maddireddy pci@3,0 { 679904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 680904fb8e4SManikanta Maddireddy status = "disabled"; 681904fb8e4SManikanta Maddireddy }; 682904fb8e4SManikanta Maddireddy }; 683