xref: /freebsd/sys/contrib/device-tree/Bindings/pci/qcom,pcie.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
1d5b0e70fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2d5b0e70fSEmmanuel Vadot%YAML 1.2
3d5b0e70fSEmmanuel Vadot---
4d5b0e70fSEmmanuel Vadot$id: http://devicetree.org/schemas/pci/qcom,pcie.yaml#
5d5b0e70fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6d5b0e70fSEmmanuel Vadot
7d5b0e70fSEmmanuel Vadottitle: Qualcomm PCI express root complex
8d5b0e70fSEmmanuel Vadot
9d5b0e70fSEmmanuel Vadotmaintainers:
10d5b0e70fSEmmanuel Vadot  - Bjorn Andersson <bjorn.andersson@linaro.org>
11d5b0e70fSEmmanuel Vadot  - Stanimir Varbanov <svarbanov@mm-sol.com>
12d5b0e70fSEmmanuel Vadot
13d5b0e70fSEmmanuel Vadotdescription: |
14b97ee269SEmmanuel Vadot  Qualcomm PCIe root complex controller is based on the Synopsys DesignWare
15d5b0e70fSEmmanuel Vadot  PCIe IP.
16d5b0e70fSEmmanuel Vadot
17d5b0e70fSEmmanuel Vadotproperties:
18d5b0e70fSEmmanuel Vadot  compatible:
19d5b0e70fSEmmanuel Vadot    enum:
20d5b0e70fSEmmanuel Vadot      - qcom,pcie-ipq8064
21d5b0e70fSEmmanuel Vadot      - qcom,pcie-ipq8064-v2
22d5b0e70fSEmmanuel Vadot      - qcom,pcie-apq8064
23d5b0e70fSEmmanuel Vadot      - qcom,pcie-apq8084
24d5b0e70fSEmmanuel Vadot      - qcom,pcie-msm8996
25d5b0e70fSEmmanuel Vadot      - qcom,pcie-ipq4019
26d5b0e70fSEmmanuel Vadot      - qcom,pcie-ipq8074
27d5b0e70fSEmmanuel Vadot      - qcom,pcie-qcs404
28*7ef62cebSEmmanuel Vadot      - qcom,pcie-sa8540p
29d5b0e70fSEmmanuel Vadot      - qcom,pcie-sc7280
30d5b0e70fSEmmanuel Vadot      - qcom,pcie-sc8180x
31*7ef62cebSEmmanuel Vadot      - qcom,pcie-sc8280xp
32d5b0e70fSEmmanuel Vadot      - qcom,pcie-sdm845
33d5b0e70fSEmmanuel Vadot      - qcom,pcie-sm8150
34d5b0e70fSEmmanuel Vadot      - qcom,pcie-sm8250
35d5b0e70fSEmmanuel Vadot      - qcom,pcie-sm8450-pcie0
36d5b0e70fSEmmanuel Vadot      - qcom,pcie-sm8450-pcie1
37d5b0e70fSEmmanuel Vadot      - qcom,pcie-ipq6018
38d5b0e70fSEmmanuel Vadot
39d5b0e70fSEmmanuel Vadot  reg:
40d5b0e70fSEmmanuel Vadot    minItems: 4
41d5b0e70fSEmmanuel Vadot    maxItems: 5
42d5b0e70fSEmmanuel Vadot
43d5b0e70fSEmmanuel Vadot  reg-names:
44d5b0e70fSEmmanuel Vadot    minItems: 4
45d5b0e70fSEmmanuel Vadot    maxItems: 5
46d5b0e70fSEmmanuel Vadot
47d5b0e70fSEmmanuel Vadot  interrupts:
48b97ee269SEmmanuel Vadot    minItems: 1
49b97ee269SEmmanuel Vadot    maxItems: 8
50d5b0e70fSEmmanuel Vadot
51d5b0e70fSEmmanuel Vadot  interrupt-names:
52b97ee269SEmmanuel Vadot    minItems: 1
53b97ee269SEmmanuel Vadot    maxItems: 8
54d5b0e70fSEmmanuel Vadot
55d5b0e70fSEmmanuel Vadot  # Common definitions for clocks, clock-names and reset.
56d5b0e70fSEmmanuel Vadot  # Platform constraints are described later.
57d5b0e70fSEmmanuel Vadot  clocks:
58d5b0e70fSEmmanuel Vadot    minItems: 3
59*7ef62cebSEmmanuel Vadot    maxItems: 13
60d5b0e70fSEmmanuel Vadot
61d5b0e70fSEmmanuel Vadot  clock-names:
62d5b0e70fSEmmanuel Vadot    minItems: 3
63*7ef62cebSEmmanuel Vadot    maxItems: 13
64d5b0e70fSEmmanuel Vadot
65d5b0e70fSEmmanuel Vadot  resets:
66d5b0e70fSEmmanuel Vadot    minItems: 1
67d5b0e70fSEmmanuel Vadot    maxItems: 12
68d5b0e70fSEmmanuel Vadot
69d5b0e70fSEmmanuel Vadot  resets-names:
70d5b0e70fSEmmanuel Vadot    minItems: 1
71d5b0e70fSEmmanuel Vadot    maxItems: 12
72d5b0e70fSEmmanuel Vadot
73d5b0e70fSEmmanuel Vadot  vdda-supply:
74d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply
75d5b0e70fSEmmanuel Vadot
76d5b0e70fSEmmanuel Vadot  vdda_phy-supply:
77d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply for PHY
78d5b0e70fSEmmanuel Vadot
79d5b0e70fSEmmanuel Vadot  vdda_refclk-supply:
80d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply for IC which generates reference clock
81d5b0e70fSEmmanuel Vadot
82d5b0e70fSEmmanuel Vadot  vddpe-3v3-supply:
83d5b0e70fSEmmanuel Vadot    description: A phandle to the PCIe endpoint power supply
84d5b0e70fSEmmanuel Vadot
85d5b0e70fSEmmanuel Vadot  phys:
86d5b0e70fSEmmanuel Vadot    maxItems: 1
87d5b0e70fSEmmanuel Vadot
88d5b0e70fSEmmanuel Vadot  phy-names:
89d5b0e70fSEmmanuel Vadot    items:
90d5b0e70fSEmmanuel Vadot      - const: pciephy
91d5b0e70fSEmmanuel Vadot
92d5b0e70fSEmmanuel Vadot  power-domains:
93d5b0e70fSEmmanuel Vadot    maxItems: 1
94d5b0e70fSEmmanuel Vadot
95d5b0e70fSEmmanuel Vadot  perst-gpios:
96d5b0e70fSEmmanuel Vadot    description: GPIO controlled connection to PERST# signal
97d5b0e70fSEmmanuel Vadot    maxItems: 1
98d5b0e70fSEmmanuel Vadot
99d5b0e70fSEmmanuel Vadot  wake-gpios:
100d5b0e70fSEmmanuel Vadot    description: GPIO controlled connection to WAKE# signal
101d5b0e70fSEmmanuel Vadot    maxItems: 1
102d5b0e70fSEmmanuel Vadot
103d5b0e70fSEmmanuel Vadotrequired:
104d5b0e70fSEmmanuel Vadot  - compatible
105d5b0e70fSEmmanuel Vadot  - reg
106d5b0e70fSEmmanuel Vadot  - reg-names
107d5b0e70fSEmmanuel Vadot  - interrupts
108d5b0e70fSEmmanuel Vadot  - interrupt-names
109d5b0e70fSEmmanuel Vadot  - "#interrupt-cells"
110d5b0e70fSEmmanuel Vadot  - interrupt-map-mask
111d5b0e70fSEmmanuel Vadot  - interrupt-map
112d5b0e70fSEmmanuel Vadot  - clocks
113d5b0e70fSEmmanuel Vadot  - clock-names
114d5b0e70fSEmmanuel Vadot
115d5b0e70fSEmmanuel VadotallOf:
116d5b0e70fSEmmanuel Vadot  - $ref: /schemas/pci/pci-bus.yaml#
117d5b0e70fSEmmanuel Vadot  - if:
118d5b0e70fSEmmanuel Vadot      properties:
119d5b0e70fSEmmanuel Vadot        compatible:
120d5b0e70fSEmmanuel Vadot          contains:
121d5b0e70fSEmmanuel Vadot            enum:
122d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8064
123d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq4019
124d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064
125d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064v2
126d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8074
127d5b0e70fSEmmanuel Vadot              - qcom,pcie-qcs404
128d5b0e70fSEmmanuel Vadot    then:
129d5b0e70fSEmmanuel Vadot      properties:
130d5b0e70fSEmmanuel Vadot        reg:
131d5b0e70fSEmmanuel Vadot          minItems: 4
132d5b0e70fSEmmanuel Vadot          maxItems: 4
133d5b0e70fSEmmanuel Vadot        reg-names:
134d5b0e70fSEmmanuel Vadot          items:
135d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
136d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
137d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
138d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
139d5b0e70fSEmmanuel Vadot
140d5b0e70fSEmmanuel Vadot  - if:
141d5b0e70fSEmmanuel Vadot      properties:
142d5b0e70fSEmmanuel Vadot        compatible:
143d5b0e70fSEmmanuel Vadot          contains:
144d5b0e70fSEmmanuel Vadot            enum:
145d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq6018
146d5b0e70fSEmmanuel Vadot    then:
147d5b0e70fSEmmanuel Vadot      properties:
148d5b0e70fSEmmanuel Vadot        reg:
149d5b0e70fSEmmanuel Vadot          minItems: 5
150d5b0e70fSEmmanuel Vadot          maxItems: 5
151d5b0e70fSEmmanuel Vadot        reg-names:
152d5b0e70fSEmmanuel Vadot          items:
153d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
154d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
155d5b0e70fSEmmanuel Vadot            - const: atu # ATU address space
156d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
157d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
158d5b0e70fSEmmanuel Vadot
159d5b0e70fSEmmanuel Vadot  - if:
160d5b0e70fSEmmanuel Vadot      properties:
161d5b0e70fSEmmanuel Vadot        compatible:
162d5b0e70fSEmmanuel Vadot          contains:
163d5b0e70fSEmmanuel Vadot            enum:
164d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8084
165d5b0e70fSEmmanuel Vadot              - qcom,pcie-msm8996
166d5b0e70fSEmmanuel Vadot              - qcom,pcie-sdm845
167d5b0e70fSEmmanuel Vadot    then:
168d5b0e70fSEmmanuel Vadot      properties:
169d5b0e70fSEmmanuel Vadot        reg:
170d5b0e70fSEmmanuel Vadot          minItems: 4
171d5b0e70fSEmmanuel Vadot          maxItems: 4
172d5b0e70fSEmmanuel Vadot        reg-names:
173d5b0e70fSEmmanuel Vadot          items:
174d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
175d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
176d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
177d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
178d5b0e70fSEmmanuel Vadot
179d5b0e70fSEmmanuel Vadot  - if:
180d5b0e70fSEmmanuel Vadot      properties:
181d5b0e70fSEmmanuel Vadot        compatible:
182d5b0e70fSEmmanuel Vadot          contains:
183d5b0e70fSEmmanuel Vadot            enum:
184d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc7280
185d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc8180x
186*7ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
187d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8250
188d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
189d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
190d5b0e70fSEmmanuel Vadot    then:
191d5b0e70fSEmmanuel Vadot      properties:
192d5b0e70fSEmmanuel Vadot        reg:
193d5b0e70fSEmmanuel Vadot          minItems: 5
194d5b0e70fSEmmanuel Vadot          maxItems: 5
195d5b0e70fSEmmanuel Vadot        reg-names:
196d5b0e70fSEmmanuel Vadot          items:
197d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
198d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
199d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
200d5b0e70fSEmmanuel Vadot            - const: atu # ATU address space
201d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
202d5b0e70fSEmmanuel Vadot
203d5b0e70fSEmmanuel Vadot  - if:
204d5b0e70fSEmmanuel Vadot      properties:
205d5b0e70fSEmmanuel Vadot        compatible:
206d5b0e70fSEmmanuel Vadot          contains:
207d5b0e70fSEmmanuel Vadot            enum:
208d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8064
209d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064
210d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064v2
211d5b0e70fSEmmanuel Vadot    then:
212d5b0e70fSEmmanuel Vadot      properties:
213d5b0e70fSEmmanuel Vadot        clocks:
214d5b0e70fSEmmanuel Vadot          minItems: 3
215d5b0e70fSEmmanuel Vadot          maxItems: 5
216d5b0e70fSEmmanuel Vadot        clock-names:
217d5b0e70fSEmmanuel Vadot          minItems: 3
218d5b0e70fSEmmanuel Vadot          items:
219d5b0e70fSEmmanuel Vadot            - const: core # Clocks the pcie hw block
220d5b0e70fSEmmanuel Vadot            - const: iface # Configuration AHB clock
221d5b0e70fSEmmanuel Vadot            - const: phy # Clocks the pcie PHY block
222d5b0e70fSEmmanuel Vadot            - const: aux # Clocks the pcie AUX block, not on apq8064
223d5b0e70fSEmmanuel Vadot            - const: ref # Clocks the pcie ref block, not on apq8064
224d5b0e70fSEmmanuel Vadot        resets:
225d5b0e70fSEmmanuel Vadot          minItems: 5
226d5b0e70fSEmmanuel Vadot          maxItems: 6
227d5b0e70fSEmmanuel Vadot        reset-names:
228d5b0e70fSEmmanuel Vadot          minItems: 5
229d5b0e70fSEmmanuel Vadot          items:
230d5b0e70fSEmmanuel Vadot            - const: axi # AXI reset
231d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
232d5b0e70fSEmmanuel Vadot            - const: por # POR reset
233d5b0e70fSEmmanuel Vadot            - const: pci # PCI reset
234d5b0e70fSEmmanuel Vadot            - const: phy # PHY reset
235d5b0e70fSEmmanuel Vadot            - const: ext # EXT reset, not on apq8064
236d5b0e70fSEmmanuel Vadot      required:
237d5b0e70fSEmmanuel Vadot        - vdda-supply
238d5b0e70fSEmmanuel Vadot        - vdda_phy-supply
239d5b0e70fSEmmanuel Vadot        - vdda_refclk-supply
240d5b0e70fSEmmanuel Vadot
241d5b0e70fSEmmanuel Vadot  - if:
242d5b0e70fSEmmanuel Vadot      properties:
243d5b0e70fSEmmanuel Vadot        compatible:
244d5b0e70fSEmmanuel Vadot          contains:
245d5b0e70fSEmmanuel Vadot            enum:
246d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8084
247d5b0e70fSEmmanuel Vadot    then:
248d5b0e70fSEmmanuel Vadot      properties:
249d5b0e70fSEmmanuel Vadot        clocks:
250d5b0e70fSEmmanuel Vadot          minItems: 4
251d5b0e70fSEmmanuel Vadot          maxItems: 4
252d5b0e70fSEmmanuel Vadot        clock-names:
253d5b0e70fSEmmanuel Vadot          items:
254d5b0e70fSEmmanuel Vadot            - const: iface # Configuration AHB clock
255d5b0e70fSEmmanuel Vadot            - const: master_bus # Master AXI clock
256d5b0e70fSEmmanuel Vadot            - const: slave_bus # Slave AXI clock
257d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary (AUX) clock
258d5b0e70fSEmmanuel Vadot        resets:
259d5b0e70fSEmmanuel Vadot          maxItems: 1
260d5b0e70fSEmmanuel Vadot        reset-names:
261d5b0e70fSEmmanuel Vadot          items:
262d5b0e70fSEmmanuel Vadot            - const: core # Core reset
263d5b0e70fSEmmanuel Vadot
264d5b0e70fSEmmanuel Vadot  - if:
265d5b0e70fSEmmanuel Vadot      properties:
266d5b0e70fSEmmanuel Vadot        compatible:
267d5b0e70fSEmmanuel Vadot          contains:
268d5b0e70fSEmmanuel Vadot            enum:
269d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq4019
270d5b0e70fSEmmanuel Vadot    then:
271d5b0e70fSEmmanuel Vadot      properties:
272d5b0e70fSEmmanuel Vadot        clocks:
273d5b0e70fSEmmanuel Vadot          minItems: 3
274d5b0e70fSEmmanuel Vadot          maxItems: 3
275d5b0e70fSEmmanuel Vadot        clock-names:
276d5b0e70fSEmmanuel Vadot          items:
277d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary (AUX) clock
278d5b0e70fSEmmanuel Vadot            - const: master_bus # Master AXI clock
279d5b0e70fSEmmanuel Vadot            - const: slave_bus # Slave AXI clock
280d5b0e70fSEmmanuel Vadot        resets:
281d5b0e70fSEmmanuel Vadot          minItems: 12
282d5b0e70fSEmmanuel Vadot          maxItems: 12
283d5b0e70fSEmmanuel Vadot        reset-names:
284d5b0e70fSEmmanuel Vadot          items:
285d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI master reset
286d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI slave reset
287d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
288d5b0e70fSEmmanuel Vadot            - const: axi_m_vmid # VMID reset
289d5b0e70fSEmmanuel Vadot            - const: axi_s_xpu # XPU reset
290d5b0e70fSEmmanuel Vadot            - const: parf # PARF reset
291d5b0e70fSEmmanuel Vadot            - const: phy # PHY reset
292d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI sticky reset
293d5b0e70fSEmmanuel Vadot            - const: pipe_sticky # PIPE sticky reset
294d5b0e70fSEmmanuel Vadot            - const: pwr # PWR reset
295d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
296d5b0e70fSEmmanuel Vadot            - const: phy_ahb # PHY AHB reset
297d5b0e70fSEmmanuel Vadot
298d5b0e70fSEmmanuel Vadot  - if:
299d5b0e70fSEmmanuel Vadot      properties:
300d5b0e70fSEmmanuel Vadot        compatible:
301d5b0e70fSEmmanuel Vadot          contains:
302d5b0e70fSEmmanuel Vadot            enum:
303d5b0e70fSEmmanuel Vadot              - qcom,pcie-msm8996
304d5b0e70fSEmmanuel Vadot    then:
305d5b0e70fSEmmanuel Vadot      oneOf:
306d5b0e70fSEmmanuel Vadot        - properties:
307d5b0e70fSEmmanuel Vadot            clock-names:
308d5b0e70fSEmmanuel Vadot              items:
309d5b0e70fSEmmanuel Vadot                - const: pipe # Pipe Clock driving internal logic
310d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary (AUX) clock
311d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
312d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
313d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
314d5b0e70fSEmmanuel Vadot        - properties:
315d5b0e70fSEmmanuel Vadot            clock-names:
316d5b0e70fSEmmanuel Vadot              items:
317d5b0e70fSEmmanuel Vadot                - const: pipe # Pipe Clock driving internal logic
318d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
319d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
320d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
321d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary (AUX) clock
322d5b0e70fSEmmanuel Vadot      properties:
323d5b0e70fSEmmanuel Vadot        clocks:
324d5b0e70fSEmmanuel Vadot          minItems: 5
325d5b0e70fSEmmanuel Vadot          maxItems: 5
326d5b0e70fSEmmanuel Vadot        resets: false
327d5b0e70fSEmmanuel Vadot        reset-names: false
328d5b0e70fSEmmanuel Vadot
329d5b0e70fSEmmanuel Vadot  - if:
330d5b0e70fSEmmanuel Vadot      properties:
331d5b0e70fSEmmanuel Vadot        compatible:
332d5b0e70fSEmmanuel Vadot          contains:
333d5b0e70fSEmmanuel Vadot            enum:
334d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8074
335d5b0e70fSEmmanuel Vadot    then:
336d5b0e70fSEmmanuel Vadot      properties:
337d5b0e70fSEmmanuel Vadot        clocks:
338d5b0e70fSEmmanuel Vadot          minItems: 5
339d5b0e70fSEmmanuel Vadot          maxItems: 5
340d5b0e70fSEmmanuel Vadot        clock-names:
341d5b0e70fSEmmanuel Vadot          items:
342d5b0e70fSEmmanuel Vadot            - const: iface # PCIe to SysNOC BIU clock
343d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master clock
344d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave clock
345d5b0e70fSEmmanuel Vadot            - const: ahb # AHB clock
346d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
347d5b0e70fSEmmanuel Vadot        resets:
348d5b0e70fSEmmanuel Vadot          minItems: 7
349d5b0e70fSEmmanuel Vadot          maxItems: 7
350d5b0e70fSEmmanuel Vadot        reset-names:
351d5b0e70fSEmmanuel Vadot          items:
352d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
353d5b0e70fSEmmanuel Vadot            - const: sleep # Sleep reset
354d5b0e70fSEmmanuel Vadot            - const: sticky # Core Sticky reset
355d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
356d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
357d5b0e70fSEmmanuel Vadot            - const: ahb # AHB Reset
358d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
359d5b0e70fSEmmanuel Vadot
360d5b0e70fSEmmanuel Vadot  - if:
361d5b0e70fSEmmanuel Vadot      properties:
362d5b0e70fSEmmanuel Vadot        compatible:
363d5b0e70fSEmmanuel Vadot          contains:
364d5b0e70fSEmmanuel Vadot            enum:
365d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq6018
366d5b0e70fSEmmanuel Vadot    then:
367d5b0e70fSEmmanuel Vadot      properties:
368d5b0e70fSEmmanuel Vadot        clocks:
369d5b0e70fSEmmanuel Vadot          minItems: 5
370d5b0e70fSEmmanuel Vadot          maxItems: 5
371d5b0e70fSEmmanuel Vadot        clock-names:
372d5b0e70fSEmmanuel Vadot          items:
373d5b0e70fSEmmanuel Vadot            - const: iface # PCIe to SysNOC BIU clock
374d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master clock
375d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave clock
376d5b0e70fSEmmanuel Vadot            - const: axi_bridge # AXI bridge clock
377d5b0e70fSEmmanuel Vadot            - const: rchng
378d5b0e70fSEmmanuel Vadot        resets:
379d5b0e70fSEmmanuel Vadot          minItems: 8
380d5b0e70fSEmmanuel Vadot          maxItems: 8
381d5b0e70fSEmmanuel Vadot        reset-names:
382d5b0e70fSEmmanuel Vadot          items:
383d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
384d5b0e70fSEmmanuel Vadot            - const: sleep # Sleep reset
385d5b0e70fSEmmanuel Vadot            - const: sticky # Core Sticky reset
386d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
387d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
388d5b0e70fSEmmanuel Vadot            - const: ahb # AHB Reset
389d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
390d5b0e70fSEmmanuel Vadot            - const: axi_s_sticky # AXI Slave Sticky reset
391d5b0e70fSEmmanuel Vadot
392d5b0e70fSEmmanuel Vadot  - if:
393d5b0e70fSEmmanuel Vadot      properties:
394d5b0e70fSEmmanuel Vadot        compatible:
395d5b0e70fSEmmanuel Vadot          contains:
396d5b0e70fSEmmanuel Vadot            enum:
397d5b0e70fSEmmanuel Vadot              - qcom,pcie-qcs404
398d5b0e70fSEmmanuel Vadot    then:
399d5b0e70fSEmmanuel Vadot      properties:
400d5b0e70fSEmmanuel Vadot        clocks:
401d5b0e70fSEmmanuel Vadot          minItems: 4
402d5b0e70fSEmmanuel Vadot          maxItems: 4
403d5b0e70fSEmmanuel Vadot        clock-names:
404d5b0e70fSEmmanuel Vadot          items:
405d5b0e70fSEmmanuel Vadot            - const: iface # AHB clock
406d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
407d5b0e70fSEmmanuel Vadot            - const: master_bus # AXI Master clock
408d5b0e70fSEmmanuel Vadot            - const: slave_bus # AXI Slave clock
409d5b0e70fSEmmanuel Vadot        resets:
410d5b0e70fSEmmanuel Vadot          minItems: 6
411d5b0e70fSEmmanuel Vadot          maxItems: 6
412d5b0e70fSEmmanuel Vadot        reset-names:
413d5b0e70fSEmmanuel Vadot          items:
414d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
415d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
416d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
417d5b0e70fSEmmanuel Vadot            - const: pipe_sticky # PIPE sticky reset
418d5b0e70fSEmmanuel Vadot            - const: pwr # PWR reset
419d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
420d5b0e70fSEmmanuel Vadot
421d5b0e70fSEmmanuel Vadot  - if:
422d5b0e70fSEmmanuel Vadot      properties:
423d5b0e70fSEmmanuel Vadot        compatible:
424d5b0e70fSEmmanuel Vadot          contains:
425d5b0e70fSEmmanuel Vadot            enum:
426d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc7280
427d5b0e70fSEmmanuel Vadot    then:
428d5b0e70fSEmmanuel Vadot      properties:
429d5b0e70fSEmmanuel Vadot        clocks:
430*7ef62cebSEmmanuel Vadot          minItems: 13
431*7ef62cebSEmmanuel Vadot          maxItems: 13
432d5b0e70fSEmmanuel Vadot        clock-names:
433d5b0e70fSEmmanuel Vadot          items:
434d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
435d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
436d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
437d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
438d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
439d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
440d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
441d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
442d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
443d5b0e70fSEmmanuel Vadot            - const: tbu # PCIe TBU clock
444d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
445*7ef62cebSEmmanuel Vadot            - const: aggre0 # Aggre NoC PCIe CENTER SF AXI clock
446*7ef62cebSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
447d5b0e70fSEmmanuel Vadot        resets:
448d5b0e70fSEmmanuel Vadot          maxItems: 1
449d5b0e70fSEmmanuel Vadot        reset-names:
450d5b0e70fSEmmanuel Vadot          items:
451d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
452d5b0e70fSEmmanuel Vadot
453d5b0e70fSEmmanuel Vadot  - if:
454d5b0e70fSEmmanuel Vadot      properties:
455d5b0e70fSEmmanuel Vadot        compatible:
456d5b0e70fSEmmanuel Vadot          contains:
457d5b0e70fSEmmanuel Vadot            enum:
458d5b0e70fSEmmanuel Vadot              - qcom,pcie-sdm845
459d5b0e70fSEmmanuel Vadot    then:
460d5b0e70fSEmmanuel Vadot      oneOf:
461d5b0e70fSEmmanuel Vadot          # Unfortunately the "optional" ref clock is used in the middle of the list
462d5b0e70fSEmmanuel Vadot        - properties:
463d5b0e70fSEmmanuel Vadot            clocks:
464d5b0e70fSEmmanuel Vadot              minItems: 8
465d5b0e70fSEmmanuel Vadot              maxItems: 8
466d5b0e70fSEmmanuel Vadot            clock-names:
467d5b0e70fSEmmanuel Vadot              items:
468d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
469d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
470d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
471d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
472d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
473d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
474d5b0e70fSEmmanuel Vadot                - const: ref # REFERENCE clock
475d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
476d5b0e70fSEmmanuel Vadot        - properties:
477d5b0e70fSEmmanuel Vadot            clocks:
478d5b0e70fSEmmanuel Vadot              minItems: 7
479d5b0e70fSEmmanuel Vadot              maxItems: 7
480d5b0e70fSEmmanuel Vadot            clock-names:
481d5b0e70fSEmmanuel Vadot              items:
482d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
483d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
484d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
485d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
486d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
487d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
488d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
489d5b0e70fSEmmanuel Vadot      properties:
490d5b0e70fSEmmanuel Vadot        resets:
491d5b0e70fSEmmanuel Vadot          maxItems: 1
492d5b0e70fSEmmanuel Vadot        reset-names:
493d5b0e70fSEmmanuel Vadot          items:
494d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
495d5b0e70fSEmmanuel Vadot
496d5b0e70fSEmmanuel Vadot  - if:
497d5b0e70fSEmmanuel Vadot      properties:
498d5b0e70fSEmmanuel Vadot        compatible:
499d5b0e70fSEmmanuel Vadot          contains:
500d5b0e70fSEmmanuel Vadot            enum:
501d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc8180x
502d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8150
503d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8250
504d5b0e70fSEmmanuel Vadot    then:
505d5b0e70fSEmmanuel Vadot      oneOf:
506d5b0e70fSEmmanuel Vadot          # Unfortunately the "optional" ref clock is used in the middle of the list
507d5b0e70fSEmmanuel Vadot        - properties:
508d5b0e70fSEmmanuel Vadot            clocks:
509d5b0e70fSEmmanuel Vadot              minItems: 9
510d5b0e70fSEmmanuel Vadot              maxItems: 9
511d5b0e70fSEmmanuel Vadot            clock-names:
512d5b0e70fSEmmanuel Vadot              items:
513d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
514d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
515d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
516d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
517d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
518d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
519d5b0e70fSEmmanuel Vadot                - const: ref # REFERENCE clock
520d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
521d5b0e70fSEmmanuel Vadot                - const: ddrss_sf_tbu # PCIe SF TBU clock
522d5b0e70fSEmmanuel Vadot        - properties:
523d5b0e70fSEmmanuel Vadot            clocks:
524d5b0e70fSEmmanuel Vadot              minItems: 8
525d5b0e70fSEmmanuel Vadot              maxItems: 8
526d5b0e70fSEmmanuel Vadot            clock-names:
527d5b0e70fSEmmanuel Vadot              items:
528d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
529d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
530d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
531d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
532d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
533d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
534d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
535d5b0e70fSEmmanuel Vadot                - const: ddrss_sf_tbu # PCIe SF TBU clock
536d5b0e70fSEmmanuel Vadot      properties:
537d5b0e70fSEmmanuel Vadot        resets:
538d5b0e70fSEmmanuel Vadot          maxItems: 1
539d5b0e70fSEmmanuel Vadot        reset-names:
540d5b0e70fSEmmanuel Vadot          items:
541d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
542d5b0e70fSEmmanuel Vadot
543d5b0e70fSEmmanuel Vadot  - if:
544d5b0e70fSEmmanuel Vadot      properties:
545d5b0e70fSEmmanuel Vadot        compatible:
546d5b0e70fSEmmanuel Vadot          contains:
547d5b0e70fSEmmanuel Vadot            enum:
548d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
549d5b0e70fSEmmanuel Vadot    then:
550d5b0e70fSEmmanuel Vadot      properties:
551d5b0e70fSEmmanuel Vadot        clocks:
552d5b0e70fSEmmanuel Vadot          minItems: 12
553d5b0e70fSEmmanuel Vadot          maxItems: 12
554d5b0e70fSEmmanuel Vadot        clock-names:
555d5b0e70fSEmmanuel Vadot          items:
556d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
557d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
558d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
559d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
560d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
561d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
562d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
563d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
564d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
565d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
566d5b0e70fSEmmanuel Vadot            - const: aggre0 # Aggre NoC PCIe0 AXI clock
567d5b0e70fSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
568d5b0e70fSEmmanuel Vadot        resets:
569d5b0e70fSEmmanuel Vadot          maxItems: 1
570d5b0e70fSEmmanuel Vadot        reset-names:
571d5b0e70fSEmmanuel Vadot          items:
572d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
573d5b0e70fSEmmanuel Vadot
574d5b0e70fSEmmanuel Vadot  - if:
575d5b0e70fSEmmanuel Vadot      properties:
576d5b0e70fSEmmanuel Vadot        compatible:
577d5b0e70fSEmmanuel Vadot          contains:
578d5b0e70fSEmmanuel Vadot            enum:
579d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
580d5b0e70fSEmmanuel Vadot    then:
581d5b0e70fSEmmanuel Vadot      properties:
582d5b0e70fSEmmanuel Vadot        clocks:
583d5b0e70fSEmmanuel Vadot          minItems: 11
584d5b0e70fSEmmanuel Vadot          maxItems: 11
585d5b0e70fSEmmanuel Vadot        clock-names:
586d5b0e70fSEmmanuel Vadot          items:
587d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
588d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
589d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
590d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
591d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
592d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
593d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
594d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
595d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
596d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
597d5b0e70fSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
598d5b0e70fSEmmanuel Vadot        resets:
599d5b0e70fSEmmanuel Vadot          maxItems: 1
600d5b0e70fSEmmanuel Vadot        reset-names:
601d5b0e70fSEmmanuel Vadot          items:
602d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
603d5b0e70fSEmmanuel Vadot
604d5b0e70fSEmmanuel Vadot  - if:
605*7ef62cebSEmmanuel Vadot      properties:
606*7ef62cebSEmmanuel Vadot        compatible:
607*7ef62cebSEmmanuel Vadot          contains:
608*7ef62cebSEmmanuel Vadot            enum:
609*7ef62cebSEmmanuel Vadot              - qcom,pcie-sa8540p
610*7ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
611*7ef62cebSEmmanuel Vadot    then:
612*7ef62cebSEmmanuel Vadot      properties:
613*7ef62cebSEmmanuel Vadot        clocks:
614*7ef62cebSEmmanuel Vadot          minItems: 8
615*7ef62cebSEmmanuel Vadot          maxItems: 9
616*7ef62cebSEmmanuel Vadot        clock-names:
617*7ef62cebSEmmanuel Vadot          minItems: 8
618*7ef62cebSEmmanuel Vadot          items:
619*7ef62cebSEmmanuel Vadot            - const: aux # Auxiliary clock
620*7ef62cebSEmmanuel Vadot            - const: cfg # Configuration clock
621*7ef62cebSEmmanuel Vadot            - const: bus_master # Master AXI clock
622*7ef62cebSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
623*7ef62cebSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
624*7ef62cebSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
625*7ef62cebSEmmanuel Vadot            - const: noc_aggr_4 # NoC aggregate 4 clock
626*7ef62cebSEmmanuel Vadot            - const: noc_aggr_south_sf # NoC aggregate South SF clock
627*7ef62cebSEmmanuel Vadot            - const: cnoc_qx # Configuration NoC QX clock
628*7ef62cebSEmmanuel Vadot        resets:
629*7ef62cebSEmmanuel Vadot          maxItems: 1
630*7ef62cebSEmmanuel Vadot        reset-names:
631*7ef62cebSEmmanuel Vadot          items:
632*7ef62cebSEmmanuel Vadot            - const: pci # PCIe core reset
633*7ef62cebSEmmanuel Vadot
634*7ef62cebSEmmanuel Vadot  - if:
635d5b0e70fSEmmanuel Vadot      not:
636d5b0e70fSEmmanuel Vadot        properties:
637d5b0e70fSEmmanuel Vadot          compatible:
638d5b0e70fSEmmanuel Vadot            contains:
639d5b0e70fSEmmanuel Vadot              enum:
640d5b0e70fSEmmanuel Vadot                - qcom,pcie-apq8064
641d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq4019
642d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8064
643d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8064v2
644d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8074
645d5b0e70fSEmmanuel Vadot                - qcom,pcie-qcs404
646d5b0e70fSEmmanuel Vadot    then:
647d5b0e70fSEmmanuel Vadot      required:
648d5b0e70fSEmmanuel Vadot        - power-domains
649d5b0e70fSEmmanuel Vadot
650d5b0e70fSEmmanuel Vadot  - if:
651d5b0e70fSEmmanuel Vadot      not:
652d5b0e70fSEmmanuel Vadot        properties:
653b97ee269SEmmanuel Vadot          compatible:
654d5b0e70fSEmmanuel Vadot            contains:
655d5b0e70fSEmmanuel Vadot              enum:
656d5b0e70fSEmmanuel Vadot                - qcom,pcie-msm8996
657d5b0e70fSEmmanuel Vadot    then:
658d5b0e70fSEmmanuel Vadot      required:
659d5b0e70fSEmmanuel Vadot        - resets
660d5b0e70fSEmmanuel Vadot        - reset-names
661d5b0e70fSEmmanuel Vadot
662b97ee269SEmmanuel Vadot  - if:
663b97ee269SEmmanuel Vadot      properties:
664b97ee269SEmmanuel Vadot        compatible:
665b97ee269SEmmanuel Vadot          contains:
666b97ee269SEmmanuel Vadot            enum:
667b97ee269SEmmanuel Vadot              - qcom,pcie-msm8996
668b97ee269SEmmanuel Vadot              - qcom,pcie-sc7280
669b97ee269SEmmanuel Vadot              - qcom,pcie-sc8180x
670b97ee269SEmmanuel Vadot              - qcom,pcie-sdm845
671b97ee269SEmmanuel Vadot              - qcom,pcie-sm8150
672b97ee269SEmmanuel Vadot              - qcom,pcie-sm8250
673b97ee269SEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
674b97ee269SEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
675b97ee269SEmmanuel Vadot    then:
676b97ee269SEmmanuel Vadot      oneOf:
677b97ee269SEmmanuel Vadot        - properties:
678b97ee269SEmmanuel Vadot            interrupts:
679b97ee269SEmmanuel Vadot              maxItems: 1
680b97ee269SEmmanuel Vadot            interrupt-names:
681b97ee269SEmmanuel Vadot              items:
682b97ee269SEmmanuel Vadot                - const: msi
683b97ee269SEmmanuel Vadot        - properties:
684b97ee269SEmmanuel Vadot            interrupts:
685b97ee269SEmmanuel Vadot              minItems: 8
686b97ee269SEmmanuel Vadot            interrupt-names:
687b97ee269SEmmanuel Vadot              items:
688b97ee269SEmmanuel Vadot                - const: msi0
689b97ee269SEmmanuel Vadot                - const: msi1
690b97ee269SEmmanuel Vadot                - const: msi2
691b97ee269SEmmanuel Vadot                - const: msi3
692b97ee269SEmmanuel Vadot                - const: msi4
693b97ee269SEmmanuel Vadot                - const: msi5
694b97ee269SEmmanuel Vadot                - const: msi6
695b97ee269SEmmanuel Vadot                - const: msi7
696*7ef62cebSEmmanuel Vadot
697*7ef62cebSEmmanuel Vadot  - if:
698*7ef62cebSEmmanuel Vadot      properties:
699*7ef62cebSEmmanuel Vadot        compatible:
700*7ef62cebSEmmanuel Vadot          contains:
701*7ef62cebSEmmanuel Vadot            enum:
702*7ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
703*7ef62cebSEmmanuel Vadot    then:
704*7ef62cebSEmmanuel Vadot      properties:
705*7ef62cebSEmmanuel Vadot        interrupts:
706*7ef62cebSEmmanuel Vadot          minItems: 4
707*7ef62cebSEmmanuel Vadot          maxItems: 4
708*7ef62cebSEmmanuel Vadot        interrupt-names:
709*7ef62cebSEmmanuel Vadot          items:
710*7ef62cebSEmmanuel Vadot            - const: msi0
711*7ef62cebSEmmanuel Vadot            - const: msi1
712*7ef62cebSEmmanuel Vadot            - const: msi2
713*7ef62cebSEmmanuel Vadot            - const: msi3
714*7ef62cebSEmmanuel Vadot
715*7ef62cebSEmmanuel Vadot  - if:
716*7ef62cebSEmmanuel Vadot      properties:
717*7ef62cebSEmmanuel Vadot        compatible:
718*7ef62cebSEmmanuel Vadot          contains:
719*7ef62cebSEmmanuel Vadot            enum:
720*7ef62cebSEmmanuel Vadot              - qcom,pcie-apq8064
721*7ef62cebSEmmanuel Vadot              - qcom,pcie-apq8084
722*7ef62cebSEmmanuel Vadot              - qcom,pcie-ipq4019
723*7ef62cebSEmmanuel Vadot              - qcom,pcie-ipq6018
724*7ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8064
725*7ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8064-v2
726*7ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8074
727*7ef62cebSEmmanuel Vadot              - qcom,pcie-qcs404
728*7ef62cebSEmmanuel Vadot              - qcom,pcie-sa8540p
729*7ef62cebSEmmanuel Vadot    then:
730b97ee269SEmmanuel Vadot      properties:
731b97ee269SEmmanuel Vadot        interrupts:
732b97ee269SEmmanuel Vadot          maxItems: 1
733b97ee269SEmmanuel Vadot        interrupt-names:
734b97ee269SEmmanuel Vadot          items:
735b97ee269SEmmanuel Vadot            - const: msi
736b97ee269SEmmanuel Vadot
737d5b0e70fSEmmanuel VadotunevaluatedProperties: false
738d5b0e70fSEmmanuel Vadot
739d5b0e70fSEmmanuel Vadotexamples:
740d5b0e70fSEmmanuel Vadot  - |
741d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
742d5b0e70fSEmmanuel Vadot    pcie@1b500000 {
743d5b0e70fSEmmanuel Vadot      compatible = "qcom,pcie-ipq8064";
744d5b0e70fSEmmanuel Vadot      reg = <0x1b500000 0x1000>,
745d5b0e70fSEmmanuel Vadot            <0x1b502000 0x80>,
746d5b0e70fSEmmanuel Vadot            <0x1b600000 0x100>,
747d5b0e70fSEmmanuel Vadot            <0x0ff00000 0x100000>;
748d5b0e70fSEmmanuel Vadot      reg-names = "dbi", "elbi", "parf", "config";
749d5b0e70fSEmmanuel Vadot      device_type = "pci";
750d5b0e70fSEmmanuel Vadot      linux,pci-domain = <0>;
751d5b0e70fSEmmanuel Vadot      bus-range = <0x00 0xff>;
752d5b0e70fSEmmanuel Vadot      num-lanes = <1>;
753d5b0e70fSEmmanuel Vadot      #address-cells = <3>;
754d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
755d5b0e70fSEmmanuel Vadot      ranges = <0x81000000 0 0 0x0fe00000 0 0x00100000>,
756d5b0e70fSEmmanuel Vadot               <0x82000000 0 0 0x08000000 0 0x07e00000>;
757d5b0e70fSEmmanuel Vadot      interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
758d5b0e70fSEmmanuel Vadot      interrupt-names = "msi";
759d5b0e70fSEmmanuel Vadot      #interrupt-cells = <1>;
760d5b0e70fSEmmanuel Vadot      interrupt-map-mask = <0 0 0 0x7>;
761d5b0e70fSEmmanuel Vadot      interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>,
762d5b0e70fSEmmanuel Vadot                      <0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>,
763d5b0e70fSEmmanuel Vadot                      <0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>,
764d5b0e70fSEmmanuel Vadot                      <0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>;
765d5b0e70fSEmmanuel Vadot      clocks = <&gcc 41>,
766d5b0e70fSEmmanuel Vadot               <&gcc 43>,
767d5b0e70fSEmmanuel Vadot               <&gcc 44>,
768d5b0e70fSEmmanuel Vadot               <&gcc 42>,
769d5b0e70fSEmmanuel Vadot               <&gcc 248>;
770d5b0e70fSEmmanuel Vadot      clock-names = "core", "iface", "phy", "aux", "ref";
771d5b0e70fSEmmanuel Vadot      resets = <&gcc 27>,
772d5b0e70fSEmmanuel Vadot               <&gcc 26>,
773d5b0e70fSEmmanuel Vadot               <&gcc 25>,
774d5b0e70fSEmmanuel Vadot               <&gcc 24>,
775d5b0e70fSEmmanuel Vadot               <&gcc 23>,
776d5b0e70fSEmmanuel Vadot               <&gcc 22>;
777d5b0e70fSEmmanuel Vadot      reset-names = "axi", "ahb", "por", "pci", "phy", "ext";
778d5b0e70fSEmmanuel Vadot      pinctrl-0 = <&pcie_pins_default>;
779d5b0e70fSEmmanuel Vadot      pinctrl-names = "default";
780d5b0e70fSEmmanuel Vadot      vdda-supply = <&pm8921_s3>;
781d5b0e70fSEmmanuel Vadot      vdda_phy-supply = <&pm8921_lvs6>;
782d5b0e70fSEmmanuel Vadot      vdda_refclk-supply = <&ext_3p3v>;
783d5b0e70fSEmmanuel Vadot    };
784d5b0e70fSEmmanuel Vadot  - |
785d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
786d5b0e70fSEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
787d5b0e70fSEmmanuel Vadot    pcie@fc520000 {
788d5b0e70fSEmmanuel Vadot      compatible = "qcom,pcie-apq8084";
789d5b0e70fSEmmanuel Vadot      reg = <0xfc520000 0x2000>,
790d5b0e70fSEmmanuel Vadot            <0xff000000 0x1000>,
791d5b0e70fSEmmanuel Vadot            <0xff001000 0x1000>,
792d5b0e70fSEmmanuel Vadot            <0xff002000 0x2000>;
793d5b0e70fSEmmanuel Vadot      reg-names = "parf", "dbi", "elbi", "config";
794d5b0e70fSEmmanuel Vadot      device_type = "pci";
795d5b0e70fSEmmanuel Vadot      linux,pci-domain = <0>;
796d5b0e70fSEmmanuel Vadot      bus-range = <0x00 0xff>;
797d5b0e70fSEmmanuel Vadot      num-lanes = <1>;
798d5b0e70fSEmmanuel Vadot      #address-cells = <3>;
799d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
800d5b0e70fSEmmanuel Vadot      ranges = <0x81000000 0 0          0xff200000 0 0x00100000>,
801d5b0e70fSEmmanuel Vadot               <0x82000000 0 0x00300000 0xff300000 0 0x00d00000>;
802d5b0e70fSEmmanuel Vadot      interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
803d5b0e70fSEmmanuel Vadot      interrupt-names = "msi";
804d5b0e70fSEmmanuel Vadot      #interrupt-cells = <1>;
805d5b0e70fSEmmanuel Vadot      interrupt-map-mask = <0 0 0 0x7>;
806d5b0e70fSEmmanuel Vadot      interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>,
807d5b0e70fSEmmanuel Vadot                      <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>,
808d5b0e70fSEmmanuel Vadot                      <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>,
809d5b0e70fSEmmanuel Vadot                      <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>;
810d5b0e70fSEmmanuel Vadot      clocks = <&gcc 324>,
811d5b0e70fSEmmanuel Vadot               <&gcc 325>,
812d5b0e70fSEmmanuel Vadot               <&gcc 327>,
813d5b0e70fSEmmanuel Vadot               <&gcc 323>;
814d5b0e70fSEmmanuel Vadot      clock-names = "iface", "master_bus", "slave_bus", "aux";
815d5b0e70fSEmmanuel Vadot      resets = <&gcc 81>;
816d5b0e70fSEmmanuel Vadot      reset-names = "core";
817d5b0e70fSEmmanuel Vadot      power-domains = <&gcc 1>;
818d5b0e70fSEmmanuel Vadot      vdda-supply = <&pma8084_l3>;
819d5b0e70fSEmmanuel Vadot      phys = <&pciephy0>;
820d5b0e70fSEmmanuel Vadot      phy-names = "pciephy";
821d5b0e70fSEmmanuel Vadot      perst-gpios = <&tlmm 70 GPIO_ACTIVE_LOW>;
822d5b0e70fSEmmanuel Vadot      pinctrl-0 = <&pcie0_pins_default>;
823d5b0e70fSEmmanuel Vadot      pinctrl-names = "default";
824d5b0e70fSEmmanuel Vadot    };
825d5b0e70fSEmmanuel Vadot...
826