xref: /freebsd/sys/contrib/device-tree/Bindings/pci/nvidia,tegra20-pcie.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
1*c66ec88fSEmmanuel VadotNVIDIA Tegra PCIe controller
2*c66ec88fSEmmanuel Vadot
3*c66ec88fSEmmanuel VadotRequired properties:
4*c66ec88fSEmmanuel Vadot- compatible: Must be:
5*c66ec88fSEmmanuel Vadot  - "nvidia,tegra20-pcie": for Tegra20
6*c66ec88fSEmmanuel Vadot  - "nvidia,tegra30-pcie": for Tegra30
7*c66ec88fSEmmanuel Vadot  - "nvidia,tegra124-pcie": for Tegra124 and Tegra132
8*c66ec88fSEmmanuel Vadot  - "nvidia,tegra210-pcie": for Tegra210
9*c66ec88fSEmmanuel Vadot  - "nvidia,tegra186-pcie": for Tegra186
10*c66ec88fSEmmanuel Vadot- power-domains: To ungate power partition by BPMP powergate driver. Must
11*c66ec88fSEmmanuel Vadot  contain BPMP phandle and PCIe power partition ID. This is required only
12*c66ec88fSEmmanuel Vadot  for Tegra186.
13*c66ec88fSEmmanuel Vadot- device_type: Must be "pci"
14*c66ec88fSEmmanuel Vadot- reg: A list of physical base address and length for each set of controller
15*c66ec88fSEmmanuel Vadot  registers. Must contain an entry for each entry in the reg-names property.
16*c66ec88fSEmmanuel Vadot- reg-names: Must include the following entries:
17*c66ec88fSEmmanuel Vadot  "pads": PADS registers
18*c66ec88fSEmmanuel Vadot  "afi": AFI registers
19*c66ec88fSEmmanuel Vadot  "cs": configuration space region
20*c66ec88fSEmmanuel Vadot- interrupts: A list of interrupt outputs of the controller. Must contain an
21*c66ec88fSEmmanuel Vadot  entry for each entry in the interrupt-names property.
22*c66ec88fSEmmanuel Vadot- interrupt-names: Must include the following entries:
23*c66ec88fSEmmanuel Vadot  "intr": The Tegra interrupt that is asserted for controller interrupts
24*c66ec88fSEmmanuel Vadot  "msi": The Tegra interrupt that is asserted when an MSI is received
25*c66ec88fSEmmanuel Vadot- bus-range: Range of bus numbers associated with this controller
26*c66ec88fSEmmanuel Vadot- #address-cells: Address representation for root ports (must be 3)
27*c66ec88fSEmmanuel Vadot  - cell 0 specifies the bus and device numbers of the root port:
28*c66ec88fSEmmanuel Vadot    [23:16]: bus number
29*c66ec88fSEmmanuel Vadot    [15:11]: device number
30*c66ec88fSEmmanuel Vadot  - cell 1 denotes the upper 32 address bits and should be 0
31*c66ec88fSEmmanuel Vadot  - cell 2 contains the lower 32 address bits and is used to translate to the
32*c66ec88fSEmmanuel Vadot    CPU address space
33*c66ec88fSEmmanuel Vadot- #size-cells: Size representation for root ports (must be 2)
34*c66ec88fSEmmanuel Vadot- ranges: Describes the translation of addresses for root ports and standard
35*c66ec88fSEmmanuel Vadot  PCI regions. The entries must be 6 cells each, where the first three cells
36*c66ec88fSEmmanuel Vadot  correspond to the address as described for the #address-cells property
37*c66ec88fSEmmanuel Vadot  above, the fourth cell is the physical CPU address to translate to and the
38*c66ec88fSEmmanuel Vadot  fifth and six cells are as described for the #size-cells property above.
39*c66ec88fSEmmanuel Vadot  - The first two entries are expected to translate the addresses for the root
40*c66ec88fSEmmanuel Vadot    port registers, which are referenced by the assigned-addresses property of
41*c66ec88fSEmmanuel Vadot    the root port nodes (see below).
42*c66ec88fSEmmanuel Vadot  - The remaining entries setup the mapping for the standard I/O, memory and
43*c66ec88fSEmmanuel Vadot    prefetchable PCI regions. The first cell determines the type of region
44*c66ec88fSEmmanuel Vadot    that is setup:
45*c66ec88fSEmmanuel Vadot    - 0x81000000: I/O memory region
46*c66ec88fSEmmanuel Vadot    - 0x82000000: non-prefetchable memory region
47*c66ec88fSEmmanuel Vadot    - 0xc2000000: prefetchable memory region
48*c66ec88fSEmmanuel Vadot  Please refer to the standard PCI bus binding document for a more detailed
49*c66ec88fSEmmanuel Vadot  explanation.
50*c66ec88fSEmmanuel Vadot- #interrupt-cells: Size representation for interrupts (must be 1)
51*c66ec88fSEmmanuel Vadot- interrupt-map-mask and interrupt-map: Standard PCI IRQ mapping properties
52*c66ec88fSEmmanuel Vadot  Please refer to the standard PCI bus binding document for a more detailed
53*c66ec88fSEmmanuel Vadot  explanation.
54*c66ec88fSEmmanuel Vadot- clocks: Must contain an entry for each entry in clock-names.
55*c66ec88fSEmmanuel Vadot  See ../clocks/clock-bindings.txt for details.
56*c66ec88fSEmmanuel Vadot- clock-names: Must include the following entries:
57*c66ec88fSEmmanuel Vadot  - pex
58*c66ec88fSEmmanuel Vadot  - afi
59*c66ec88fSEmmanuel Vadot  - pll_e
60*c66ec88fSEmmanuel Vadot  - cml (not required for Tegra20)
61*c66ec88fSEmmanuel Vadot- resets: Must contain an entry for each entry in reset-names.
62*c66ec88fSEmmanuel Vadot  See ../reset/reset.txt for details.
63*c66ec88fSEmmanuel Vadot- reset-names: Must include the following entries:
64*c66ec88fSEmmanuel Vadot  - pex
65*c66ec88fSEmmanuel Vadot  - afi
66*c66ec88fSEmmanuel Vadot  - pcie_x
67*c66ec88fSEmmanuel Vadot
68*c66ec88fSEmmanuel VadotOptional properties:
69*c66ec88fSEmmanuel Vadot- pinctrl-names: A list of pinctrl state names. Must contain the following
70*c66ec88fSEmmanuel Vadot  entries:
71*c66ec88fSEmmanuel Vadot  - "default": active state, puts PCIe I/O out of deep power down state
72*c66ec88fSEmmanuel Vadot  - "idle": puts PCIe I/O into deep power down state
73*c66ec88fSEmmanuel Vadot- pinctrl-0: phandle for the default/active state of pin configurations.
74*c66ec88fSEmmanuel Vadot- pinctrl-1: phandle for the idle state of pin configurations.
75*c66ec88fSEmmanuel Vadot
76*c66ec88fSEmmanuel VadotRequired properties on Tegra124 and later (deprecated):
77*c66ec88fSEmmanuel Vadot- phys: Must contain an entry for each entry in phy-names.
78*c66ec88fSEmmanuel Vadot- phy-names: Must include the following entries:
79*c66ec88fSEmmanuel Vadot  - pcie
80*c66ec88fSEmmanuel Vadot
81*c66ec88fSEmmanuel VadotThese properties are deprecated in favour of per-lane PHYs define in each of
82*c66ec88fSEmmanuel Vadotthe root ports (see below).
83*c66ec88fSEmmanuel Vadot
84*c66ec88fSEmmanuel VadotPower supplies for Tegra20:
85*c66ec88fSEmmanuel Vadot- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
86*c66ec88fSEmmanuel Vadot- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
87*c66ec88fSEmmanuel Vadot- avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must
88*c66ec88fSEmmanuel Vadot  supply 1.05 V.
89*c66ec88fSEmmanuel Vadot- avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must
90*c66ec88fSEmmanuel Vadot  supply 1.05 V.
91*c66ec88fSEmmanuel Vadot- vddio-pex-clk-supply: Power supply for PCIe clock. Must supply 3.3 V.
92*c66ec88fSEmmanuel Vadot
93*c66ec88fSEmmanuel VadotPower supplies for Tegra30:
94*c66ec88fSEmmanuel Vadot- Required:
95*c66ec88fSEmmanuel Vadot  - avdd-pex-pll-supply: Power supply for dedicated (internal) PCIe PLL. Must
96*c66ec88fSEmmanuel Vadot    supply 1.05 V.
97*c66ec88fSEmmanuel Vadot  - avdd-plle-supply: Power supply for PLLE, which is shared with SATA. Must
98*c66ec88fSEmmanuel Vadot    supply 1.05 V.
99*c66ec88fSEmmanuel Vadot  - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must
100*c66ec88fSEmmanuel Vadot    supply 1.8 V.
101*c66ec88fSEmmanuel Vadot  - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks.
102*c66ec88fSEmmanuel Vadot    Must supply 3.3 V.
103*c66ec88fSEmmanuel Vadot- Optional:
104*c66ec88fSEmmanuel Vadot  - If lanes 0 to 3 are used:
105*c66ec88fSEmmanuel Vadot    - avdd-pexa-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
106*c66ec88fSEmmanuel Vadot    - vdd-pexa-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
107*c66ec88fSEmmanuel Vadot  - If lanes 4 or 5 are used:
108*c66ec88fSEmmanuel Vadot    - avdd-pexb-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
109*c66ec88fSEmmanuel Vadot    - vdd-pexb-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
110*c66ec88fSEmmanuel Vadot
111*c66ec88fSEmmanuel VadotPower supplies for Tegra124:
112*c66ec88fSEmmanuel Vadot- Required:
113*c66ec88fSEmmanuel Vadot  - avddio-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
114*c66ec88fSEmmanuel Vadot  - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
115*c66ec88fSEmmanuel Vadot  - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks.
116*c66ec88fSEmmanuel Vadot    Must supply 3.3 V.
117*c66ec88fSEmmanuel Vadot  - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must
118*c66ec88fSEmmanuel Vadot    supply 2.8-3.3 V.
119*c66ec88fSEmmanuel Vadot
120*c66ec88fSEmmanuel VadotPower supplies for Tegra210:
121*c66ec88fSEmmanuel Vadot- Required:
122*c66ec88fSEmmanuel Vadot  - hvddio-pex-supply: High-voltage supply for PCIe I/O and PCIe output
123*c66ec88fSEmmanuel Vadot    clocks. Must supply 1.8 V.
124*c66ec88fSEmmanuel Vadot  - dvddio-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
125*c66ec88fSEmmanuel Vadot  - vddio-pex-ctl-supply: Power supply for PCIe control I/O partition. Must
126*c66ec88fSEmmanuel Vadot    supply 1.8 V.
127*c66ec88fSEmmanuel Vadot
128*c66ec88fSEmmanuel VadotPower supplies for Tegra186:
129*c66ec88fSEmmanuel Vadot- Required:
130*c66ec88fSEmmanuel Vadot  - dvdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
131*c66ec88fSEmmanuel Vadot  - hvdd-pex-pll-supply: High-voltage supply for PLLE (shared with USB3). Must
132*c66ec88fSEmmanuel Vadot    supply 1.8 V.
133*c66ec88fSEmmanuel Vadot  - hvdd-pex-supply: High-voltage supply for PCIe I/O and PCIe output clocks.
134*c66ec88fSEmmanuel Vadot    Must supply 1.8 V.
135*c66ec88fSEmmanuel Vadot  - vddio-pexctl-aud-supply: Power supply for PCIe side band signals. Must
136*c66ec88fSEmmanuel Vadot    supply 1.8 V.
137*c66ec88fSEmmanuel Vadot
138*c66ec88fSEmmanuel VadotRoot ports are defined as subnodes of the PCIe controller node.
139*c66ec88fSEmmanuel Vadot
140*c66ec88fSEmmanuel VadotRequired properties:
141*c66ec88fSEmmanuel Vadot- device_type: Must be "pci"
142*c66ec88fSEmmanuel Vadot- assigned-addresses: Address and size of the port configuration registers
143*c66ec88fSEmmanuel Vadot- reg: PCI bus address of the root port
144*c66ec88fSEmmanuel Vadot- #address-cells: Must be 3
145*c66ec88fSEmmanuel Vadot- #size-cells: Must be 2
146*c66ec88fSEmmanuel Vadot- ranges: Sub-ranges distributed from the PCIe controller node. An empty
147*c66ec88fSEmmanuel Vadot  property is sufficient.
148*c66ec88fSEmmanuel Vadot- nvidia,num-lanes: Number of lanes to use for this port. Valid combinations
149*c66ec88fSEmmanuel Vadot  are:
150*c66ec88fSEmmanuel Vadot  - Root port 0 uses 4 lanes, root port 1 is unused.
151*c66ec88fSEmmanuel Vadot  - Both root ports use 2 lanes.
152*c66ec88fSEmmanuel Vadot
153*c66ec88fSEmmanuel VadotRequired properties for Tegra124 and later:
154*c66ec88fSEmmanuel Vadot- phys: Must contain an phandle to a PHY for each entry in phy-names.
155*c66ec88fSEmmanuel Vadot- phy-names: Must include an entry for each active lane. Note that the number
156*c66ec88fSEmmanuel Vadot  of entries does not have to (though usually will) be equal to the specified
157*c66ec88fSEmmanuel Vadot  number of lanes in the nvidia,num-lanes property. Entries are of the form
158*c66ec88fSEmmanuel Vadot  "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes.
159*c66ec88fSEmmanuel Vadot
160*c66ec88fSEmmanuel VadotExamples:
161*c66ec88fSEmmanuel Vadot=========
162*c66ec88fSEmmanuel Vadot
163*c66ec88fSEmmanuel VadotTegra20:
164*c66ec88fSEmmanuel Vadot--------
165*c66ec88fSEmmanuel Vadot
166*c66ec88fSEmmanuel VadotSoC DTSI:
167*c66ec88fSEmmanuel Vadot
168*c66ec88fSEmmanuel Vadot	pcie-controller@80003000 {
169*c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra20-pcie";
170*c66ec88fSEmmanuel Vadot		device_type = "pci";
171*c66ec88fSEmmanuel Vadot		reg = <0x80003000 0x00000800   /* PADS registers */
172*c66ec88fSEmmanuel Vadot		       0x80003800 0x00000200   /* AFI registers */
173*c66ec88fSEmmanuel Vadot		       0x90000000 0x10000000>; /* configuration space */
174*c66ec88fSEmmanuel Vadot		reg-names = "pads", "afi", "cs";
175*c66ec88fSEmmanuel Vadot		interrupts = <0 98 0x04   /* controller interrupt */
176*c66ec88fSEmmanuel Vadot		              0 99 0x04>; /* MSI interrupt */
177*c66ec88fSEmmanuel Vadot		interrupt-names = "intr", "msi";
178*c66ec88fSEmmanuel Vadot
179*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
180*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0 0 0 0>;
181*c66ec88fSEmmanuel Vadot		interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
182*c66ec88fSEmmanuel Vadot
183*c66ec88fSEmmanuel Vadot		bus-range = <0x00 0xff>;
184*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
185*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
186*c66ec88fSEmmanuel Vadot
187*c66ec88fSEmmanuel Vadot		ranges = <0x82000000 0 0x80000000 0x80000000 0 0x00001000   /* port 0 registers */
188*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x80001000 0x80001000 0 0x00001000   /* port 1 registers */
189*c66ec88fSEmmanuel Vadot			  0x81000000 0 0          0x82000000 0 0x00010000   /* downstream I/O */
190*c66ec88fSEmmanuel Vadot			  0x82000000 0 0xa0000000 0xa0000000 0 0x10000000   /* non-prefetchable memory */
191*c66ec88fSEmmanuel Vadot			  0xc2000000 0 0xb0000000 0xb0000000 0 0x10000000>; /* prefetchable memory */
192*c66ec88fSEmmanuel Vadot
193*c66ec88fSEmmanuel Vadot		clocks = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 118>;
194*c66ec88fSEmmanuel Vadot		clock-names = "pex", "afi", "pll_e";
195*c66ec88fSEmmanuel Vadot		resets = <&tegra_car 70>, <&tegra_car 72>, <&tegra_car 74>;
196*c66ec88fSEmmanuel Vadot		reset-names = "pex", "afi", "pcie_x";
197*c66ec88fSEmmanuel Vadot		status = "disabled";
198*c66ec88fSEmmanuel Vadot
199*c66ec88fSEmmanuel Vadot		pci@1,0 {
200*c66ec88fSEmmanuel Vadot			device_type = "pci";
201*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82000800 0 0x80000000 0 0x1000>;
202*c66ec88fSEmmanuel Vadot			reg = <0x000800 0 0 0 0>;
203*c66ec88fSEmmanuel Vadot			status = "disabled";
204*c66ec88fSEmmanuel Vadot
205*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
206*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
207*c66ec88fSEmmanuel Vadot
208*c66ec88fSEmmanuel Vadot			ranges;
209*c66ec88fSEmmanuel Vadot
210*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
211*c66ec88fSEmmanuel Vadot		};
212*c66ec88fSEmmanuel Vadot
213*c66ec88fSEmmanuel Vadot		pci@2,0 {
214*c66ec88fSEmmanuel Vadot			device_type = "pci";
215*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001000 0 0x80001000 0 0x1000>;
216*c66ec88fSEmmanuel Vadot			reg = <0x001000 0 0 0 0>;
217*c66ec88fSEmmanuel Vadot			status = "disabled";
218*c66ec88fSEmmanuel Vadot
219*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
220*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
221*c66ec88fSEmmanuel Vadot
222*c66ec88fSEmmanuel Vadot			ranges;
223*c66ec88fSEmmanuel Vadot
224*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
225*c66ec88fSEmmanuel Vadot		};
226*c66ec88fSEmmanuel Vadot	};
227*c66ec88fSEmmanuel Vadot
228*c66ec88fSEmmanuel VadotBoard DTS:
229*c66ec88fSEmmanuel Vadot
230*c66ec88fSEmmanuel Vadot	pcie-controller@80003000 {
231*c66ec88fSEmmanuel Vadot		status = "okay";
232*c66ec88fSEmmanuel Vadot
233*c66ec88fSEmmanuel Vadot		vdd-supply = <&pci_vdd_reg>;
234*c66ec88fSEmmanuel Vadot		pex-clk-supply = <&pci_clk_reg>;
235*c66ec88fSEmmanuel Vadot
236*c66ec88fSEmmanuel Vadot		/* root port 00:01.0 */
237*c66ec88fSEmmanuel Vadot		pci@1,0 {
238*c66ec88fSEmmanuel Vadot			status = "okay";
239*c66ec88fSEmmanuel Vadot
240*c66ec88fSEmmanuel Vadot			/* bridge 01:00.0 (optional) */
241*c66ec88fSEmmanuel Vadot			pci@0,0 {
242*c66ec88fSEmmanuel Vadot				reg = <0x010000 0 0 0 0>;
243*c66ec88fSEmmanuel Vadot
244*c66ec88fSEmmanuel Vadot				#address-cells = <3>;
245*c66ec88fSEmmanuel Vadot				#size-cells = <2>;
246*c66ec88fSEmmanuel Vadot
247*c66ec88fSEmmanuel Vadot				device_type = "pci";
248*c66ec88fSEmmanuel Vadot
249*c66ec88fSEmmanuel Vadot				/* endpoint 02:00.0 */
250*c66ec88fSEmmanuel Vadot				pci@0,0 {
251*c66ec88fSEmmanuel Vadot					reg = <0x020000 0 0 0 0>;
252*c66ec88fSEmmanuel Vadot				};
253*c66ec88fSEmmanuel Vadot			};
254*c66ec88fSEmmanuel Vadot		};
255*c66ec88fSEmmanuel Vadot	};
256*c66ec88fSEmmanuel Vadot
257*c66ec88fSEmmanuel VadotNote that devices on the PCI bus are dynamically discovered using PCI's bus
258*c66ec88fSEmmanuel Vadotenumeration and therefore don't need corresponding device nodes in DT. However
259*c66ec88fSEmmanuel Vadotif a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
260*c66ec88fSEmmanuel Vadotdevice nodes need to be added in order to allow the bus' children to be
261*c66ec88fSEmmanuel Vadotinstantiated at the proper location in the operating system's device tree (as
262*c66ec88fSEmmanuel Vadotillustrated by the optional nodes in the example above).
263*c66ec88fSEmmanuel Vadot
264*c66ec88fSEmmanuel VadotTegra30:
265*c66ec88fSEmmanuel Vadot--------
266*c66ec88fSEmmanuel Vadot
267*c66ec88fSEmmanuel VadotSoC DTSI:
268*c66ec88fSEmmanuel Vadot
269*c66ec88fSEmmanuel Vadot	pcie-controller@3000 {
270*c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra30-pcie";
271*c66ec88fSEmmanuel Vadot		device_type = "pci";
272*c66ec88fSEmmanuel Vadot		reg = <0x00003000 0x00000800   /* PADS registers */
273*c66ec88fSEmmanuel Vadot		       0x00003800 0x00000200   /* AFI registers */
274*c66ec88fSEmmanuel Vadot		       0x10000000 0x10000000>; /* configuration space */
275*c66ec88fSEmmanuel Vadot		reg-names = "pads", "afi", "cs";
276*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH   /* controller interrupt */
277*c66ec88fSEmmanuel Vadot			      GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
278*c66ec88fSEmmanuel Vadot		interrupt-names = "intr", "msi";
279*c66ec88fSEmmanuel Vadot
280*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
281*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0 0 0 0>;
282*c66ec88fSEmmanuel Vadot		interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
283*c66ec88fSEmmanuel Vadot
284*c66ec88fSEmmanuel Vadot		bus-range = <0x00 0xff>;
285*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
286*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
287*c66ec88fSEmmanuel Vadot
288*c66ec88fSEmmanuel Vadot		ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000   /* port 0 configuration space */
289*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x00001000 0x00001000 0 0x00001000   /* port 1 configuration space */
290*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x00004000 0x00004000 0 0x00001000   /* port 2 configuration space */
291*c66ec88fSEmmanuel Vadot			  0x81000000 0 0          0x02000000 0 0x00010000   /* downstream I/O */
292*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x20000000 0x20000000 0 0x08000000   /* non-prefetchable memory */
293*c66ec88fSEmmanuel Vadot			  0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */
294*c66ec88fSEmmanuel Vadot
295*c66ec88fSEmmanuel Vadot		clocks = <&tegra_car TEGRA30_CLK_PCIE>,
296*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA30_CLK_AFI>,
297*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA30_CLK_PLL_E>,
298*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA30_CLK_CML0>;
299*c66ec88fSEmmanuel Vadot		clock-names = "pex", "afi", "pll_e", "cml";
300*c66ec88fSEmmanuel Vadot		resets = <&tegra_car 70>,
301*c66ec88fSEmmanuel Vadot			 <&tegra_car 72>,
302*c66ec88fSEmmanuel Vadot			 <&tegra_car 74>;
303*c66ec88fSEmmanuel Vadot		reset-names = "pex", "afi", "pcie_x";
304*c66ec88fSEmmanuel Vadot		status = "disabled";
305*c66ec88fSEmmanuel Vadot
306*c66ec88fSEmmanuel Vadot		pci@1,0 {
307*c66ec88fSEmmanuel Vadot			device_type = "pci";
308*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>;
309*c66ec88fSEmmanuel Vadot			reg = <0x000800 0 0 0 0>;
310*c66ec88fSEmmanuel Vadot			status = "disabled";
311*c66ec88fSEmmanuel Vadot
312*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
313*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
314*c66ec88fSEmmanuel Vadot			ranges;
315*c66ec88fSEmmanuel Vadot
316*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
317*c66ec88fSEmmanuel Vadot		};
318*c66ec88fSEmmanuel Vadot
319*c66ec88fSEmmanuel Vadot		pci@2,0 {
320*c66ec88fSEmmanuel Vadot			device_type = "pci";
321*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>;
322*c66ec88fSEmmanuel Vadot			reg = <0x001000 0 0 0 0>;
323*c66ec88fSEmmanuel Vadot			status = "disabled";
324*c66ec88fSEmmanuel Vadot
325*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
326*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
327*c66ec88fSEmmanuel Vadot			ranges;
328*c66ec88fSEmmanuel Vadot
329*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
330*c66ec88fSEmmanuel Vadot		};
331*c66ec88fSEmmanuel Vadot
332*c66ec88fSEmmanuel Vadot		pci@3,0 {
333*c66ec88fSEmmanuel Vadot			device_type = "pci";
334*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>;
335*c66ec88fSEmmanuel Vadot			reg = <0x001800 0 0 0 0>;
336*c66ec88fSEmmanuel Vadot			status = "disabled";
337*c66ec88fSEmmanuel Vadot
338*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
339*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
340*c66ec88fSEmmanuel Vadot			ranges;
341*c66ec88fSEmmanuel Vadot
342*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
343*c66ec88fSEmmanuel Vadot		};
344*c66ec88fSEmmanuel Vadot	};
345*c66ec88fSEmmanuel Vadot
346*c66ec88fSEmmanuel VadotBoard DTS:
347*c66ec88fSEmmanuel Vadot
348*c66ec88fSEmmanuel Vadot	pcie-controller@3000 {
349*c66ec88fSEmmanuel Vadot		status = "okay";
350*c66ec88fSEmmanuel Vadot
351*c66ec88fSEmmanuel Vadot		avdd-pexa-supply = <&ldo1_reg>;
352*c66ec88fSEmmanuel Vadot		vdd-pexa-supply = <&ldo1_reg>;
353*c66ec88fSEmmanuel Vadot		avdd-pexb-supply = <&ldo1_reg>;
354*c66ec88fSEmmanuel Vadot		vdd-pexb-supply = <&ldo1_reg>;
355*c66ec88fSEmmanuel Vadot		avdd-pex-pll-supply = <&ldo1_reg>;
356*c66ec88fSEmmanuel Vadot		avdd-plle-supply = <&ldo1_reg>;
357*c66ec88fSEmmanuel Vadot		vddio-pex-ctl-supply = <&sys_3v3_reg>;
358*c66ec88fSEmmanuel Vadot		hvdd-pex-supply = <&sys_3v3_pexs_reg>;
359*c66ec88fSEmmanuel Vadot
360*c66ec88fSEmmanuel Vadot		pci@1,0 {
361*c66ec88fSEmmanuel Vadot			status = "okay";
362*c66ec88fSEmmanuel Vadot		};
363*c66ec88fSEmmanuel Vadot
364*c66ec88fSEmmanuel Vadot		pci@3,0 {
365*c66ec88fSEmmanuel Vadot			status = "okay";
366*c66ec88fSEmmanuel Vadot		};
367*c66ec88fSEmmanuel Vadot	};
368*c66ec88fSEmmanuel Vadot
369*c66ec88fSEmmanuel VadotTegra124:
370*c66ec88fSEmmanuel Vadot---------
371*c66ec88fSEmmanuel Vadot
372*c66ec88fSEmmanuel VadotSoC DTSI:
373*c66ec88fSEmmanuel Vadot
374*c66ec88fSEmmanuel Vadot	pcie-controller@1003000 {
375*c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra124-pcie";
376*c66ec88fSEmmanuel Vadot		device_type = "pci";
377*c66ec88fSEmmanuel Vadot		reg = <0x0 0x01003000 0x0 0x00000800   /* PADS registers */
378*c66ec88fSEmmanuel Vadot		       0x0 0x01003800 0x0 0x00000800   /* AFI registers */
379*c66ec88fSEmmanuel Vadot		       0x0 0x02000000 0x0 0x10000000>; /* configuration space */
380*c66ec88fSEmmanuel Vadot		reg-names = "pads", "afi", "cs";
381*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
382*c66ec88fSEmmanuel Vadot			     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
383*c66ec88fSEmmanuel Vadot		interrupt-names = "intr", "msi";
384*c66ec88fSEmmanuel Vadot
385*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
386*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0 0 0 0>;
387*c66ec88fSEmmanuel Vadot		interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
388*c66ec88fSEmmanuel Vadot
389*c66ec88fSEmmanuel Vadot		bus-range = <0x00 0xff>;
390*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
391*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
392*c66ec88fSEmmanuel Vadot
393*c66ec88fSEmmanuel Vadot		ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000   /* port 0 configuration space */
394*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000   /* port 1 configuration space */
395*c66ec88fSEmmanuel Vadot			  0x81000000 0 0x0        0x0 0x12000000 0 0x00010000   /* downstream I/O (64 KiB) */
396*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000   /* non-prefetchable memory (208 MiB) */
397*c66ec88fSEmmanuel Vadot			  0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */
398*c66ec88fSEmmanuel Vadot
399*c66ec88fSEmmanuel Vadot		clocks = <&tegra_car TEGRA124_CLK_PCIE>,
400*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA124_CLK_AFI>,
401*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA124_CLK_PLL_E>,
402*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA124_CLK_CML0>;
403*c66ec88fSEmmanuel Vadot		clock-names = "pex", "afi", "pll_e", "cml";
404*c66ec88fSEmmanuel Vadot		resets = <&tegra_car 70>,
405*c66ec88fSEmmanuel Vadot			 <&tegra_car 72>,
406*c66ec88fSEmmanuel Vadot			 <&tegra_car 74>;
407*c66ec88fSEmmanuel Vadot		reset-names = "pex", "afi", "pcie_x";
408*c66ec88fSEmmanuel Vadot		status = "disabled";
409*c66ec88fSEmmanuel Vadot
410*c66ec88fSEmmanuel Vadot		pci@1,0 {
411*c66ec88fSEmmanuel Vadot			device_type = "pci";
412*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>;
413*c66ec88fSEmmanuel Vadot			reg = <0x000800 0 0 0 0>;
414*c66ec88fSEmmanuel Vadot			status = "disabled";
415*c66ec88fSEmmanuel Vadot
416*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
417*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
418*c66ec88fSEmmanuel Vadot			ranges;
419*c66ec88fSEmmanuel Vadot
420*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
421*c66ec88fSEmmanuel Vadot		};
422*c66ec88fSEmmanuel Vadot
423*c66ec88fSEmmanuel Vadot		pci@2,0 {
424*c66ec88fSEmmanuel Vadot			device_type = "pci";
425*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>;
426*c66ec88fSEmmanuel Vadot			reg = <0x001000 0 0 0 0>;
427*c66ec88fSEmmanuel Vadot			status = "disabled";
428*c66ec88fSEmmanuel Vadot
429*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
430*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
431*c66ec88fSEmmanuel Vadot			ranges;
432*c66ec88fSEmmanuel Vadot
433*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <1>;
434*c66ec88fSEmmanuel Vadot		};
435*c66ec88fSEmmanuel Vadot	};
436*c66ec88fSEmmanuel Vadot
437*c66ec88fSEmmanuel VadotBoard DTS:
438*c66ec88fSEmmanuel Vadot
439*c66ec88fSEmmanuel Vadot	pcie-controller@1003000 {
440*c66ec88fSEmmanuel Vadot		status = "okay";
441*c66ec88fSEmmanuel Vadot
442*c66ec88fSEmmanuel Vadot		avddio-pex-supply = <&vdd_1v05_run>;
443*c66ec88fSEmmanuel Vadot		dvddio-pex-supply = <&vdd_1v05_run>;
444*c66ec88fSEmmanuel Vadot		avdd-pex-pll-supply = <&vdd_1v05_run>;
445*c66ec88fSEmmanuel Vadot		hvdd-pex-supply = <&vdd_3v3_lp0>;
446*c66ec88fSEmmanuel Vadot		hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>;
447*c66ec88fSEmmanuel Vadot		vddio-pex-ctl-supply = <&vdd_3v3_lp0>;
448*c66ec88fSEmmanuel Vadot		avdd-pll-erefe-supply = <&avdd_1v05_run>;
449*c66ec88fSEmmanuel Vadot
450*c66ec88fSEmmanuel Vadot		/* Mini PCIe */
451*c66ec88fSEmmanuel Vadot		pci@1,0 {
452*c66ec88fSEmmanuel Vadot			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>;
453*c66ec88fSEmmanuel Vadot			phy-names = "pcie-0";
454*c66ec88fSEmmanuel Vadot			status = "okay";
455*c66ec88fSEmmanuel Vadot		};
456*c66ec88fSEmmanuel Vadot
457*c66ec88fSEmmanuel Vadot		/* Gigabit Ethernet */
458*c66ec88fSEmmanuel Vadot		pci@2,0 {
459*c66ec88fSEmmanuel Vadot			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>;
460*c66ec88fSEmmanuel Vadot			phy-names = "pcie-0";
461*c66ec88fSEmmanuel Vadot			status = "okay";
462*c66ec88fSEmmanuel Vadot		};
463*c66ec88fSEmmanuel Vadot	};
464*c66ec88fSEmmanuel Vadot
465*c66ec88fSEmmanuel VadotTegra210:
466*c66ec88fSEmmanuel Vadot---------
467*c66ec88fSEmmanuel Vadot
468*c66ec88fSEmmanuel VadotSoC DTSI:
469*c66ec88fSEmmanuel Vadot
470*c66ec88fSEmmanuel Vadot	pcie-controller@1003000 {
471*c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra210-pcie";
472*c66ec88fSEmmanuel Vadot		device_type = "pci";
473*c66ec88fSEmmanuel Vadot		reg = <0x0 0x01003000 0x0 0x00000800   /* PADS registers */
474*c66ec88fSEmmanuel Vadot		       0x0 0x01003800 0x0 0x00000800   /* AFI registers */
475*c66ec88fSEmmanuel Vadot		       0x0 0x02000000 0x0 0x10000000>; /* configuration space */
476*c66ec88fSEmmanuel Vadot		reg-names = "pads", "afi", "cs";
477*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
478*c66ec88fSEmmanuel Vadot			     <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
479*c66ec88fSEmmanuel Vadot		interrupt-names = "intr", "msi";
480*c66ec88fSEmmanuel Vadot
481*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
482*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0 0 0 0>;
483*c66ec88fSEmmanuel Vadot		interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
484*c66ec88fSEmmanuel Vadot
485*c66ec88fSEmmanuel Vadot		bus-range = <0x00 0xff>;
486*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
487*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
488*c66ec88fSEmmanuel Vadot
489*c66ec88fSEmmanuel Vadot		ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000   /* port 0 configuration space */
490*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000   /* port 1 configuration space */
491*c66ec88fSEmmanuel Vadot			  0x81000000 0 0x0        0x0 0x12000000 0 0x00010000   /* downstream I/O (64 KiB) */
492*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000   /* non-prefetchable memory (208 MiB) */
493*c66ec88fSEmmanuel Vadot			  0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */
494*c66ec88fSEmmanuel Vadot
495*c66ec88fSEmmanuel Vadot		clocks = <&tegra_car TEGRA210_CLK_PCIE>,
496*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA210_CLK_AFI>,
497*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA210_CLK_PLL_E>,
498*c66ec88fSEmmanuel Vadot			 <&tegra_car TEGRA210_CLK_CML0>;
499*c66ec88fSEmmanuel Vadot		clock-names = "pex", "afi", "pll_e", "cml";
500*c66ec88fSEmmanuel Vadot		resets = <&tegra_car 70>,
501*c66ec88fSEmmanuel Vadot			 <&tegra_car 72>,
502*c66ec88fSEmmanuel Vadot			 <&tegra_car 74>;
503*c66ec88fSEmmanuel Vadot		reset-names = "pex", "afi", "pcie_x";
504*c66ec88fSEmmanuel Vadot		status = "disabled";
505*c66ec88fSEmmanuel Vadot
506*c66ec88fSEmmanuel Vadot		pci@1,0 {
507*c66ec88fSEmmanuel Vadot			device_type = "pci";
508*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>;
509*c66ec88fSEmmanuel Vadot			reg = <0x000800 0 0 0 0>;
510*c66ec88fSEmmanuel Vadot			status = "disabled";
511*c66ec88fSEmmanuel Vadot
512*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
513*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
514*c66ec88fSEmmanuel Vadot			ranges;
515*c66ec88fSEmmanuel Vadot
516*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <4>;
517*c66ec88fSEmmanuel Vadot		};
518*c66ec88fSEmmanuel Vadot
519*c66ec88fSEmmanuel Vadot		pci@2,0 {
520*c66ec88fSEmmanuel Vadot			device_type = "pci";
521*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>;
522*c66ec88fSEmmanuel Vadot			reg = <0x001000 0 0 0 0>;
523*c66ec88fSEmmanuel Vadot			status = "disabled";
524*c66ec88fSEmmanuel Vadot
525*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
526*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
527*c66ec88fSEmmanuel Vadot			ranges;
528*c66ec88fSEmmanuel Vadot
529*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <1>;
530*c66ec88fSEmmanuel Vadot		};
531*c66ec88fSEmmanuel Vadot	};
532*c66ec88fSEmmanuel Vadot
533*c66ec88fSEmmanuel VadotBoard DTS:
534*c66ec88fSEmmanuel Vadot
535*c66ec88fSEmmanuel Vadot	pcie-controller@1003000 {
536*c66ec88fSEmmanuel Vadot		status = "okay";
537*c66ec88fSEmmanuel Vadot
538*c66ec88fSEmmanuel Vadot		avdd-pll-uerefe-supply = <&avdd_1v05_pll>;
539*c66ec88fSEmmanuel Vadot		hvddio-pex-supply = <&vdd_1v8>;
540*c66ec88fSEmmanuel Vadot		dvddio-pex-supply = <&vdd_pex_1v05>;
541*c66ec88fSEmmanuel Vadot		dvdd-pex-pll-supply = <&vdd_pex_1v05>;
542*c66ec88fSEmmanuel Vadot		hvdd-pex-pll-e-supply = <&vdd_1v8>;
543*c66ec88fSEmmanuel Vadot		vddio-pex-ctl-supply = <&vdd_1v8>;
544*c66ec88fSEmmanuel Vadot
545*c66ec88fSEmmanuel Vadot		pci@1,0 {
546*c66ec88fSEmmanuel Vadot			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-0}>,
547*c66ec88fSEmmanuel Vadot			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-1}>,
548*c66ec88fSEmmanuel Vadot			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>,
549*c66ec88fSEmmanuel Vadot			       <&{/padctl@7009f000/pads/pcie/lanes/pcie-3}>;
550*c66ec88fSEmmanuel Vadot			phy-names = "pcie-0", "pcie-1", "pcie-2", "pcie-3";
551*c66ec88fSEmmanuel Vadot			status = "okay";
552*c66ec88fSEmmanuel Vadot		};
553*c66ec88fSEmmanuel Vadot
554*c66ec88fSEmmanuel Vadot		pci@2,0 {
555*c66ec88fSEmmanuel Vadot			phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>;
556*c66ec88fSEmmanuel Vadot			phy-names = "pcie-0";
557*c66ec88fSEmmanuel Vadot			status = "okay";
558*c66ec88fSEmmanuel Vadot		};
559*c66ec88fSEmmanuel Vadot	};
560*c66ec88fSEmmanuel Vadot
561*c66ec88fSEmmanuel VadotTegra186:
562*c66ec88fSEmmanuel Vadot---------
563*c66ec88fSEmmanuel Vadot
564*c66ec88fSEmmanuel VadotSoC DTSI:
565*c66ec88fSEmmanuel Vadot
566*c66ec88fSEmmanuel Vadot	pcie@10003000 {
567*c66ec88fSEmmanuel Vadot		compatible = "nvidia,tegra186-pcie";
568*c66ec88fSEmmanuel Vadot		power-domains = <&bpmp TEGRA186_POWER_DOMAIN_PCX>;
569*c66ec88fSEmmanuel Vadot		device_type = "pci";
570*c66ec88fSEmmanuel Vadot		reg = <0x0 0x10003000 0x0 0x00000800   /* PADS registers */
571*c66ec88fSEmmanuel Vadot		       0x0 0x10003800 0x0 0x00000800   /* AFI registers */
572*c66ec88fSEmmanuel Vadot		       0x0 0x40000000 0x0 0x10000000>; /* configuration space */
573*c66ec88fSEmmanuel Vadot		reg-names = "pads", "afi", "cs";
574*c66ec88fSEmmanuel Vadot
575*c66ec88fSEmmanuel Vadot		interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
576*c66ec88fSEmmanuel Vadot			     <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
577*c66ec88fSEmmanuel Vadot		interrupt-names = "intr", "msi";
578*c66ec88fSEmmanuel Vadot
579*c66ec88fSEmmanuel Vadot		#interrupt-cells = <1>;
580*c66ec88fSEmmanuel Vadot		interrupt-map-mask = <0 0 0 0>;
581*c66ec88fSEmmanuel Vadot		interrupt-map = <0 0 0 0 &gic GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
582*c66ec88fSEmmanuel Vadot
583*c66ec88fSEmmanuel Vadot		bus-range = <0x00 0xff>;
584*c66ec88fSEmmanuel Vadot		#address-cells = <3>;
585*c66ec88fSEmmanuel Vadot		#size-cells = <2>;
586*c66ec88fSEmmanuel Vadot
587*c66ec88fSEmmanuel Vadot		ranges = <0x82000000 0 0x10000000 0x0 0x10000000 0 0x00001000   /* port 0 configuration space */
588*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x10001000 0x0 0x10001000 0 0x00001000   /* port 1 configuration space */
589*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x10004000 0x0 0x10004000 0 0x00001000   /* port 2 configuration space */
590*c66ec88fSEmmanuel Vadot			  0x81000000 0 0x0        0x0 0x50000000 0 0x00010000   /* downstream I/O (64 KiB) */
591*c66ec88fSEmmanuel Vadot			  0x82000000 0 0x50100000 0x0 0x50100000 0 0x07F00000   /* non-prefetchable memory (127 MiB) */
592*c66ec88fSEmmanuel Vadot			  0xc2000000 0 0x58000000 0x0 0x58000000 0 0x28000000>; /* prefetchable memory (640 MiB) */
593*c66ec88fSEmmanuel Vadot
594*c66ec88fSEmmanuel Vadot		clocks = <&bpmp TEGRA186_CLK_AFI>,
595*c66ec88fSEmmanuel Vadot			 <&bpmp TEGRA186_CLK_PCIE>,
596*c66ec88fSEmmanuel Vadot			 <&bpmp TEGRA186_CLK_PLLE>;
597*c66ec88fSEmmanuel Vadot		clock-names = "afi", "pex", "pll_e";
598*c66ec88fSEmmanuel Vadot
599*c66ec88fSEmmanuel Vadot		resets = <&bpmp TEGRA186_RESET_AFI>,
600*c66ec88fSEmmanuel Vadot			 <&bpmp TEGRA186_RESET_PCIE>,
601*c66ec88fSEmmanuel Vadot			 <&bpmp TEGRA186_RESET_PCIEXCLK>;
602*c66ec88fSEmmanuel Vadot		reset-names = "afi", "pex", "pcie_x";
603*c66ec88fSEmmanuel Vadot
604*c66ec88fSEmmanuel Vadot		status = "disabled";
605*c66ec88fSEmmanuel Vadot
606*c66ec88fSEmmanuel Vadot		pci@1,0 {
607*c66ec88fSEmmanuel Vadot			device_type = "pci";
608*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82000800 0 0x10000000 0 0x1000>;
609*c66ec88fSEmmanuel Vadot			reg = <0x000800 0 0 0 0>;
610*c66ec88fSEmmanuel Vadot			status = "disabled";
611*c66ec88fSEmmanuel Vadot
612*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
613*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
614*c66ec88fSEmmanuel Vadot			ranges;
615*c66ec88fSEmmanuel Vadot
616*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <2>;
617*c66ec88fSEmmanuel Vadot		};
618*c66ec88fSEmmanuel Vadot
619*c66ec88fSEmmanuel Vadot		pci@2,0 {
620*c66ec88fSEmmanuel Vadot			device_type = "pci";
621*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001000 0 0x10001000 0 0x1000>;
622*c66ec88fSEmmanuel Vadot			reg = <0x001000 0 0 0 0>;
623*c66ec88fSEmmanuel Vadot			status = "disabled";
624*c66ec88fSEmmanuel Vadot
625*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
626*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
627*c66ec88fSEmmanuel Vadot			ranges;
628*c66ec88fSEmmanuel Vadot
629*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <1>;
630*c66ec88fSEmmanuel Vadot		};
631*c66ec88fSEmmanuel Vadot
632*c66ec88fSEmmanuel Vadot		pci@3,0 {
633*c66ec88fSEmmanuel Vadot			device_type = "pci";
634*c66ec88fSEmmanuel Vadot			assigned-addresses = <0x82001800 0 0x10004000 0 0x1000>;
635*c66ec88fSEmmanuel Vadot			reg = <0x001800 0 0 0 0>;
636*c66ec88fSEmmanuel Vadot			status = "disabled";
637*c66ec88fSEmmanuel Vadot
638*c66ec88fSEmmanuel Vadot			#address-cells = <3>;
639*c66ec88fSEmmanuel Vadot			#size-cells = <2>;
640*c66ec88fSEmmanuel Vadot			ranges;
641*c66ec88fSEmmanuel Vadot
642*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <1>;
643*c66ec88fSEmmanuel Vadot		};
644*c66ec88fSEmmanuel Vadot	};
645*c66ec88fSEmmanuel Vadot
646*c66ec88fSEmmanuel VadotBoard DTS:
647*c66ec88fSEmmanuel Vadot
648*c66ec88fSEmmanuel Vadot	pcie@10003000 {
649*c66ec88fSEmmanuel Vadot		status = "okay";
650*c66ec88fSEmmanuel Vadot
651*c66ec88fSEmmanuel Vadot		dvdd-pex-supply = <&vdd_pex>;
652*c66ec88fSEmmanuel Vadot		hvdd-pex-pll-supply = <&vdd_1v8>;
653*c66ec88fSEmmanuel Vadot		hvdd-pex-supply = <&vdd_1v8>;
654*c66ec88fSEmmanuel Vadot		vddio-pexctl-aud-supply = <&vdd_1v8>;
655*c66ec88fSEmmanuel Vadot
656*c66ec88fSEmmanuel Vadot		pci@1,0 {
657*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <4>;
658*c66ec88fSEmmanuel Vadot			status = "okay";
659*c66ec88fSEmmanuel Vadot		};
660*c66ec88fSEmmanuel Vadot
661*c66ec88fSEmmanuel Vadot		pci@2,0 {
662*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <0>;
663*c66ec88fSEmmanuel Vadot			status = "disabled";
664*c66ec88fSEmmanuel Vadot		};
665*c66ec88fSEmmanuel Vadot
666*c66ec88fSEmmanuel Vadot		pci@3,0 {
667*c66ec88fSEmmanuel Vadot			nvidia,num-lanes = <1>;
668*c66ec88fSEmmanuel Vadot			status = "disabled";
669*c66ec88fSEmmanuel Vadot		};
670*c66ec88fSEmmanuel Vadot	};
671