xref: /freebsd/sys/contrib/device-tree/Bindings/pci/xlnx,nwl-pcie.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
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