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