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 - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 1167f1f054bSThierry Reding Must supply 3.3 V. 1177f1f054bSThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 1187f1f054bSThierry Reding supply 2.8-3.3 V. 1197f1f054bSThierry Reding 120528925c4SThierry RedingPower supplies for Tegra210: 121528925c4SThierry Reding- Required: 122528925c4SThierry Reding - hvddio-pex-supply: High-voltage supply for PCIe I/O and PCIe output 123528925c4SThierry Reding clocks. Must supply 1.8 V. 124528925c4SThierry Reding - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 125528925c4SThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 126528925c4SThierry Reding supply 1.8 V. 127528925c4SThierry Reding 128904fb8e4SManikanta MaddireddyPower supplies for Tegra186: 129904fb8e4SManikanta Maddireddy- Required: 130904fb8e4SManikanta Maddireddy - dvdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 131904fb8e4SManikanta Maddireddy - hvdd-pex-pll-supply: High-voltage supply for PLLE (shared with USB3). Must 132904fb8e4SManikanta Maddireddy supply 1.8 V. 133904fb8e4SManikanta Maddireddy - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 134904fb8e4SManikanta Maddireddy Must supply 1.8 V. 135904fb8e4SManikanta Maddireddy - vddio-pexctl-aud-supply: Power supply for PCIe side band signals. Must 136904fb8e4SManikanta Maddireddy supply 1.8 V. 137904fb8e4SManikanta Maddireddy 138d1523b52SThierry RedingRoot ports are defined as subnodes of the PCIe controller node. 139d1523b52SThierry Reding 140d1523b52SThierry RedingRequired properties: 141d1523b52SThierry Reding- device_type: Must be "pci" 142d1523b52SThierry Reding- assigned-addresses: Address and size of the port configuration registers 143d1523b52SThierry Reding- reg: PCI bus address of the root port 144d1523b52SThierry Reding- #address-cells: Must be 3 145d1523b52SThierry Reding- #size-cells: Must be 2 146d1523b52SThierry Reding- ranges: Sub-ranges distributed from the PCIe controller node. An empty 147d1523b52SThierry Reding property is sufficient. 148d1523b52SThierry Reding- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations 149d1523b52SThierry Reding are: 150d1523b52SThierry Reding - Root port 0 uses 4 lanes, root port 1 is unused. 151d1523b52SThierry Reding - Both root ports use 2 lanes. 152d1523b52SThierry Reding 15313541cc3SThierry RedingRequired properties for Tegra124 and later: 15413541cc3SThierry Reding- phys: Must contain an phandle to a PHY for each entry in phy-names. 15513541cc3SThierry Reding- phy-names: Must include an entry for each active lane. Note that the number 15613541cc3SThierry Reding of entries does not have to (though usually will) be equal to the specified 15713541cc3SThierry Reding number of lanes in the nvidia,num-lanes property. Entries are of the form 15813541cc3SThierry Reding "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes. 15913541cc3SThierry Reding 16013541cc3SThierry RedingExamples: 16113541cc3SThierry Reding========= 16213541cc3SThierry Reding 16313541cc3SThierry RedingTegra20: 16413541cc3SThierry Reding-------- 165d1523b52SThierry Reding 166d1523b52SThierry RedingSoC DTSI: 167d1523b52SThierry Reding 16813541cc3SThierry Reding pcie-controller@80003000 { 169d1523b52SThierry Reding compatible = "nvidia,tegra20-pcie"; 170d1523b52SThierry Reding device_type = "pci"; 171d1523b52SThierry Reding reg = <0x80003000 0x00000800 /* PADS registers */ 172d1523b52SThierry Reding 0x80003800 0x00000200 /* AFI registers */ 173d1523b52SThierry Reding 0x90000000 0x10000000>; /* configuration space */ 174d1523b52SThierry Reding reg-names = "pads", "afi", "cs"; 175d1523b52SThierry Reding interrupts = <0 98 0x04 /* controller interrupt */ 176d1523b52SThierry Reding 0 99 0x04>; /* MSI interrupt */ 177d1523b52SThierry Reding interrupt-names = "intr", "msi"; 178d1523b52SThierry Reding 17997070bd4SLucas Stach #interrupt-cells = <1>; 18097070bd4SLucas Stach interrupt-map-mask = <0 0 0 0>; 18197070bd4SLucas Stach interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 18297070bd4SLucas Stach 183d1523b52SThierry Reding bus-range = <0x00 0xff>; 184d1523b52SThierry Reding #address-cells = <3>; 185d1523b52SThierry Reding #size-cells = <2>; 186d1523b52SThierry Reding 187d1523b52SThierry Reding ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */ 188d1523b52SThierry Reding 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */ 189d1523b52SThierry Reding 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */ 190d1523b52SThierry Reding 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ 191d1523b52SThierry Reding 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ 192d1523b52SThierry Reding 19307999587SStephen Warren clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; 19407999587SStephen Warren clock-names = "pex", "afi", "pll_e"; 19507999587SStephen Warren resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; 19607999587SStephen Warren reset-names = "pex", "afi", "pcie_x"; 197d1523b52SThierry Reding status = "disabled"; 198d1523b52SThierry Reding 199d1523b52SThierry Reding pci@1,0 { 200d1523b52SThierry Reding device_type = "pci"; 201d1523b52SThierry Reding assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>; 202d1523b52SThierry Reding reg = <0x000800 0 0 0 0>; 203d1523b52SThierry Reding status = "disabled"; 204d1523b52SThierry Reding 205d1523b52SThierry Reding #address-cells = <3>; 206d1523b52SThierry Reding #size-cells = <2>; 207d1523b52SThierry Reding 208d1523b52SThierry Reding ranges; 209d1523b52SThierry Reding 210d1523b52SThierry Reding nvidia,num-lanes = <2>; 211d1523b52SThierry Reding }; 212d1523b52SThierry Reding 213d1523b52SThierry Reding pci@2,0 { 214d1523b52SThierry Reding device_type = "pci"; 215d1523b52SThierry Reding assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>; 216d1523b52SThierry Reding reg = <0x001000 0 0 0 0>; 217d1523b52SThierry Reding status = "disabled"; 218d1523b52SThierry Reding 219d1523b52SThierry Reding #address-cells = <3>; 220d1523b52SThierry Reding #size-cells = <2>; 221d1523b52SThierry Reding 222d1523b52SThierry Reding ranges; 223d1523b52SThierry Reding 224d1523b52SThierry Reding nvidia,num-lanes = <2>; 225d1523b52SThierry Reding }; 226d1523b52SThierry Reding }; 227d1523b52SThierry Reding 228d1523b52SThierry RedingBoard DTS: 229d1523b52SThierry Reding 23013541cc3SThierry Reding pcie-controller@80003000 { 231d1523b52SThierry Reding status = "okay"; 232d1523b52SThierry Reding 233d1523b52SThierry Reding vdd-supply = <&pci_vdd_reg>; 234d1523b52SThierry Reding pex-clk-supply = <&pci_clk_reg>; 235d1523b52SThierry Reding 236d1523b52SThierry Reding /* root port 00:01.0 */ 237d1523b52SThierry Reding pci@1,0 { 238d1523b52SThierry Reding status = "okay"; 239d1523b52SThierry Reding 240d1523b52SThierry Reding /* bridge 01:00.0 (optional) */ 241d1523b52SThierry Reding pci@0,0 { 242d1523b52SThierry Reding reg = <0x010000 0 0 0 0>; 243d1523b52SThierry Reding 244d1523b52SThierry Reding #address-cells = <3>; 245d1523b52SThierry Reding #size-cells = <2>; 246d1523b52SThierry Reding 247d1523b52SThierry Reding device_type = "pci"; 248d1523b52SThierry Reding 249d1523b52SThierry Reding /* endpoint 02:00.0 */ 250d1523b52SThierry Reding pci@0,0 { 251d1523b52SThierry Reding reg = <0x020000 0 0 0 0>; 252d1523b52SThierry Reding }; 253d1523b52SThierry Reding }; 254d1523b52SThierry Reding }; 255d1523b52SThierry Reding }; 256d1523b52SThierry Reding 257d1523b52SThierry RedingNote that devices on the PCI bus are dynamically discovered using PCI's bus 258d1523b52SThierry Redingenumeration and therefore don't need corresponding device nodes in DT. However 259d1523b52SThierry Redingif a device on the PCI bus provides a non-probeable bus such as I2C or SPI, 260d1523b52SThierry Redingdevice nodes need to be added in order to allow the bus' children to be 261d1523b52SThierry Redinginstantiated at the proper location in the operating system's device tree (as 262d1523b52SThierry Redingillustrated by the optional nodes in the example above). 26313541cc3SThierry Reding 26413541cc3SThierry RedingTegra30: 26513541cc3SThierry Reding-------- 26613541cc3SThierry Reding 26713541cc3SThierry RedingSoC DTSI: 26813541cc3SThierry Reding 26948c926cdSMarco Franchi pcie-controller@3000 { 27013541cc3SThierry Reding compatible = "nvidia,tegra30-pcie"; 27113541cc3SThierry Reding device_type = "pci"; 27213541cc3SThierry Reding reg = <0x00003000 0x00000800 /* PADS registers */ 27313541cc3SThierry Reding 0x00003800 0x00000200 /* AFI registers */ 27413541cc3SThierry Reding 0x10000000 0x10000000>; /* configuration space */ 27513541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 27613541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */ 27713541cc3SThierry Reding GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 27813541cc3SThierry Reding interrupt-names = "intr", "msi"; 27913541cc3SThierry Reding 28013541cc3SThierry Reding #interrupt-cells = <1>; 28113541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 28213541cc3SThierry Reding interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 28313541cc3SThierry Reding 28413541cc3SThierry Reding bus-range = <0x00 0xff>; 28513541cc3SThierry Reding #address-cells = <3>; 28613541cc3SThierry Reding #size-cells = <2>; 28713541cc3SThierry Reding 28813541cc3SThierry Reding ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */ 28913541cc3SThierry Reding 0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */ 29013541cc3SThierry Reding 0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */ 29113541cc3SThierry Reding 0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */ 29213541cc3SThierry Reding 0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */ 29313541cc3SThierry Reding 0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */ 29413541cc3SThierry Reding 29513541cc3SThierry Reding clocks = <&tegra_car TEGRA30_CLK_PCIE>, 29613541cc3SThierry Reding <&tegra_car TEGRA30_CLK_AFI>, 29713541cc3SThierry Reding <&tegra_car TEGRA30_CLK_PLL_E>, 29813541cc3SThierry Reding <&tegra_car TEGRA30_CLK_CML0>; 29913541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 30013541cc3SThierry Reding resets = <&tegra_car 70>, 30113541cc3SThierry Reding <&tegra_car 72>, 30213541cc3SThierry Reding <&tegra_car 74>; 30313541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 30413541cc3SThierry Reding status = "disabled"; 30513541cc3SThierry Reding 30613541cc3SThierry Reding pci@1,0 { 30713541cc3SThierry Reding device_type = "pci"; 30813541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>; 30913541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 31013541cc3SThierry Reding status = "disabled"; 31113541cc3SThierry Reding 31213541cc3SThierry Reding #address-cells = <3>; 31313541cc3SThierry Reding #size-cells = <2>; 31413541cc3SThierry Reding ranges; 31513541cc3SThierry Reding 31613541cc3SThierry Reding nvidia,num-lanes = <2>; 31713541cc3SThierry Reding }; 31813541cc3SThierry Reding 31913541cc3SThierry Reding pci@2,0 { 32013541cc3SThierry Reding device_type = "pci"; 32113541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>; 32213541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 32313541cc3SThierry Reding status = "disabled"; 32413541cc3SThierry Reding 32513541cc3SThierry Reding #address-cells = <3>; 32613541cc3SThierry Reding #size-cells = <2>; 32713541cc3SThierry Reding ranges; 32813541cc3SThierry Reding 32913541cc3SThierry Reding nvidia,num-lanes = <2>; 33013541cc3SThierry Reding }; 33113541cc3SThierry Reding 33213541cc3SThierry Reding pci@3,0 { 33313541cc3SThierry Reding device_type = "pci"; 33413541cc3SThierry Reding assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>; 33513541cc3SThierry Reding reg = <0x001800 0 0 0 0>; 33613541cc3SThierry Reding status = "disabled"; 33713541cc3SThierry Reding 33813541cc3SThierry Reding #address-cells = <3>; 33913541cc3SThierry Reding #size-cells = <2>; 34013541cc3SThierry Reding ranges; 34113541cc3SThierry Reding 34213541cc3SThierry Reding nvidia,num-lanes = <2>; 34313541cc3SThierry Reding }; 34413541cc3SThierry Reding }; 34513541cc3SThierry Reding 34613541cc3SThierry RedingBoard DTS: 34713541cc3SThierry Reding 34848c926cdSMarco Franchi pcie-controller@3000 { 34913541cc3SThierry Reding status = "okay"; 35013541cc3SThierry Reding 35113541cc3SThierry Reding avdd-pexa-supply = <&ldo1_reg>; 35213541cc3SThierry Reding vdd-pexa-supply = <&ldo1_reg>; 35313541cc3SThierry Reding avdd-pexb-supply = <&ldo1_reg>; 35413541cc3SThierry Reding vdd-pexb-supply = <&ldo1_reg>; 35513541cc3SThierry Reding avdd-pex-pll-supply = <&ldo1_reg>; 35613541cc3SThierry Reding avdd-plle-supply = <&ldo1_reg>; 35713541cc3SThierry Reding vddio-pex-ctl-supply = <&sys_3v3_reg>; 35813541cc3SThierry Reding hvdd-pex-supply = <&sys_3v3_pexs_reg>; 35913541cc3SThierry Reding 36013541cc3SThierry Reding pci@1,0 { 36113541cc3SThierry Reding status = "okay"; 36213541cc3SThierry Reding }; 36313541cc3SThierry Reding 36413541cc3SThierry Reding pci@3,0 { 36513541cc3SThierry Reding status = "okay"; 36613541cc3SThierry Reding }; 36713541cc3SThierry Reding }; 36813541cc3SThierry Reding 36913541cc3SThierry RedingTegra124: 37013541cc3SThierry Reding--------- 37113541cc3SThierry Reding 37213541cc3SThierry RedingSoC DTSI: 37313541cc3SThierry Reding 37448c926cdSMarco Franchi pcie-controller@1003000 { 37513541cc3SThierry Reding compatible = "nvidia,tegra124-pcie"; 37613541cc3SThierry Reding device_type = "pci"; 37713541cc3SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 37813541cc3SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 37913541cc3SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 38013541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 38113541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 38213541cc3SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 38313541cc3SThierry Reding interrupt-names = "intr", "msi"; 38413541cc3SThierry Reding 38513541cc3SThierry Reding #interrupt-cells = <1>; 38613541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 38713541cc3SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 38813541cc3SThierry Reding 38913541cc3SThierry Reding bus-range = <0x00 0xff>; 39013541cc3SThierry Reding #address-cells = <3>; 39113541cc3SThierry Reding #size-cells = <2>; 39213541cc3SThierry Reding 39313541cc3SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 39413541cc3SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 39513541cc3SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 39613541cc3SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 39713541cc3SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 39813541cc3SThierry Reding 39913541cc3SThierry Reding clocks = <&tegra_car TEGRA124_CLK_PCIE>, 40013541cc3SThierry Reding <&tegra_car TEGRA124_CLK_AFI>, 40113541cc3SThierry Reding <&tegra_car TEGRA124_CLK_PLL_E>, 40213541cc3SThierry Reding <&tegra_car TEGRA124_CLK_CML0>; 40313541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 40413541cc3SThierry Reding resets = <&tegra_car 70>, 40513541cc3SThierry Reding <&tegra_car 72>, 40613541cc3SThierry Reding <&tegra_car 74>; 40713541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 40813541cc3SThierry Reding status = "disabled"; 40913541cc3SThierry Reding 41013541cc3SThierry Reding pci@1,0 { 41113541cc3SThierry Reding device_type = "pci"; 41213541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 41313541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 41413541cc3SThierry Reding status = "disabled"; 41513541cc3SThierry Reding 41613541cc3SThierry Reding #address-cells = <3>; 41713541cc3SThierry Reding #size-cells = <2>; 41813541cc3SThierry Reding ranges; 41913541cc3SThierry Reding 42013541cc3SThierry Reding nvidia,num-lanes = <2>; 42113541cc3SThierry Reding }; 42213541cc3SThierry Reding 42313541cc3SThierry Reding pci@2,0 { 42413541cc3SThierry Reding device_type = "pci"; 42513541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 42613541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 42713541cc3SThierry Reding status = "disabled"; 42813541cc3SThierry Reding 42913541cc3SThierry Reding #address-cells = <3>; 43013541cc3SThierry Reding #size-cells = <2>; 43113541cc3SThierry Reding ranges; 43213541cc3SThierry Reding 43313541cc3SThierry Reding nvidia,num-lanes = <1>; 43413541cc3SThierry Reding }; 43513541cc3SThierry Reding }; 43613541cc3SThierry Reding 43713541cc3SThierry RedingBoard DTS: 43813541cc3SThierry Reding 43948c926cdSMarco Franchi pcie-controller@1003000 { 44013541cc3SThierry Reding status = "okay"; 44113541cc3SThierry Reding 44213541cc3SThierry Reding avddio-pex-supply = <&vdd_1v05_run>; 44313541cc3SThierry Reding dvddio-pex-supply = <&vdd_1v05_run>; 44413541cc3SThierry Reding avdd-pex-pll-supply = <&vdd_1v05_run>; 44513541cc3SThierry Reding hvdd-pex-supply = <&vdd_3v3_lp0>; 44613541cc3SThierry Reding hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>; 44713541cc3SThierry Reding vddio-pex-ctl-supply = <&vdd_3v3_lp0>; 44813541cc3SThierry Reding avdd-pll-erefe-supply = <&avdd_1v05_run>; 44913541cc3SThierry Reding 45013541cc3SThierry Reding /* Mini PCIe */ 45113541cc3SThierry Reding pci@1,0 { 45213541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 45313541cc3SThierry Reding phy-names = "pcie-0"; 45413541cc3SThierry Reding status = "okay"; 45513541cc3SThierry Reding }; 45613541cc3SThierry Reding 45713541cc3SThierry Reding /* Gigabit Ethernet */ 45813541cc3SThierry Reding pci@2,0 { 45913541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; 46013541cc3SThierry Reding phy-names = "pcie-0"; 46113541cc3SThierry Reding status = "okay"; 46213541cc3SThierry Reding }; 46313541cc3SThierry Reding }; 464528925c4SThierry Reding 465528925c4SThierry RedingTegra210: 466528925c4SThierry Reding--------- 467528925c4SThierry Reding 468528925c4SThierry RedingSoC DTSI: 469528925c4SThierry Reding 47048c926cdSMarco Franchi pcie-controller@1003000 { 471528925c4SThierry Reding compatible = "nvidia,tegra210-pcie"; 472528925c4SThierry Reding device_type = "pci"; 473528925c4SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 474528925c4SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 475528925c4SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 476528925c4SThierry Reding reg-names = "pads", "afi", "cs"; 477528925c4SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 478528925c4SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 479528925c4SThierry Reding interrupt-names = "intr", "msi"; 480528925c4SThierry Reding 481528925c4SThierry Reding #interrupt-cells = <1>; 482528925c4SThierry Reding interrupt-map-mask = <0 0 0 0>; 483528925c4SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 484528925c4SThierry Reding 485528925c4SThierry Reding bus-range = <0x00 0xff>; 486528925c4SThierry Reding #address-cells = <3>; 487528925c4SThierry Reding #size-cells = <2>; 488528925c4SThierry Reding 489528925c4SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 490528925c4SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 491528925c4SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 492528925c4SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 493528925c4SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 494528925c4SThierry Reding 495528925c4SThierry Reding clocks = <&tegra_car TEGRA210_CLK_PCIE>, 496528925c4SThierry Reding <&tegra_car TEGRA210_CLK_AFI>, 497528925c4SThierry Reding <&tegra_car TEGRA210_CLK_PLL_E>, 498528925c4SThierry Reding <&tegra_car TEGRA210_CLK_CML0>; 499528925c4SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 500528925c4SThierry Reding resets = <&tegra_car 70>, 501528925c4SThierry Reding <&tegra_car 72>, 502528925c4SThierry Reding <&tegra_car 74>; 503528925c4SThierry Reding reset-names = "pex", "afi", "pcie_x"; 504528925c4SThierry Reding status = "disabled"; 505528925c4SThierry Reding 506528925c4SThierry Reding pci@1,0 { 507528925c4SThierry Reding device_type = "pci"; 508528925c4SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 509528925c4SThierry Reding reg = <0x000800 0 0 0 0>; 510528925c4SThierry Reding status = "disabled"; 511528925c4SThierry Reding 512528925c4SThierry Reding #address-cells = <3>; 513528925c4SThierry Reding #size-cells = <2>; 514528925c4SThierry Reding ranges; 515528925c4SThierry Reding 516528925c4SThierry Reding nvidia,num-lanes = <4>; 517528925c4SThierry Reding }; 518528925c4SThierry Reding 519528925c4SThierry Reding pci@2,0 { 520528925c4SThierry Reding device_type = "pci"; 521528925c4SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 522528925c4SThierry Reding reg = <0x001000 0 0 0 0>; 523528925c4SThierry Reding status = "disabled"; 524528925c4SThierry Reding 525528925c4SThierry Reding #address-cells = <3>; 526528925c4SThierry Reding #size-cells = <2>; 527528925c4SThierry Reding ranges; 528528925c4SThierry Reding 529528925c4SThierry Reding nvidia,num-lanes = <1>; 530528925c4SThierry Reding }; 531528925c4SThierry Reding }; 532528925c4SThierry Reding 533528925c4SThierry RedingBoard DTS: 534528925c4SThierry Reding 53548c926cdSMarco Franchi pcie-controller@1003000 { 536528925c4SThierry Reding status = "okay"; 537528925c4SThierry Reding 538528925c4SThierry Reding avdd-pll-uerefe-supply = <&avdd_1v05_pll>; 539528925c4SThierry Reding hvddio-pex-supply = <&vdd_1v8>; 540528925c4SThierry Reding dvddio-pex-supply = <&vdd_pex_1v05>; 541528925c4SThierry Reding dvdd-pex-pll-supply = <&vdd_pex_1v05>; 542528925c4SThierry Reding hvdd-pex-pll-e-supply = <&vdd_1v8>; 543528925c4SThierry Reding vddio-pex-ctl-supply = <&vdd_1v8>; 544528925c4SThierry Reding 545528925c4SThierry Reding pci@1,0 { 546528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>, 547528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>, 548528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, 549528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>; 550528925c4SThierry Reding phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; 551528925c4SThierry Reding status = "okay"; 552528925c4SThierry Reding }; 553528925c4SThierry Reding 554528925c4SThierry Reding pci@2,0 { 555528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 556528925c4SThierry Reding phy-names = "pcie-0"; 557528925c4SThierry Reding status = "okay"; 558528925c4SThierry Reding }; 559528925c4SThierry Reding }; 560904fb8e4SManikanta Maddireddy 561904fb8e4SManikanta MaddireddyTegra186: 562904fb8e4SManikanta Maddireddy--------- 563904fb8e4SManikanta Maddireddy 564904fb8e4SManikanta MaddireddySoC DTSI: 565904fb8e4SManikanta Maddireddy 566904fb8e4SManikanta Maddireddy pcie@10003000 { 567904fb8e4SManikanta Maddireddy compatible = "nvidia,tegra186-pcie"; 568904fb8e4SManikanta Maddireddy power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>; 569904fb8e4SManikanta Maddireddy device_type = "pci"; 570904fb8e4SManikanta Maddireddy reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */ 571904fb8e4SManikanta Maddireddy 0x0 0x10003800 0x0 0x00000800 /* AFI registers */ 572904fb8e4SManikanta Maddireddy 0x0 0x40000000 0x0 0x10000000>; /* configuration space */ 573904fb8e4SManikanta Maddireddy reg-names = "pads", "afi", "cs"; 574904fb8e4SManikanta Maddireddy 575904fb8e4SManikanta Maddireddy interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 576904fb8e4SManikanta Maddireddy <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 577904fb8e4SManikanta Maddireddy interrupt-names = "intr", "msi"; 578904fb8e4SManikanta Maddireddy 579904fb8e4SManikanta Maddireddy #interrupt-cells = <1>; 580904fb8e4SManikanta Maddireddy interrupt-map-mask = <0 0 0 0>; 581904fb8e4SManikanta Maddireddy interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 582904fb8e4SManikanta Maddireddy 583904fb8e4SManikanta Maddireddy bus-range = <0x00 0xff>; 584904fb8e4SManikanta Maddireddy #address-cells = <3>; 585904fb8e4SManikanta Maddireddy #size-cells = <2>; 586904fb8e4SManikanta Maddireddy 587904fb8e4SManikanta Maddireddy ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */ 588904fb8e4SManikanta Maddireddy 0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */ 589904fb8e4SManikanta Maddireddy 0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */ 590904fb8e4SManikanta Maddireddy 0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */ 591904fb8e4SManikanta Maddireddy 0x82000000 0 0x50100000 0x0 0x50100000 0 0x07F00000 /* non-prefetchable memory (127 MiB) */ 592904fb8e4SManikanta Maddireddy 0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */ 593904fb8e4SManikanta Maddireddy 594904fb8e4SManikanta Maddireddy clocks = <&bpmp TEGRA186_CLK_AFI>, 595904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PCIE>, 596904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PLLE>; 597904fb8e4SManikanta Maddireddy clock-names = "afi", "pex", "pll_e"; 598904fb8e4SManikanta Maddireddy 599904fb8e4SManikanta Maddireddy resets = <&bpmp TEGRA186_RESET_AFI>, 600904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIE>, 601904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIEXCLK>; 602904fb8e4SManikanta Maddireddy reset-names = "afi", "pex", "pcie_x"; 603904fb8e4SManikanta Maddireddy 604904fb8e4SManikanta Maddireddy status = "disabled"; 605904fb8e4SManikanta Maddireddy 606904fb8e4SManikanta Maddireddy pci@1,0 { 607904fb8e4SManikanta Maddireddy device_type = "pci"; 608904fb8e4SManikanta Maddireddy assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>; 609904fb8e4SManikanta Maddireddy reg = <0x000800 0 0 0 0>; 610904fb8e4SManikanta Maddireddy status = "disabled"; 611904fb8e4SManikanta Maddireddy 612904fb8e4SManikanta Maddireddy #address-cells = <3>; 613904fb8e4SManikanta Maddireddy #size-cells = <2>; 614904fb8e4SManikanta Maddireddy ranges; 615904fb8e4SManikanta Maddireddy 616904fb8e4SManikanta Maddireddy nvidia,num-lanes = <2>; 617904fb8e4SManikanta Maddireddy }; 618904fb8e4SManikanta Maddireddy 619904fb8e4SManikanta Maddireddy pci@2,0 { 620904fb8e4SManikanta Maddireddy device_type = "pci"; 621904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>; 622904fb8e4SManikanta Maddireddy reg = <0x001000 0 0 0 0>; 623904fb8e4SManikanta Maddireddy status = "disabled"; 624904fb8e4SManikanta Maddireddy 625904fb8e4SManikanta Maddireddy #address-cells = <3>; 626904fb8e4SManikanta Maddireddy #size-cells = <2>; 627904fb8e4SManikanta Maddireddy ranges; 628904fb8e4SManikanta Maddireddy 629904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 630904fb8e4SManikanta Maddireddy }; 631904fb8e4SManikanta Maddireddy 632904fb8e4SManikanta Maddireddy pci@3,0 { 633904fb8e4SManikanta Maddireddy device_type = "pci"; 634904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>; 635904fb8e4SManikanta Maddireddy reg = <0x001800 0 0 0 0>; 636904fb8e4SManikanta Maddireddy status = "disabled"; 637904fb8e4SManikanta Maddireddy 638904fb8e4SManikanta Maddireddy #address-cells = <3>; 639904fb8e4SManikanta Maddireddy #size-cells = <2>; 640904fb8e4SManikanta Maddireddy ranges; 641904fb8e4SManikanta Maddireddy 642904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 643904fb8e4SManikanta Maddireddy }; 644904fb8e4SManikanta Maddireddy }; 645904fb8e4SManikanta Maddireddy 646904fb8e4SManikanta MaddireddyBoard DTS: 647904fb8e4SManikanta Maddireddy 648904fb8e4SManikanta Maddireddy pcie@10003000 { 649904fb8e4SManikanta Maddireddy status = "okay"; 650904fb8e4SManikanta Maddireddy 651904fb8e4SManikanta Maddireddy dvdd-pex-supply = <&vdd_pex>; 652904fb8e4SManikanta Maddireddy hvdd-pex-pll-supply = <&vdd_1v8>; 653904fb8e4SManikanta Maddireddy hvdd-pex-supply = <&vdd_1v8>; 654904fb8e4SManikanta Maddireddy vddio-pexctl-aud-supply = <&vdd_1v8>; 655904fb8e4SManikanta Maddireddy 656904fb8e4SManikanta Maddireddy pci@1,0 { 657904fb8e4SManikanta Maddireddy nvidia,num-lanes = <4>; 658904fb8e4SManikanta Maddireddy status = "okay"; 659904fb8e4SManikanta Maddireddy }; 660904fb8e4SManikanta Maddireddy 661904fb8e4SManikanta Maddireddy pci@2,0 { 662904fb8e4SManikanta Maddireddy nvidia,num-lanes = <0>; 663904fb8e4SManikanta Maddireddy status = "disabled"; 664904fb8e4SManikanta Maddireddy }; 665904fb8e4SManikanta Maddireddy 666904fb8e4SManikanta Maddireddy pci@3,0 { 667904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 668904fb8e4SManikanta Maddireddy status = "disabled"; 669904fb8e4SManikanta Maddireddy }; 670904fb8e4SManikanta Maddireddy }; 671