1d1523b52SThierry RedingNVIDIA Tegra PCIe controller 2d1523b52SThierry Reding 3d1523b52SThierry RedingRequired properties: 4*904fb8e4SManikanta Maddireddy- compatible: Must be: 5*904fb8e4SManikanta Maddireddy - "nvidia,tegra20-pcie": for Tegra20 6*904fb8e4SManikanta Maddireddy - "nvidia,tegra30-pcie": for Tegra30 7*904fb8e4SManikanta Maddireddy - "nvidia,tegra124-pcie": for Tegra124 and Tegra132 8*904fb8e4SManikanta Maddireddy - "nvidia,tegra210-pcie": for Tegra210 9*904fb8e4SManikanta Maddireddy - "nvidia,tegra186-pcie": for Tegra186 10*904fb8e4SManikanta Maddireddy- power-domains: To ungate power partition by BPMP powergate driver. Must 11*904fb8e4SManikanta Maddireddy contain BPMP phandle and PCIe power partition ID. This is required only 12*904fb8e4SManikanta 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 6813541cc3SThierry RedingRequired properties on Tegra124 and later (deprecated): 697f1f054bSThierry Reding- phys: Must contain an entry for each entry in phy-names. 707f1f054bSThierry Reding- phy-names: Must include the following entries: 717f1f054bSThierry Reding - pcie 727f1f054bSThierry Reding 7313541cc3SThierry RedingThese properties are deprecated in favour of per-lane PHYs define in each of 7413541cc3SThierry Redingthe root ports (see below). 7513541cc3SThierry Reding 76e4958675SThierry RedingPower supplies for Tegra20: 77e4958675SThierry Reding- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 78e4958675SThierry Reding- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 79e4958675SThierry Reding- avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 80e4958675SThierry Reding supply 1.05 V. 81e4958675SThierry Reding- avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must 82e4958675SThierry Reding supply 1.05 V. 83e4958675SThierry Reding- vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V. 84e4958675SThierry Reding 85e4958675SThierry RedingPower supplies for Tegra30: 86e4958675SThierry Reding- Required: 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-ctl-supply: Power supply for PCIe control I/O partition. Must 92e4958675SThierry Reding supply 1.8 V. 93e4958675SThierry Reding - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 94e4958675SThierry Reding Must supply 3.3 V. 95e4958675SThierry Reding- Optional: 96e4958675SThierry Reding - If lanes 0 to 3 are used: 97e4958675SThierry Reding - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 98e4958675SThierry Reding - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 99e4958675SThierry Reding - If lanes 4 or 5 are used: 100e4958675SThierry Reding - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 101e4958675SThierry Reding - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 102e4958675SThierry Reding 1037f1f054bSThierry RedingPower supplies for Tegra124: 1047f1f054bSThierry Reding- Required: 1057f1f054bSThierry Reding - avddio-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V. 1067f1f054bSThierry Reding - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 1077f1f054bSThierry Reding - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 1087f1f054bSThierry Reding supply 1.05 V. 1097f1f054bSThierry Reding - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 1107f1f054bSThierry Reding Must supply 3.3 V. 1117f1f054bSThierry Reding - hvdd-pex-pll-e-supply: High-voltage supply for PLLE (shared with USB3). 1127f1f054bSThierry Reding Must supply 3.3 V. 1137f1f054bSThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 1147f1f054bSThierry Reding supply 2.8-3.3 V. 1157f1f054bSThierry Reding - avdd-pll-erefe-supply: Power supply for PLLE (shared with USB3). Must 1167f1f054bSThierry Reding supply 1.05 V. 1177f1f054bSThierry Reding 118528925c4SThierry RedingPower supplies for Tegra210: 119528925c4SThierry Reding- Required: 120528925c4SThierry Reding - avdd-pll-uerefe-supply: Power supply for PLLE (shared with USB3). Must 121528925c4SThierry Reding supply 1.05 V. 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 - dvdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must 126528925c4SThierry Reding supply 1.05 V. 127528925c4SThierry Reding - hvdd-pex-pll-e-supply: High-voltage supply for PLLE (shared with USB3). 128528925c4SThierry Reding Must supply 3.3 V. 129528925c4SThierry Reding - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must 130528925c4SThierry Reding supply 1.8 V. 131528925c4SThierry Reding 132*904fb8e4SManikanta MaddireddyPower supplies for Tegra186: 133*904fb8e4SManikanta Maddireddy- Required: 134*904fb8e4SManikanta Maddireddy - dvdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V. 135*904fb8e4SManikanta Maddireddy - hvdd-pex-pll-supply: High-voltage supply for PLLE (shared with USB3). Must 136*904fb8e4SManikanta Maddireddy supply 1.8 V. 137*904fb8e4SManikanta Maddireddy - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks. 138*904fb8e4SManikanta Maddireddy Must supply 1.8 V. 139*904fb8e4SManikanta Maddireddy - vddio-pexctl-aud-supply: Power supply for PCIe side band signals. Must 140*904fb8e4SManikanta Maddireddy supply 1.8 V. 141*904fb8e4SManikanta Maddireddy 142d1523b52SThierry RedingRoot ports are defined as subnodes of the PCIe controller node. 143d1523b52SThierry Reding 144d1523b52SThierry RedingRequired properties: 145d1523b52SThierry Reding- device_type: Must be "pci" 146d1523b52SThierry Reding- assigned-addresses: Address and size of the port configuration registers 147d1523b52SThierry Reding- reg: PCI bus address of the root port 148d1523b52SThierry Reding- #address-cells: Must be 3 149d1523b52SThierry Reding- #size-cells: Must be 2 150d1523b52SThierry Reding- ranges: Sub-ranges distributed from the PCIe controller node. An empty 151d1523b52SThierry Reding property is sufficient. 152d1523b52SThierry Reding- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations 153d1523b52SThierry Reding are: 154d1523b52SThierry Reding - Root port 0 uses 4 lanes, root port 1 is unused. 155d1523b52SThierry Reding - Both root ports use 2 lanes. 156d1523b52SThierry Reding 15713541cc3SThierry RedingRequired properties for Tegra124 and later: 15813541cc3SThierry Reding- phys: Must contain an phandle to a PHY for each entry in phy-names. 15913541cc3SThierry Reding- phy-names: Must include an entry for each active lane. Note that the number 16013541cc3SThierry Reding of entries does not have to (though usually will) be equal to the specified 16113541cc3SThierry Reding number of lanes in the nvidia,num-lanes property. Entries are of the form 16213541cc3SThierry Reding "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes. 16313541cc3SThierry Reding 16413541cc3SThierry RedingExamples: 16513541cc3SThierry Reding========= 16613541cc3SThierry Reding 16713541cc3SThierry RedingTegra20: 16813541cc3SThierry Reding-------- 169d1523b52SThierry Reding 170d1523b52SThierry RedingSoC DTSI: 171d1523b52SThierry Reding 17213541cc3SThierry Reding pcie-controller@80003000 { 173d1523b52SThierry Reding compatible = "nvidia,tegra20-pcie"; 174d1523b52SThierry Reding device_type = "pci"; 175d1523b52SThierry Reding reg = <0x80003000 0x00000800 /* PADS registers */ 176d1523b52SThierry Reding 0x80003800 0x00000200 /* AFI registers */ 177d1523b52SThierry Reding 0x90000000 0x10000000>; /* configuration space */ 178d1523b52SThierry Reding reg-names = "pads", "afi", "cs"; 179d1523b52SThierry Reding interrupts = <0 98 0x04 /* controller interrupt */ 180d1523b52SThierry Reding 0 99 0x04>; /* MSI interrupt */ 181d1523b52SThierry Reding interrupt-names = "intr", "msi"; 182d1523b52SThierry Reding 18397070bd4SLucas Stach #interrupt-cells = <1>; 18497070bd4SLucas Stach interrupt-map-mask = <0 0 0 0>; 18597070bd4SLucas Stach interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 18697070bd4SLucas Stach 187d1523b52SThierry Reding bus-range = <0x00 0xff>; 188d1523b52SThierry Reding #address-cells = <3>; 189d1523b52SThierry Reding #size-cells = <2>; 190d1523b52SThierry Reding 191d1523b52SThierry Reding ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000 /* port 0 registers */ 192d1523b52SThierry Reding 0x82000000 0 0x80001000 0x80001000 0 0x00001000 /* port 1 registers */ 193d1523b52SThierry Reding 0x81000000 0 0 0x82000000 0 0x00010000 /* downstream I/O */ 194d1523b52SThierry Reding 0x82000000 0 0xa0000000 0xa0000000 0 0x10000000 /* non-prefetchable memory */ 195d1523b52SThierry Reding 0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */ 196d1523b52SThierry Reding 19707999587SStephen Warren clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>; 19807999587SStephen Warren clock-names = "pex", "afi", "pll_e"; 19907999587SStephen Warren resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>; 20007999587SStephen Warren reset-names = "pex", "afi", "pcie_x"; 201d1523b52SThierry Reding status = "disabled"; 202d1523b52SThierry Reding 203d1523b52SThierry Reding pci@1,0 { 204d1523b52SThierry Reding device_type = "pci"; 205d1523b52SThierry Reding assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>; 206d1523b52SThierry Reding reg = <0x000800 0 0 0 0>; 207d1523b52SThierry Reding status = "disabled"; 208d1523b52SThierry Reding 209d1523b52SThierry Reding #address-cells = <3>; 210d1523b52SThierry Reding #size-cells = <2>; 211d1523b52SThierry Reding 212d1523b52SThierry Reding ranges; 213d1523b52SThierry Reding 214d1523b52SThierry Reding nvidia,num-lanes = <2>; 215d1523b52SThierry Reding }; 216d1523b52SThierry Reding 217d1523b52SThierry Reding pci@2,0 { 218d1523b52SThierry Reding device_type = "pci"; 219d1523b52SThierry Reding assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>; 220d1523b52SThierry Reding reg = <0x001000 0 0 0 0>; 221d1523b52SThierry Reding status = "disabled"; 222d1523b52SThierry Reding 223d1523b52SThierry Reding #address-cells = <3>; 224d1523b52SThierry Reding #size-cells = <2>; 225d1523b52SThierry Reding 226d1523b52SThierry Reding ranges; 227d1523b52SThierry Reding 228d1523b52SThierry Reding nvidia,num-lanes = <2>; 229d1523b52SThierry Reding }; 230d1523b52SThierry Reding }; 231d1523b52SThierry Reding 232d1523b52SThierry RedingBoard DTS: 233d1523b52SThierry Reding 23413541cc3SThierry Reding pcie-controller@80003000 { 235d1523b52SThierry Reding status = "okay"; 236d1523b52SThierry Reding 237d1523b52SThierry Reding vdd-supply = <&pci_vdd_reg>; 238d1523b52SThierry Reding pex-clk-supply = <&pci_clk_reg>; 239d1523b52SThierry Reding 240d1523b52SThierry Reding /* root port 00:01.0 */ 241d1523b52SThierry Reding pci@1,0 { 242d1523b52SThierry Reding status = "okay"; 243d1523b52SThierry Reding 244d1523b52SThierry Reding /* bridge 01:00.0 (optional) */ 245d1523b52SThierry Reding pci@0,0 { 246d1523b52SThierry Reding reg = <0x010000 0 0 0 0>; 247d1523b52SThierry Reding 248d1523b52SThierry Reding #address-cells = <3>; 249d1523b52SThierry Reding #size-cells = <2>; 250d1523b52SThierry Reding 251d1523b52SThierry Reding device_type = "pci"; 252d1523b52SThierry Reding 253d1523b52SThierry Reding /* endpoint 02:00.0 */ 254d1523b52SThierry Reding pci@0,0 { 255d1523b52SThierry Reding reg = <0x020000 0 0 0 0>; 256d1523b52SThierry Reding }; 257d1523b52SThierry Reding }; 258d1523b52SThierry Reding }; 259d1523b52SThierry Reding }; 260d1523b52SThierry Reding 261d1523b52SThierry RedingNote that devices on the PCI bus are dynamically discovered using PCI's bus 262d1523b52SThierry Redingenumeration and therefore don't need corresponding device nodes in DT. However 263d1523b52SThierry Redingif a device on the PCI bus provides a non-probeable bus such as I2C or SPI, 264d1523b52SThierry Redingdevice nodes need to be added in order to allow the bus' children to be 265d1523b52SThierry Redinginstantiated at the proper location in the operating system's device tree (as 266d1523b52SThierry Redingillustrated by the optional nodes in the example above). 26713541cc3SThierry Reding 26813541cc3SThierry RedingTegra30: 26913541cc3SThierry Reding-------- 27013541cc3SThierry Reding 27113541cc3SThierry RedingSoC DTSI: 27213541cc3SThierry Reding 27313541cc3SThierry Reding pcie-controller@00003000 { 27413541cc3SThierry Reding compatible = "nvidia,tegra30-pcie"; 27513541cc3SThierry Reding device_type = "pci"; 27613541cc3SThierry Reding reg = <0x00003000 0x00000800 /* PADS registers */ 27713541cc3SThierry Reding 0x00003800 0x00000200 /* AFI registers */ 27813541cc3SThierry Reding 0x10000000 0x10000000>; /* configuration space */ 27913541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 28013541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */ 28113541cc3SThierry Reding GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 28213541cc3SThierry Reding interrupt-names = "intr", "msi"; 28313541cc3SThierry Reding 28413541cc3SThierry Reding #interrupt-cells = <1>; 28513541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 28613541cc3SThierry Reding interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 28713541cc3SThierry Reding 28813541cc3SThierry Reding bus-range = <0x00 0xff>; 28913541cc3SThierry Reding #address-cells = <3>; 29013541cc3SThierry Reding #size-cells = <2>; 29113541cc3SThierry Reding 29213541cc3SThierry Reding ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */ 29313541cc3SThierry Reding 0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */ 29413541cc3SThierry Reding 0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */ 29513541cc3SThierry Reding 0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */ 29613541cc3SThierry Reding 0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */ 29713541cc3SThierry Reding 0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */ 29813541cc3SThierry Reding 29913541cc3SThierry Reding clocks = <&tegra_car TEGRA30_CLK_PCIE>, 30013541cc3SThierry Reding <&tegra_car TEGRA30_CLK_AFI>, 30113541cc3SThierry Reding <&tegra_car TEGRA30_CLK_PLL_E>, 30213541cc3SThierry Reding <&tegra_car TEGRA30_CLK_CML0>; 30313541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 30413541cc3SThierry Reding resets = <&tegra_car 70>, 30513541cc3SThierry Reding <&tegra_car 72>, 30613541cc3SThierry Reding <&tegra_car 74>; 30713541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 30813541cc3SThierry Reding status = "disabled"; 30913541cc3SThierry Reding 31013541cc3SThierry Reding pci@1,0 { 31113541cc3SThierry Reding device_type = "pci"; 31213541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>; 31313541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 31413541cc3SThierry Reding status = "disabled"; 31513541cc3SThierry Reding 31613541cc3SThierry Reding #address-cells = <3>; 31713541cc3SThierry Reding #size-cells = <2>; 31813541cc3SThierry Reding ranges; 31913541cc3SThierry Reding 32013541cc3SThierry Reding nvidia,num-lanes = <2>; 32113541cc3SThierry Reding }; 32213541cc3SThierry Reding 32313541cc3SThierry Reding pci@2,0 { 32413541cc3SThierry Reding device_type = "pci"; 32513541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>; 32613541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 32713541cc3SThierry Reding status = "disabled"; 32813541cc3SThierry Reding 32913541cc3SThierry Reding #address-cells = <3>; 33013541cc3SThierry Reding #size-cells = <2>; 33113541cc3SThierry Reding ranges; 33213541cc3SThierry Reding 33313541cc3SThierry Reding nvidia,num-lanes = <2>; 33413541cc3SThierry Reding }; 33513541cc3SThierry Reding 33613541cc3SThierry Reding pci@3,0 { 33713541cc3SThierry Reding device_type = "pci"; 33813541cc3SThierry Reding assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>; 33913541cc3SThierry Reding reg = <0x001800 0 0 0 0>; 34013541cc3SThierry Reding status = "disabled"; 34113541cc3SThierry Reding 34213541cc3SThierry Reding #address-cells = <3>; 34313541cc3SThierry Reding #size-cells = <2>; 34413541cc3SThierry Reding ranges; 34513541cc3SThierry Reding 34613541cc3SThierry Reding nvidia,num-lanes = <2>; 34713541cc3SThierry Reding }; 34813541cc3SThierry Reding }; 34913541cc3SThierry Reding 35013541cc3SThierry RedingBoard DTS: 35113541cc3SThierry Reding 35213541cc3SThierry Reding pcie-controller@00003000 { 35313541cc3SThierry Reding status = "okay"; 35413541cc3SThierry Reding 35513541cc3SThierry Reding avdd-pexa-supply = <&ldo1_reg>; 35613541cc3SThierry Reding vdd-pexa-supply = <&ldo1_reg>; 35713541cc3SThierry Reding avdd-pexb-supply = <&ldo1_reg>; 35813541cc3SThierry Reding vdd-pexb-supply = <&ldo1_reg>; 35913541cc3SThierry Reding avdd-pex-pll-supply = <&ldo1_reg>; 36013541cc3SThierry Reding avdd-plle-supply = <&ldo1_reg>; 36113541cc3SThierry Reding vddio-pex-ctl-supply = <&sys_3v3_reg>; 36213541cc3SThierry Reding hvdd-pex-supply = <&sys_3v3_pexs_reg>; 36313541cc3SThierry Reding 36413541cc3SThierry Reding pci@1,0 { 36513541cc3SThierry Reding status = "okay"; 36613541cc3SThierry Reding }; 36713541cc3SThierry Reding 36813541cc3SThierry Reding pci@3,0 { 36913541cc3SThierry Reding status = "okay"; 37013541cc3SThierry Reding }; 37113541cc3SThierry Reding }; 37213541cc3SThierry Reding 37313541cc3SThierry RedingTegra124: 37413541cc3SThierry Reding--------- 37513541cc3SThierry Reding 37613541cc3SThierry RedingSoC DTSI: 37713541cc3SThierry Reding 37813541cc3SThierry Reding pcie-controller@01003000 { 37913541cc3SThierry Reding compatible = "nvidia,tegra124-pcie"; 38013541cc3SThierry Reding device_type = "pci"; 38113541cc3SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 38213541cc3SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 38313541cc3SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 38413541cc3SThierry Reding reg-names = "pads", "afi", "cs"; 38513541cc3SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 38613541cc3SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 38713541cc3SThierry Reding interrupt-names = "intr", "msi"; 38813541cc3SThierry Reding 38913541cc3SThierry Reding #interrupt-cells = <1>; 39013541cc3SThierry Reding interrupt-map-mask = <0 0 0 0>; 39113541cc3SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 39213541cc3SThierry Reding 39313541cc3SThierry Reding bus-range = <0x00 0xff>; 39413541cc3SThierry Reding #address-cells = <3>; 39513541cc3SThierry Reding #size-cells = <2>; 39613541cc3SThierry Reding 39713541cc3SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 39813541cc3SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 39913541cc3SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 40013541cc3SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 40113541cc3SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 40213541cc3SThierry Reding 40313541cc3SThierry Reding clocks = <&tegra_car TEGRA124_CLK_PCIE>, 40413541cc3SThierry Reding <&tegra_car TEGRA124_CLK_AFI>, 40513541cc3SThierry Reding <&tegra_car TEGRA124_CLK_PLL_E>, 40613541cc3SThierry Reding <&tegra_car TEGRA124_CLK_CML0>; 40713541cc3SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 40813541cc3SThierry Reding resets = <&tegra_car 70>, 40913541cc3SThierry Reding <&tegra_car 72>, 41013541cc3SThierry Reding <&tegra_car 74>; 41113541cc3SThierry Reding reset-names = "pex", "afi", "pcie_x"; 41213541cc3SThierry Reding status = "disabled"; 41313541cc3SThierry Reding 41413541cc3SThierry Reding pci@1,0 { 41513541cc3SThierry Reding device_type = "pci"; 41613541cc3SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 41713541cc3SThierry Reding reg = <0x000800 0 0 0 0>; 41813541cc3SThierry Reding status = "disabled"; 41913541cc3SThierry Reding 42013541cc3SThierry Reding #address-cells = <3>; 42113541cc3SThierry Reding #size-cells = <2>; 42213541cc3SThierry Reding ranges; 42313541cc3SThierry Reding 42413541cc3SThierry Reding nvidia,num-lanes = <2>; 42513541cc3SThierry Reding }; 42613541cc3SThierry Reding 42713541cc3SThierry Reding pci@2,0 { 42813541cc3SThierry Reding device_type = "pci"; 42913541cc3SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 43013541cc3SThierry Reding reg = <0x001000 0 0 0 0>; 43113541cc3SThierry Reding status = "disabled"; 43213541cc3SThierry Reding 43313541cc3SThierry Reding #address-cells = <3>; 43413541cc3SThierry Reding #size-cells = <2>; 43513541cc3SThierry Reding ranges; 43613541cc3SThierry Reding 43713541cc3SThierry Reding nvidia,num-lanes = <1>; 43813541cc3SThierry Reding }; 43913541cc3SThierry Reding }; 44013541cc3SThierry Reding 44113541cc3SThierry RedingBoard DTS: 44213541cc3SThierry Reding 44313541cc3SThierry Reding pcie-controller@01003000 { 44413541cc3SThierry Reding status = "okay"; 44513541cc3SThierry Reding 44613541cc3SThierry Reding avddio-pex-supply = <&vdd_1v05_run>; 44713541cc3SThierry Reding dvddio-pex-supply = <&vdd_1v05_run>; 44813541cc3SThierry Reding avdd-pex-pll-supply = <&vdd_1v05_run>; 44913541cc3SThierry Reding hvdd-pex-supply = <&vdd_3v3_lp0>; 45013541cc3SThierry Reding hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>; 45113541cc3SThierry Reding vddio-pex-ctl-supply = <&vdd_3v3_lp0>; 45213541cc3SThierry Reding avdd-pll-erefe-supply = <&avdd_1v05_run>; 45313541cc3SThierry Reding 45413541cc3SThierry Reding /* Mini PCIe */ 45513541cc3SThierry Reding pci@1,0 { 45613541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 45713541cc3SThierry Reding phy-names = "pcie-0"; 45813541cc3SThierry Reding status = "okay"; 45913541cc3SThierry Reding }; 46013541cc3SThierry Reding 46113541cc3SThierry Reding /* Gigabit Ethernet */ 46213541cc3SThierry Reding pci@2,0 { 46313541cc3SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>; 46413541cc3SThierry Reding phy-names = "pcie-0"; 46513541cc3SThierry Reding status = "okay"; 46613541cc3SThierry Reding }; 46713541cc3SThierry Reding }; 468528925c4SThierry Reding 469528925c4SThierry RedingTegra210: 470528925c4SThierry Reding--------- 471528925c4SThierry Reding 472528925c4SThierry RedingSoC DTSI: 473528925c4SThierry Reding 474528925c4SThierry Reding pcie-controller@01003000 { 475528925c4SThierry Reding compatible = "nvidia,tegra210-pcie"; 476528925c4SThierry Reding device_type = "pci"; 477528925c4SThierry Reding reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */ 478528925c4SThierry Reding 0x0 0x01003800 0x0 0x00000800 /* AFI registers */ 479528925c4SThierry Reding 0x0 0x02000000 0x0 0x10000000>; /* configuration space */ 480528925c4SThierry Reding reg-names = "pads", "afi", "cs"; 481528925c4SThierry Reding interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 482528925c4SThierry Reding <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 483528925c4SThierry Reding interrupt-names = "intr", "msi"; 484528925c4SThierry Reding 485528925c4SThierry Reding #interrupt-cells = <1>; 486528925c4SThierry Reding interrupt-map-mask = <0 0 0 0>; 487528925c4SThierry Reding interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 488528925c4SThierry Reding 489528925c4SThierry Reding bus-range = <0x00 0xff>; 490528925c4SThierry Reding #address-cells = <3>; 491528925c4SThierry Reding #size-cells = <2>; 492528925c4SThierry Reding 493528925c4SThierry Reding ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */ 494528925c4SThierry Reding 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */ 495528925c4SThierry Reding 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */ 496528925c4SThierry Reding 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */ 497528925c4SThierry Reding 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */ 498528925c4SThierry Reding 499528925c4SThierry Reding clocks = <&tegra_car TEGRA210_CLK_PCIE>, 500528925c4SThierry Reding <&tegra_car TEGRA210_CLK_AFI>, 501528925c4SThierry Reding <&tegra_car TEGRA210_CLK_PLL_E>, 502528925c4SThierry Reding <&tegra_car TEGRA210_CLK_CML0>; 503528925c4SThierry Reding clock-names = "pex", "afi", "pll_e", "cml"; 504528925c4SThierry Reding resets = <&tegra_car 70>, 505528925c4SThierry Reding <&tegra_car 72>, 506528925c4SThierry Reding <&tegra_car 74>; 507528925c4SThierry Reding reset-names = "pex", "afi", "pcie_x"; 508528925c4SThierry Reding status = "disabled"; 509528925c4SThierry Reding 510528925c4SThierry Reding pci@1,0 { 511528925c4SThierry Reding device_type = "pci"; 512528925c4SThierry Reding assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>; 513528925c4SThierry Reding reg = <0x000800 0 0 0 0>; 514528925c4SThierry Reding status = "disabled"; 515528925c4SThierry Reding 516528925c4SThierry Reding #address-cells = <3>; 517528925c4SThierry Reding #size-cells = <2>; 518528925c4SThierry Reding ranges; 519528925c4SThierry Reding 520528925c4SThierry Reding nvidia,num-lanes = <4>; 521528925c4SThierry Reding }; 522528925c4SThierry Reding 523528925c4SThierry Reding pci@2,0 { 524528925c4SThierry Reding device_type = "pci"; 525528925c4SThierry Reding assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>; 526528925c4SThierry Reding reg = <0x001000 0 0 0 0>; 527528925c4SThierry Reding status = "disabled"; 528528925c4SThierry Reding 529528925c4SThierry Reding #address-cells = <3>; 530528925c4SThierry Reding #size-cells = <2>; 531528925c4SThierry Reding ranges; 532528925c4SThierry Reding 533528925c4SThierry Reding nvidia,num-lanes = <1>; 534528925c4SThierry Reding }; 535528925c4SThierry Reding }; 536528925c4SThierry Reding 537528925c4SThierry RedingBoard DTS: 538528925c4SThierry Reding 539528925c4SThierry Reding pcie-controller@01003000 { 540528925c4SThierry Reding status = "okay"; 541528925c4SThierry Reding 542528925c4SThierry Reding avdd-pll-uerefe-supply = <&avdd_1v05_pll>; 543528925c4SThierry Reding hvddio-pex-supply = <&vdd_1v8>; 544528925c4SThierry Reding dvddio-pex-supply = <&vdd_pex_1v05>; 545528925c4SThierry Reding dvdd-pex-pll-supply = <&vdd_pex_1v05>; 546528925c4SThierry Reding hvdd-pex-pll-e-supply = <&vdd_1v8>; 547528925c4SThierry Reding vddio-pex-ctl-supply = <&vdd_1v8>; 548528925c4SThierry Reding 549528925c4SThierry Reding pci@1,0 { 550528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>, 551528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>, 552528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>, 553528925c4SThierry Reding <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>; 554528925c4SThierry Reding phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3"; 555528925c4SThierry Reding status = "okay"; 556528925c4SThierry Reding }; 557528925c4SThierry Reding 558528925c4SThierry Reding pci@2,0 { 559528925c4SThierry Reding phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>; 560528925c4SThierry Reding phy-names = "pcie-0"; 561528925c4SThierry Reding status = "okay"; 562528925c4SThierry Reding }; 563528925c4SThierry Reding }; 564*904fb8e4SManikanta Maddireddy 565*904fb8e4SManikanta MaddireddyTegra186: 566*904fb8e4SManikanta Maddireddy--------- 567*904fb8e4SManikanta Maddireddy 568*904fb8e4SManikanta MaddireddySoC DTSI: 569*904fb8e4SManikanta Maddireddy 570*904fb8e4SManikanta Maddireddy pcie@10003000 { 571*904fb8e4SManikanta Maddireddy compatible = "nvidia,tegra186-pcie"; 572*904fb8e4SManikanta Maddireddy power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>; 573*904fb8e4SManikanta Maddireddy device_type = "pci"; 574*904fb8e4SManikanta Maddireddy reg = <0x0 0x10003000 0x0 0x00000800 /* PADS registers */ 575*904fb8e4SManikanta Maddireddy 0x0 0x10003800 0x0 0x00000800 /* AFI registers */ 576*904fb8e4SManikanta Maddireddy 0x0 0x40000000 0x0 0x10000000>; /* configuration space */ 577*904fb8e4SManikanta Maddireddy reg-names = "pads", "afi", "cs"; 578*904fb8e4SManikanta Maddireddy 579*904fb8e4SManikanta Maddireddy interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */ 580*904fb8e4SManikanta Maddireddy <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */ 581*904fb8e4SManikanta Maddireddy interrupt-names = "intr", "msi"; 582*904fb8e4SManikanta Maddireddy 583*904fb8e4SManikanta Maddireddy #interrupt-cells = <1>; 584*904fb8e4SManikanta Maddireddy interrupt-map-mask = <0 0 0 0>; 585*904fb8e4SManikanta Maddireddy interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 586*904fb8e4SManikanta Maddireddy 587*904fb8e4SManikanta Maddireddy bus-range = <0x00 0xff>; 588*904fb8e4SManikanta Maddireddy #address-cells = <3>; 589*904fb8e4SManikanta Maddireddy #size-cells = <2>; 590*904fb8e4SManikanta Maddireddy 591*904fb8e4SManikanta Maddireddy ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000 /* port 0 configuration space */ 592*904fb8e4SManikanta Maddireddy 0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000 /* port 1 configuration space */ 593*904fb8e4SManikanta Maddireddy 0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000 /* port 2 configuration space */ 594*904fb8e4SManikanta Maddireddy 0x81000000 0 0x0 0x0 0x50000000 0 0x00010000 /* downstream I/O (64 KiB) */ 595*904fb8e4SManikanta Maddireddy 0x82000000 0 0x50100000 0x0 0x50100000 0 0x07F00000 /* non-prefetchable memory (127 MiB) */ 596*904fb8e4SManikanta Maddireddy 0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */ 597*904fb8e4SManikanta Maddireddy 598*904fb8e4SManikanta Maddireddy clocks = <&bpmp TEGRA186_CLK_AFI>, 599*904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PCIE>, 600*904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_CLK_PLLE>; 601*904fb8e4SManikanta Maddireddy clock-names = "afi", "pex", "pll_e"; 602*904fb8e4SManikanta Maddireddy 603*904fb8e4SManikanta Maddireddy resets = <&bpmp TEGRA186_RESET_AFI>, 604*904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIE>, 605*904fb8e4SManikanta Maddireddy <&bpmp TEGRA186_RESET_PCIEXCLK>; 606*904fb8e4SManikanta Maddireddy reset-names = "afi", "pex", "pcie_x"; 607*904fb8e4SManikanta Maddireddy 608*904fb8e4SManikanta Maddireddy status = "disabled"; 609*904fb8e4SManikanta Maddireddy 610*904fb8e4SManikanta Maddireddy pci@1,0 { 611*904fb8e4SManikanta Maddireddy device_type = "pci"; 612*904fb8e4SManikanta Maddireddy assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>; 613*904fb8e4SManikanta Maddireddy reg = <0x000800 0 0 0 0>; 614*904fb8e4SManikanta Maddireddy status = "disabled"; 615*904fb8e4SManikanta Maddireddy 616*904fb8e4SManikanta Maddireddy #address-cells = <3>; 617*904fb8e4SManikanta Maddireddy #size-cells = <2>; 618*904fb8e4SManikanta Maddireddy ranges; 619*904fb8e4SManikanta Maddireddy 620*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <2>; 621*904fb8e4SManikanta Maddireddy }; 622*904fb8e4SManikanta Maddireddy 623*904fb8e4SManikanta Maddireddy pci@2,0 { 624*904fb8e4SManikanta Maddireddy device_type = "pci"; 625*904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>; 626*904fb8e4SManikanta Maddireddy reg = <0x001000 0 0 0 0>; 627*904fb8e4SManikanta Maddireddy status = "disabled"; 628*904fb8e4SManikanta Maddireddy 629*904fb8e4SManikanta Maddireddy #address-cells = <3>; 630*904fb8e4SManikanta Maddireddy #size-cells = <2>; 631*904fb8e4SManikanta Maddireddy ranges; 632*904fb8e4SManikanta Maddireddy 633*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 634*904fb8e4SManikanta Maddireddy }; 635*904fb8e4SManikanta Maddireddy 636*904fb8e4SManikanta Maddireddy pci@3,0 { 637*904fb8e4SManikanta Maddireddy device_type = "pci"; 638*904fb8e4SManikanta Maddireddy assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>; 639*904fb8e4SManikanta Maddireddy reg = <0x001800 0 0 0 0>; 640*904fb8e4SManikanta Maddireddy status = "disabled"; 641*904fb8e4SManikanta Maddireddy 642*904fb8e4SManikanta Maddireddy #address-cells = <3>; 643*904fb8e4SManikanta Maddireddy #size-cells = <2>; 644*904fb8e4SManikanta Maddireddy ranges; 645*904fb8e4SManikanta Maddireddy 646*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 647*904fb8e4SManikanta Maddireddy }; 648*904fb8e4SManikanta Maddireddy }; 649*904fb8e4SManikanta Maddireddy 650*904fb8e4SManikanta MaddireddyBoard DTS: 651*904fb8e4SManikanta Maddireddy 652*904fb8e4SManikanta Maddireddy pcie@10003000 { 653*904fb8e4SManikanta Maddireddy status = "okay"; 654*904fb8e4SManikanta Maddireddy 655*904fb8e4SManikanta Maddireddy dvdd-pex-supply = <&vdd_pex>; 656*904fb8e4SManikanta Maddireddy hvdd-pex-pll-supply = <&vdd_1v8>; 657*904fb8e4SManikanta Maddireddy hvdd-pex-supply = <&vdd_1v8>; 658*904fb8e4SManikanta Maddireddy vddio-pexctl-aud-supply = <&vdd_1v8>; 659*904fb8e4SManikanta Maddireddy 660*904fb8e4SManikanta Maddireddy pci@1,0 { 661*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <4>; 662*904fb8e4SManikanta Maddireddy status = "okay"; 663*904fb8e4SManikanta Maddireddy }; 664*904fb8e4SManikanta Maddireddy 665*904fb8e4SManikanta Maddireddy pci@2,0 { 666*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <0>; 667*904fb8e4SManikanta Maddireddy status = "disabled"; 668*904fb8e4SManikanta Maddireddy }; 669*904fb8e4SManikanta Maddireddy 670*904fb8e4SManikanta Maddireddy pci@3,0 { 671*904fb8e4SManikanta Maddireddy nvidia,num-lanes = <1>; 672*904fb8e4SManikanta Maddireddy status = "disabled"; 673*904fb8e4SManikanta Maddireddy }; 674*904fb8e4SManikanta Maddireddy }; 675