@@ -60,11 +60,14 @@ Required properties:
60
60
- afi
61
61
- pcie_x
62
62
63
- Required properties on Tegra124 and later:
63
+ Required properties on Tegra124 and later (deprecated) :
64
64
- phys: Must contain an entry for each entry in phy-names.
65
65
- phy-names: Must include the following entries:
66
66
- pcie
67
67
68
+ These properties are deprecated in favour of per-lane PHYs define in each of
69
+ the root ports (see below).
70
+
68
71
Power supplies for Tegra20:
69
72
- avdd-pex-supply: Power supply for analog PCIe logic. Must supply 1.05 V.
70
73
- vdd-pex-supply: Power supply for digital PCIe I/O. Must supply 1.05 V.
@@ -122,11 +125,22 @@ Required properties:
122
125
- Root port 0 uses 4 lanes, root port 1 is unused.
123
126
- Both root ports use 2 lanes.
124
127
125
- Example:
128
+ Required properties for Tegra124 and later:
129
+ - phys: Must contain an phandle to a PHY for each entry in phy-names.
130
+ - phy-names: Must include an entry for each active lane. Note that the number
131
+ of entries does not have to (though usually will) be equal to the specified
132
+ number of lanes in the nvidia,num-lanes property. Entries are of the form
133
+ "pcie-N": where N ranges from 0 to the value specified in nvidia,num-lanes.
134
+
135
+ Examples:
136
+ =========
137
+
138
+ Tegra20:
139
+ --------
126
140
127
141
SoC DTSI:
128
142
129
- pcie-controller {
143
+ pcie-controller@80003000 {
130
144
compatible = "nvidia,tegra20-pcie";
131
145
device_type = "pci";
132
146
reg = <0x80003000 0x00000800 /* PADS registers */
@@ -186,10 +200,9 @@ SoC DTSI:
186
200
};
187
201
};
188
202
189
-
190
203
Board DTS:
191
204
192
- pcie-controller {
205
+ pcie-controller@80003000 {
193
206
status = "okay";
194
207
195
208
vdd-supply = <&pci_vdd_reg>;
@@ -222,3 +235,204 @@ if a device on the PCI bus provides a non-probeable bus such as I2C or SPI,
222
235
device nodes need to be added in order to allow the bus' children to be
223
236
instantiated at the proper location in the operating system's device tree (as
224
237
illustrated by the optional nodes in the example above).
238
+
239
+ Tegra30:
240
+ --------
241
+
242
+ SoC DTSI:
243
+
244
+ pcie-controller@00003000 {
245
+ compatible = "nvidia,tegra30-pcie";
246
+ device_type = "pci";
247
+ reg = <0x00003000 0x00000800 /* PADS registers */
248
+ 0x00003800 0x00000200 /* AFI registers */
249
+ 0x10000000 0x10000000>; /* configuration space */
250
+ reg-names = "pads", "afi", "cs";
251
+ interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH /* controller interrupt */
252
+ GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
253
+ interrupt-names = "intr", "msi";
254
+
255
+ #interrupt-cells = <1>;
256
+ interrupt-map-mask = <0 0 0 0>;
257
+ interrupt-map = <0 0 0 0 &intc GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
258
+
259
+ bus-range = <0x00 0xff>;
260
+ #address-cells = <3>;
261
+ #size-cells = <2>;
262
+
263
+ ranges = <0x82000000 0 0x00000000 0x00000000 0 0x00001000 /* port 0 configuration space */
264
+ 0x82000000 0 0x00001000 0x00001000 0 0x00001000 /* port 1 configuration space */
265
+ 0x82000000 0 0x00004000 0x00004000 0 0x00001000 /* port 2 configuration space */
266
+ 0x81000000 0 0 0x02000000 0 0x00010000 /* downstream I/O */
267
+ 0x82000000 0 0x20000000 0x20000000 0 0x08000000 /* non-prefetchable memory */
268
+ 0xc2000000 0 0x28000000 0x28000000 0 0x18000000>; /* prefetchable memory */
269
+
270
+ clocks = <&tegra_car TEGRA30_CLK_PCIE>,
271
+ <&tegra_car TEGRA30_CLK_AFI>,
272
+ <&tegra_car TEGRA30_CLK_PLL_E>,
273
+ <&tegra_car TEGRA30_CLK_CML0>;
274
+ clock-names = "pex", "afi", "pll_e", "cml";
275
+ resets = <&tegra_car 70>,
276
+ <&tegra_car 72>,
277
+ <&tegra_car 74>;
278
+ reset-names = "pex", "afi", "pcie_x";
279
+ status = "disabled";
280
+
281
+ pci@1,0 {
282
+ device_type = "pci";
283
+ assigned-addresses = <0x82000800 0 0x00000000 0 0x1000>;
284
+ reg = <0x000800 0 0 0 0>;
285
+ status = "disabled";
286
+
287
+ #address-cells = <3>;
288
+ #size-cells = <2>;
289
+ ranges;
290
+
291
+ nvidia,num-lanes = <2>;
292
+ };
293
+
294
+ pci@2,0 {
295
+ device_type = "pci";
296
+ assigned-addresses = <0x82001000 0 0x00001000 0 0x1000>;
297
+ reg = <0x001000 0 0 0 0>;
298
+ status = "disabled";
299
+
300
+ #address-cells = <3>;
301
+ #size-cells = <2>;
302
+ ranges;
303
+
304
+ nvidia,num-lanes = <2>;
305
+ };
306
+
307
+ pci@3,0 {
308
+ device_type = "pci";
309
+ assigned-addresses = <0x82001800 0 0x00004000 0 0x1000>;
310
+ reg = <0x001800 0 0 0 0>;
311
+ status = "disabled";
312
+
313
+ #address-cells = <3>;
314
+ #size-cells = <2>;
315
+ ranges;
316
+
317
+ nvidia,num-lanes = <2>;
318
+ };
319
+ };
320
+
321
+ Board DTS:
322
+
323
+ pcie-controller@00003000 {
324
+ status = "okay";
325
+
326
+ avdd-pexa-supply = <&ldo1_reg>;
327
+ vdd-pexa-supply = <&ldo1_reg>;
328
+ avdd-pexb-supply = <&ldo1_reg>;
329
+ vdd-pexb-supply = <&ldo1_reg>;
330
+ avdd-pex-pll-supply = <&ldo1_reg>;
331
+ avdd-plle-supply = <&ldo1_reg>;
332
+ vddio-pex-ctl-supply = <&sys_3v3_reg>;
333
+ hvdd-pex-supply = <&sys_3v3_pexs_reg>;
334
+
335
+ pci@1,0 {
336
+ status = "okay";
337
+ };
338
+
339
+ pci@3,0 {
340
+ status = "okay";
341
+ };
342
+ };
343
+
344
+ Tegra124:
345
+ ---------
346
+
347
+ SoC DTSI:
348
+
349
+ pcie-controller@01003000 {
350
+ compatible = "nvidia,tegra124-pcie";
351
+ device_type = "pci";
352
+ reg = <0x0 0x01003000 0x0 0x00000800 /* PADS registers */
353
+ 0x0 0x01003800 0x0 0x00000800 /* AFI registers */
354
+ 0x0 0x02000000 0x0 0x10000000>; /* configuration space */
355
+ reg-names = "pads", "afi", "cs";
356
+ interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>, /* controller interrupt */
357
+ <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; /* MSI interrupt */
358
+ interrupt-names = "intr", "msi";
359
+
360
+ #interrupt-cells = <1>;
361
+ interrupt-map-mask = <0 0 0 0>;
362
+ interrupt-map = <0 0 0 0 &gic GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
363
+
364
+ bus-range = <0x00 0xff>;
365
+ #address-cells = <3>;
366
+ #size-cells = <2>;
367
+
368
+ ranges = <0x82000000 0 0x01000000 0x0 0x01000000 0 0x00001000 /* port 0 configuration space */
369
+ 0x82000000 0 0x01001000 0x0 0x01001000 0 0x00001000 /* port 1 configuration space */
370
+ 0x81000000 0 0x0 0x0 0x12000000 0 0x00010000 /* downstream I/O (64 KiB) */
371
+ 0x82000000 0 0x13000000 0x0 0x13000000 0 0x0d000000 /* non-prefetchable memory (208 MiB) */
372
+ 0xc2000000 0 0x20000000 0x0 0x20000000 0 0x20000000>; /* prefetchable memory (512 MiB) */
373
+
374
+ clocks = <&tegra_car TEGRA124_CLK_PCIE>,
375
+ <&tegra_car TEGRA124_CLK_AFI>,
376
+ <&tegra_car TEGRA124_CLK_PLL_E>,
377
+ <&tegra_car TEGRA124_CLK_CML0>;
378
+ clock-names = "pex", "afi", "pll_e", "cml";
379
+ resets = <&tegra_car 70>,
380
+ <&tegra_car 72>,
381
+ <&tegra_car 74>;
382
+ reset-names = "pex", "afi", "pcie_x";
383
+ status = "disabled";
384
+
385
+ pci@1,0 {
386
+ device_type = "pci";
387
+ assigned-addresses = <0x82000800 0 0x01000000 0 0x1000>;
388
+ reg = <0x000800 0 0 0 0>;
389
+ status = "disabled";
390
+
391
+ #address-cells = <3>;
392
+ #size-cells = <2>;
393
+ ranges;
394
+
395
+ nvidia,num-lanes = <2>;
396
+ };
397
+
398
+ pci@2,0 {
399
+ device_type = "pci";
400
+ assigned-addresses = <0x82001000 0 0x01001000 0 0x1000>;
401
+ reg = <0x001000 0 0 0 0>;
402
+ status = "disabled";
403
+
404
+ #address-cells = <3>;
405
+ #size-cells = <2>;
406
+ ranges;
407
+
408
+ nvidia,num-lanes = <1>;
409
+ };
410
+ };
411
+
412
+ Board DTS:
413
+
414
+ pcie-controller@01003000 {
415
+ status = "okay";
416
+
417
+ avddio-pex-supply = <&vdd_1v05_run>;
418
+ dvddio-pex-supply = <&vdd_1v05_run>;
419
+ avdd-pex-pll-supply = <&vdd_1v05_run>;
420
+ hvdd-pex-supply = <&vdd_3v3_lp0>;
421
+ hvdd-pex-pll-e-supply = <&vdd_3v3_lp0>;
422
+ vddio-pex-ctl-supply = <&vdd_3v3_lp0>;
423
+ avdd-pll-erefe-supply = <&avdd_1v05_run>;
424
+
425
+ /* Mini PCIe */
426
+ pci@1,0 {
427
+ phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-4}>;
428
+ phy-names = "pcie-0";
429
+ status = "okay";
430
+ };
431
+
432
+ /* Gigabit Ethernet */
433
+ pci@2,0 {
434
+ phys = <&{/padctl@7009f000/pads/pcie/lanes/pcie-2}>;
435
+ phy-names = "pcie-0";
436
+ status = "okay";
437
+ };
438
+ };
0 commit comments