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