xref: /openbmc/linux/Documentation/devicetree/bindings/pci/xlnx,nwl-pcie.yaml (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
1*7c7c3a79SThippeswamy Havalige# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*7c7c3a79SThippeswamy Havalige%YAML 1.2
3*7c7c3a79SThippeswamy Havalige---
4*7c7c3a79SThippeswamy Havalige$id: http://devicetree.org/schemas/pci/xlnx,nwl-pcie.yaml#
5*7c7c3a79SThippeswamy Havalige$schema: http://devicetree.org/meta-schemas/core.yaml#
6*7c7c3a79SThippeswamy Havalige
7*7c7c3a79SThippeswamy Havaligetitle: Xilinx NWL PCIe Root Port Bridge
8*7c7c3a79SThippeswamy Havalige
9*7c7c3a79SThippeswamy Havaligemaintainers:
10*7c7c3a79SThippeswamy Havalige  - Thippeswamy Havalige <thippeswamy.havalige@amd.com>
11*7c7c3a79SThippeswamy Havalige
12*7c7c3a79SThippeswamy HavaligeallOf:
13*7c7c3a79SThippeswamy Havalige  - $ref: /schemas/pci/pci-bus.yaml#
14*7c7c3a79SThippeswamy Havalige  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
15*7c7c3a79SThippeswamy Havalige
16*7c7c3a79SThippeswamy Havaligeproperties:
17*7c7c3a79SThippeswamy Havalige  compatible:
18*7c7c3a79SThippeswamy Havalige    const: xlnx,nwl-pcie-2.11
19*7c7c3a79SThippeswamy Havalige
20*7c7c3a79SThippeswamy Havalige  reg:
21*7c7c3a79SThippeswamy Havalige    items:
22*7c7c3a79SThippeswamy Havalige      - description: PCIe bridge registers location.
23*7c7c3a79SThippeswamy Havalige      - description: PCIe Controller registers location.
24*7c7c3a79SThippeswamy Havalige      - description: PCIe Configuration space region.
25*7c7c3a79SThippeswamy Havalige
26*7c7c3a79SThippeswamy Havalige  reg-names:
27*7c7c3a79SThippeswamy Havalige    items:
28*7c7c3a79SThippeswamy Havalige      - const: breg
29*7c7c3a79SThippeswamy Havalige      - const: pcireg
30*7c7c3a79SThippeswamy Havalige      - const: cfg
31*7c7c3a79SThippeswamy Havalige
32*7c7c3a79SThippeswamy Havalige  interrupts:
33*7c7c3a79SThippeswamy Havalige    items:
34*7c7c3a79SThippeswamy Havalige      - description: interrupt asserted when miscellaneous interrupt is received
35*7c7c3a79SThippeswamy Havalige      - description: unused interrupt(dummy)
36*7c7c3a79SThippeswamy Havalige      - description: interrupt asserted when a legacy interrupt is received
37*7c7c3a79SThippeswamy Havalige      - description: msi1 interrupt asserted when an MSI is received
38*7c7c3a79SThippeswamy Havalige      - description: msi0 interrupt asserted when an MSI is received
39*7c7c3a79SThippeswamy Havalige
40*7c7c3a79SThippeswamy Havalige  interrupt-names:
41*7c7c3a79SThippeswamy Havalige    items:
42*7c7c3a79SThippeswamy Havalige      - const: misc
43*7c7c3a79SThippeswamy Havalige      - const: dummy
44*7c7c3a79SThippeswamy Havalige      - const: intx
45*7c7c3a79SThippeswamy Havalige      - const: msi1
46*7c7c3a79SThippeswamy Havalige      - const: msi0
47*7c7c3a79SThippeswamy Havalige
48*7c7c3a79SThippeswamy Havalige  interrupt-map-mask:
49*7c7c3a79SThippeswamy Havalige    items:
50*7c7c3a79SThippeswamy Havalige      - const: 0
51*7c7c3a79SThippeswamy Havalige      - const: 0
52*7c7c3a79SThippeswamy Havalige      - const: 0
53*7c7c3a79SThippeswamy Havalige      - const: 7
54*7c7c3a79SThippeswamy Havalige
55*7c7c3a79SThippeswamy Havalige  "#interrupt-cells":
56*7c7c3a79SThippeswamy Havalige    const: 1
57*7c7c3a79SThippeswamy Havalige
58*7c7c3a79SThippeswamy Havalige  msi-parent:
59*7c7c3a79SThippeswamy Havalige    description: MSI controller the device is capable of using.
60*7c7c3a79SThippeswamy Havalige
61*7c7c3a79SThippeswamy Havalige  interrupt-map:
62*7c7c3a79SThippeswamy Havalige    maxItems: 4
63*7c7c3a79SThippeswamy Havalige
64*7c7c3a79SThippeswamy Havalige  power-domains:
65*7c7c3a79SThippeswamy Havalige    maxItems: 1
66*7c7c3a79SThippeswamy Havalige
67*7c7c3a79SThippeswamy Havalige  iommus:
68*7c7c3a79SThippeswamy Havalige    maxItems: 1
69*7c7c3a79SThippeswamy Havalige
70*7c7c3a79SThippeswamy Havalige  dma-coherent:
71*7c7c3a79SThippeswamy Havalige    description: optional, only needed if DMA operations are coherent.
72*7c7c3a79SThippeswamy Havalige
73*7c7c3a79SThippeswamy Havalige  clocks:
74*7c7c3a79SThippeswamy Havalige    maxItems: 1
75*7c7c3a79SThippeswamy Havalige    description: optional, input clock specifier.
76*7c7c3a79SThippeswamy Havalige
77*7c7c3a79SThippeswamy Havalige  legacy-interrupt-controller:
78*7c7c3a79SThippeswamy Havalige    description: Interrupt controller node for handling legacy PCI interrupts.
79*7c7c3a79SThippeswamy Havalige    type: object
80*7c7c3a79SThippeswamy Havalige    properties:
81*7c7c3a79SThippeswamy Havalige      "#address-cells":
82*7c7c3a79SThippeswamy Havalige        const: 0
83*7c7c3a79SThippeswamy Havalige
84*7c7c3a79SThippeswamy Havalige      "#interrupt-cells":
85*7c7c3a79SThippeswamy Havalige        const: 1
86*7c7c3a79SThippeswamy Havalige
87*7c7c3a79SThippeswamy Havalige      "interrupt-controller": true
88*7c7c3a79SThippeswamy Havalige
89*7c7c3a79SThippeswamy Havalige    required:
90*7c7c3a79SThippeswamy Havalige      - "#address-cells"
91*7c7c3a79SThippeswamy Havalige      - "#interrupt-cells"
92*7c7c3a79SThippeswamy Havalige      - interrupt-controller
93*7c7c3a79SThippeswamy Havalige
94*7c7c3a79SThippeswamy Havalige    additionalProperties: false
95*7c7c3a79SThippeswamy Havalige
96*7c7c3a79SThippeswamy Havaligerequired:
97*7c7c3a79SThippeswamy Havalige  - compatible
98*7c7c3a79SThippeswamy Havalige  - reg
99*7c7c3a79SThippeswamy Havalige  - reg-names
100*7c7c3a79SThippeswamy Havalige  - interrupts
101*7c7c3a79SThippeswamy Havalige  - "#interrupt-cells"
102*7c7c3a79SThippeswamy Havalige  - interrupt-map
103*7c7c3a79SThippeswamy Havalige  - interrupt-map-mask
104*7c7c3a79SThippeswamy Havalige  - msi-controller
105*7c7c3a79SThippeswamy Havalige  - power-domains
106*7c7c3a79SThippeswamy Havalige
107*7c7c3a79SThippeswamy HavaligeunevaluatedProperties: false
108*7c7c3a79SThippeswamy Havalige
109*7c7c3a79SThippeswamy Havaligeexamples:
110*7c7c3a79SThippeswamy Havalige  - |
111*7c7c3a79SThippeswamy Havalige    #include <dt-bindings/interrupt-controller/arm-gic.h>
112*7c7c3a79SThippeswamy Havalige    #include <dt-bindings/interrupt-controller/irq.h>
113*7c7c3a79SThippeswamy Havalige    #include <dt-bindings/power/xlnx-zynqmp-power.h>
114*7c7c3a79SThippeswamy Havalige    soc {
115*7c7c3a79SThippeswamy Havalige        #address-cells = <2>;
116*7c7c3a79SThippeswamy Havalige        #size-cells = <2>;
117*7c7c3a79SThippeswamy Havalige        nwl_pcie: pcie@fd0e0000 {
118*7c7c3a79SThippeswamy Havalige            compatible = "xlnx,nwl-pcie-2.11";
119*7c7c3a79SThippeswamy Havalige            reg = <0x0 0xfd0e0000 0x0 0x1000>,
120*7c7c3a79SThippeswamy Havalige                  <0x0 0xfd480000 0x0 0x1000>,
121*7c7c3a79SThippeswamy Havalige                  <0x80 0x00000000 0x0 0x1000000>;
122*7c7c3a79SThippeswamy Havalige            reg-names = "breg", "pcireg", "cfg";
123*7c7c3a79SThippeswamy Havalige            ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>,
124*7c7c3a79SThippeswamy Havalige                     <0x43000000 0x00000006 0x0 0x00000006 0x0 0x00000002 0x0>;
125*7c7c3a79SThippeswamy Havalige            #address-cells = <3>;
126*7c7c3a79SThippeswamy Havalige            #size-cells = <2>;
127*7c7c3a79SThippeswamy Havalige            #interrupt-cells = <1>;
128*7c7c3a79SThippeswamy Havalige            msi-controller;
129*7c7c3a79SThippeswamy Havalige            device_type = "pci";
130*7c7c3a79SThippeswamy Havalige            interrupt-parent = <&gic>;
131*7c7c3a79SThippeswamy Havalige            interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 116 IRQ_TYPE_EDGE_RISING>,
132*7c7c3a79SThippeswamy Havalige                         <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 115 IRQ_TYPE_EDGE_RISING>,
133*7c7c3a79SThippeswamy Havalige                         <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
134*7c7c3a79SThippeswamy Havalige            interrupt-names = "misc", "dummy", "intx", "msi1", "msi0";
135*7c7c3a79SThippeswamy Havalige            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
136*7c7c3a79SThippeswamy Havalige            interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc 0x1>,
137*7c7c3a79SThippeswamy Havalige                            <0x0 0x0 0x0 0x2 &pcie_intc 0x2>,
138*7c7c3a79SThippeswamy Havalige                            <0x0 0x0 0x0 0x3 &pcie_intc 0x3>,
139*7c7c3a79SThippeswamy Havalige                            <0x0 0x0 0x0 0x4 &pcie_intc 0x4>;
140*7c7c3a79SThippeswamy Havalige            msi-parent = <&nwl_pcie>;
141*7c7c3a79SThippeswamy Havalige            power-domains = <&zynqmp_firmware PD_PCIE>;
142*7c7c3a79SThippeswamy Havalige            iommus = <&smmu 0x4d0>;
143*7c7c3a79SThippeswamy Havalige            pcie_intc: legacy-interrupt-controller {
144*7c7c3a79SThippeswamy Havalige                interrupt-controller;
145*7c7c3a79SThippeswamy Havalige                #address-cells = <0>;
146*7c7c3a79SThippeswamy Havalige                #interrupt-cells = <1>;
147*7c7c3a79SThippeswamy Havalige            };
148*7c7c3a79SThippeswamy Havalige        };
149*7c7c3a79SThippeswamy Havalige    };
150