18bab661aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 28bab661aSEmmanuel Vadot%YAML 1.2 38bab661aSEmmanuel Vadot--- 48bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/xlnx,nwl-pcie.yaml# 58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 68bab661aSEmmanuel Vadot 78bab661aSEmmanuel Vadottitle: Xilinx NWL PCIe Root Port Bridge 88bab661aSEmmanuel Vadot 98bab661aSEmmanuel Vadotmaintainers: 108bab661aSEmmanuel Vadot - Thippeswamy Havalige <thippeswamy.havalige@amd.com> 118bab661aSEmmanuel Vadot 128bab661aSEmmanuel VadotallOf: 137d0873ebSEmmanuel Vadot - $ref: /schemas/pci/pci-host-bridge.yaml# 148bab661aSEmmanuel Vadot - $ref: /schemas/interrupt-controller/msi-controller.yaml# 158bab661aSEmmanuel Vadot 168bab661aSEmmanuel Vadotproperties: 178bab661aSEmmanuel Vadot compatible: 188bab661aSEmmanuel Vadot const: xlnx,nwl-pcie-2.11 198bab661aSEmmanuel Vadot 208bab661aSEmmanuel Vadot reg: 218bab661aSEmmanuel Vadot items: 228bab661aSEmmanuel Vadot - description: PCIe bridge registers location. 238bab661aSEmmanuel Vadot - description: PCIe Controller registers location. 248bab661aSEmmanuel Vadot - description: PCIe Configuration space region. 258bab661aSEmmanuel Vadot 268bab661aSEmmanuel Vadot reg-names: 278bab661aSEmmanuel Vadot items: 288bab661aSEmmanuel Vadot - const: breg 298bab661aSEmmanuel Vadot - const: pcireg 308bab661aSEmmanuel Vadot - const: cfg 318bab661aSEmmanuel Vadot 328bab661aSEmmanuel Vadot interrupts: 338bab661aSEmmanuel Vadot items: 348bab661aSEmmanuel Vadot - description: interrupt asserted when miscellaneous interrupt is received 358bab661aSEmmanuel Vadot - description: unused interrupt(dummy) 368bab661aSEmmanuel Vadot - description: interrupt asserted when a legacy interrupt is received 378bab661aSEmmanuel Vadot - description: msi1 interrupt asserted when an MSI is received 388bab661aSEmmanuel Vadot - description: msi0 interrupt asserted when an MSI is received 398bab661aSEmmanuel Vadot 408bab661aSEmmanuel Vadot interrupt-names: 418bab661aSEmmanuel Vadot items: 428bab661aSEmmanuel Vadot - const: misc 438bab661aSEmmanuel Vadot - const: dummy 448bab661aSEmmanuel Vadot - const: intx 458bab661aSEmmanuel Vadot - const: msi1 468bab661aSEmmanuel Vadot - const: msi0 478bab661aSEmmanuel Vadot 488bab661aSEmmanuel Vadot interrupt-map-mask: 498bab661aSEmmanuel Vadot items: 508bab661aSEmmanuel Vadot - const: 0 518bab661aSEmmanuel Vadot - const: 0 528bab661aSEmmanuel Vadot - const: 0 538bab661aSEmmanuel Vadot - const: 7 548bab661aSEmmanuel Vadot 558bab661aSEmmanuel Vadot "#interrupt-cells": 568bab661aSEmmanuel Vadot const: 1 578bab661aSEmmanuel Vadot 588bab661aSEmmanuel Vadot msi-parent: 598bab661aSEmmanuel Vadot description: MSI controller the device is capable of using. 608bab661aSEmmanuel Vadot 618bab661aSEmmanuel Vadot interrupt-map: 628bab661aSEmmanuel Vadot maxItems: 4 638bab661aSEmmanuel Vadot 64*b2d2a78aSEmmanuel Vadot phys: 65*b2d2a78aSEmmanuel Vadot minItems: 1 66*b2d2a78aSEmmanuel Vadot maxItems: 4 67*b2d2a78aSEmmanuel Vadot description: One phy per logical lane, in order 68*b2d2a78aSEmmanuel Vadot 698bab661aSEmmanuel Vadot power-domains: 708bab661aSEmmanuel Vadot maxItems: 1 718bab661aSEmmanuel Vadot 728bab661aSEmmanuel Vadot iommus: 738bab661aSEmmanuel Vadot maxItems: 1 748bab661aSEmmanuel Vadot 758bab661aSEmmanuel Vadot dma-coherent: 768bab661aSEmmanuel Vadot description: optional, only needed if DMA operations are coherent. 778bab661aSEmmanuel Vadot 788bab661aSEmmanuel Vadot clocks: 798bab661aSEmmanuel Vadot maxItems: 1 808bab661aSEmmanuel Vadot description: optional, input clock specifier. 818bab661aSEmmanuel Vadot 828bab661aSEmmanuel Vadot legacy-interrupt-controller: 838bab661aSEmmanuel Vadot description: Interrupt controller node for handling legacy PCI interrupts. 848bab661aSEmmanuel Vadot type: object 858bab661aSEmmanuel Vadot properties: 868bab661aSEmmanuel Vadot "#address-cells": 878bab661aSEmmanuel Vadot const: 0 888bab661aSEmmanuel Vadot 898bab661aSEmmanuel Vadot "#interrupt-cells": 908bab661aSEmmanuel Vadot const: 1 918bab661aSEmmanuel Vadot 927d0873ebSEmmanuel Vadot interrupt-controller: true 938bab661aSEmmanuel Vadot 948bab661aSEmmanuel Vadot required: 958bab661aSEmmanuel Vadot - "#address-cells" 968bab661aSEmmanuel Vadot - "#interrupt-cells" 978bab661aSEmmanuel Vadot - interrupt-controller 988bab661aSEmmanuel Vadot 998bab661aSEmmanuel Vadot additionalProperties: false 1008bab661aSEmmanuel Vadot 1018bab661aSEmmanuel Vadotrequired: 1028bab661aSEmmanuel Vadot - compatible 1038bab661aSEmmanuel Vadot - reg 1048bab661aSEmmanuel Vadot - reg-names 1058bab661aSEmmanuel Vadot - interrupts 1068bab661aSEmmanuel Vadot - "#interrupt-cells" 1078bab661aSEmmanuel Vadot - interrupt-map 1088bab661aSEmmanuel Vadot - interrupt-map-mask 1098bab661aSEmmanuel Vadot - msi-controller 1108bab661aSEmmanuel Vadot - power-domains 1118bab661aSEmmanuel Vadot 1128bab661aSEmmanuel VadotunevaluatedProperties: false 1138bab661aSEmmanuel Vadot 1148bab661aSEmmanuel Vadotexamples: 1158bab661aSEmmanuel Vadot - | 1168bab661aSEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 1178bab661aSEmmanuel Vadot #include <dt-bindings/interrupt-controller/irq.h> 118*b2d2a78aSEmmanuel Vadot #include <dt-bindings/phy/phy.h> 1198bab661aSEmmanuel Vadot #include <dt-bindings/power/xlnx-zynqmp-power.h> 1208bab661aSEmmanuel Vadot soc { 1218bab661aSEmmanuel Vadot #address-cells = <2>; 1228bab661aSEmmanuel Vadot #size-cells = <2>; 1238bab661aSEmmanuel Vadot nwl_pcie: pcie@fd0e0000 { 1248bab661aSEmmanuel Vadot compatible = "xlnx,nwl-pcie-2.11"; 1258bab661aSEmmanuel Vadot reg = <0x0 0xfd0e0000 0x0 0x1000>, 1268bab661aSEmmanuel Vadot <0x0 0xfd480000 0x0 0x1000>, 12784943d6fSEmmanuel Vadot <0x80 0x00000000 0x0 0x10000000>; 1288bab661aSEmmanuel Vadot reg-names = "breg", "pcireg", "cfg"; 1298bab661aSEmmanuel Vadot ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>, 1308bab661aSEmmanuel Vadot <0x43000000 0x00000006 0x0 0x00000006 0x0 0x00000002 0x0>; 1318bab661aSEmmanuel Vadot #address-cells = <3>; 1328bab661aSEmmanuel Vadot #size-cells = <2>; 1338bab661aSEmmanuel Vadot #interrupt-cells = <1>; 1348bab661aSEmmanuel Vadot msi-controller; 1358bab661aSEmmanuel Vadot device_type = "pci"; 1368bab661aSEmmanuel Vadot interrupt-parent = <&gic>; 1378bab661aSEmmanuel Vadot interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 116 IRQ_TYPE_EDGE_RISING>, 1388bab661aSEmmanuel Vadot <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 115 IRQ_TYPE_EDGE_RISING>, 1398bab661aSEmmanuel Vadot <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>; 1408bab661aSEmmanuel Vadot interrupt-names = "misc", "dummy", "intx", "msi1", "msi0"; 1418bab661aSEmmanuel Vadot interrupt-map-mask = <0x0 0x0 0x0 0x7>; 1428bab661aSEmmanuel Vadot interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>, 1438bab661aSEmmanuel Vadot <0x0 0x0 0x0 0x2 &pcie_intc 0x2>, 1448bab661aSEmmanuel Vadot <0x0 0x0 0x0 0x3 &pcie_intc 0x3>, 1458bab661aSEmmanuel Vadot <0x0 0x0 0x0 0x4 &pcie_intc 0x4>; 1468bab661aSEmmanuel Vadot msi-parent = <&nwl_pcie>; 147*b2d2a78aSEmmanuel Vadot phys = <&psgtr 0 PHY_TYPE_PCIE 0 0>; 1488bab661aSEmmanuel Vadot power-domains = <&zynqmp_firmware PD_PCIE>; 1498bab661aSEmmanuel Vadot iommus = <&smmu 0x4d0>; 1508bab661aSEmmanuel Vadot pcie_intc: legacy-interrupt-controller { 1518bab661aSEmmanuel Vadot interrupt-controller; 1528bab661aSEmmanuel Vadot #address-cells = <0>; 1538bab661aSEmmanuel Vadot #interrupt-cells = <1>; 1548bab661aSEmmanuel Vadot }; 1558bab661aSEmmanuel Vadot }; 1568bab661aSEmmanuel Vadot }; 157