xref: /openbmc/linux/Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt (revision 904fb8e452b4a95490357841291fa523ad1d6442)
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