[PATCH V226/7] dt-bindings: PCI: host-generic-pci: Add snps,dw-pcie-ecam-msi binding

Mayank Rana quic_mrana at quicinc.com
Mon Jul 15 11:13:34 PDT 2024


To support MSI functionality using Synopsys DesignWare PCIe controller
based MSI controller with ECAM driver, add "snps,dw-pcie-ecam-msi
compatible binding which uses provided SPIs to support MSI functionality.

Signed-off-by: Mayank Rana <quic_mrana at quicinc.com>
---
 .../devicetree/bindings/pci/host-generic-pci.yaml  | 57 ++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/Documentation/devicetree/bindings/pci/host-generic-pci.yaml b/Documentation/devicetree/bindings/pci/host-generic-pci.yaml
index 9c714fa..9e860d5 100644
--- a/Documentation/devicetree/bindings/pci/host-generic-pci.yaml
+++ b/Documentation/devicetree/bindings/pci/host-generic-pci.yaml
@@ -81,6 +81,12 @@ properties:
               - marvell,armada8k-pcie-ecam
               - socionext,synquacer-pcie-ecam
           - const: snps,dw-pcie-ecam
+      - description: |
+         Firmware is configuring Synopsys DesignWare PCIe controller in RC mode with
+         ECAM compatible fashion. To use MSI controller of Synopsys DesignWare PCIe
+         controller for MSI functionality, this compatible is used.
+        items:
+          - const: snps,dw-pcie-ecam-msi
       - description:
           CAM or ECAM compliant PCI host controllers without any quirks
         enum:
@@ -116,6 +122,20 @@ properties:
       A phandle to the node that controls power or/and system resource or interface to firmware
       to enable ECAM compliant PCIe root complex.
 
+  interrupts:
+    description:
+      DWC PCIe Root Port/Complex specific MSI interrupt/IRQs.
+    minItems: 1
+    maxItems: 8
+
+  interrupt-names:
+    description:
+      MSI interrupt names
+    minItems: 1
+    maxItems: 8
+    items:
+        pattern: '^msi[0-9]+$'
+
 required:
   - compatible
   - reg
@@ -146,11 +166,22 @@ allOf:
         reg:
           maxItems: 1
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: snps,dw-pcie-ecam-msi
+    then:
+      required:
+        - interrupts
+        - interrupt-names
+
 unevaluatedProperties: false
 
 examples:
   - |
 
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
     bus {
         #address-cells = <2>;
         #size-cells = <2>;
@@ -180,5 +211,31 @@ examples:
             interrupt-map-mask = <0xf800 0x0 0x0  0x7>;
             power-domains = <&scmi5_pd 0>;
         };
+
+        pcie0: pci at 1c00000 {
+            compatible = "snps,dw-pcie-ecam-msi";
+            reg = <0x4 0x00000000 0 0x10000000>;
+            device_type = "pci";
+            #address-cells = <3>;
+            #size-cells = <2>;
+            ranges = <0x02000000 0x0 0x40100000 0x0 0x40100000 0x0 0x1ff00000>,
+                  <0x43000000 0x4 0x10100000 0x4 0x10100000 0x0 0x40000000>;
+            bus-range = <0x00 0xff>;
+            dma-coherent;
+            linux,pci-domain = <0>;
+            power-domains = <&scmi5_pd 0>;
+            iommu-map = <0x0 &pcie_smmu 0x0000 0x1>,
+                <0x100 &pcie_smmu 0x0001 0x1>;
+
+            interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
+                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "msi0", "msi1", "msi2", "msi3", "msi4", "msi5", "msi6", "msi7";
+      };
     };
 ...
-- 
2.7.4




More information about the linux-arm-kernel mailing list