xref: /freebsd/sys/contrib/device-tree/Bindings/pci/qcom,pcie.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
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:
19*cb7aa33aSEmmanuel Vadot    oneOf:
20*cb7aa33aSEmmanuel Vadot      - enum:
21d5b0e70fSEmmanuel Vadot          - qcom,pcie-apq8064
22d5b0e70fSEmmanuel Vadot          - qcom,pcie-apq8084
23d5b0e70fSEmmanuel Vadot          - qcom,pcie-ipq4019
24*cb7aa33aSEmmanuel Vadot          - qcom,pcie-ipq6018
25*cb7aa33aSEmmanuel Vadot          - qcom,pcie-ipq8064
26*cb7aa33aSEmmanuel Vadot          - qcom,pcie-ipq8064-v2
27d5b0e70fSEmmanuel Vadot          - qcom,pcie-ipq8074
28*cb7aa33aSEmmanuel Vadot          - qcom,pcie-ipq8074-gen3
29*cb7aa33aSEmmanuel Vadot          - qcom,pcie-msm8996
30d5b0e70fSEmmanuel Vadot          - qcom,pcie-qcs404
317ef62cebSEmmanuel Vadot          - qcom,pcie-sa8540p
32d5b0e70fSEmmanuel Vadot          - qcom,pcie-sc7280
33d5b0e70fSEmmanuel Vadot          - qcom,pcie-sc8180x
347ef62cebSEmmanuel Vadot          - qcom,pcie-sc8280xp
35d5b0e70fSEmmanuel Vadot          - qcom,pcie-sdm845
36d5b0e70fSEmmanuel Vadot          - qcom,pcie-sm8150
37d5b0e70fSEmmanuel Vadot          - qcom,pcie-sm8250
38*cb7aa33aSEmmanuel Vadot          - qcom,pcie-sm8350
39d5b0e70fSEmmanuel Vadot          - qcom,pcie-sm8450-pcie0
40d5b0e70fSEmmanuel Vadot          - qcom,pcie-sm8450-pcie1
41*cb7aa33aSEmmanuel Vadot      - items:
42*cb7aa33aSEmmanuel Vadot          - const: qcom,pcie-msm8998
43*cb7aa33aSEmmanuel Vadot          - const: qcom,pcie-msm8996
44d5b0e70fSEmmanuel Vadot
45d5b0e70fSEmmanuel Vadot  reg:
46d5b0e70fSEmmanuel Vadot    minItems: 4
47d5b0e70fSEmmanuel Vadot    maxItems: 5
48d5b0e70fSEmmanuel Vadot
49d5b0e70fSEmmanuel Vadot  reg-names:
50d5b0e70fSEmmanuel Vadot    minItems: 4
51d5b0e70fSEmmanuel Vadot    maxItems: 5
52d5b0e70fSEmmanuel Vadot
53d5b0e70fSEmmanuel Vadot  interrupts:
54b97ee269SEmmanuel Vadot    minItems: 1
55b97ee269SEmmanuel Vadot    maxItems: 8
56d5b0e70fSEmmanuel Vadot
57d5b0e70fSEmmanuel Vadot  interrupt-names:
58b97ee269SEmmanuel Vadot    minItems: 1
59b97ee269SEmmanuel Vadot    maxItems: 8
60d5b0e70fSEmmanuel Vadot
61d5b0e70fSEmmanuel Vadot  # Common definitions for clocks, clock-names and reset.
62d5b0e70fSEmmanuel Vadot  # Platform constraints are described later.
63d5b0e70fSEmmanuel Vadot  clocks:
64d5b0e70fSEmmanuel Vadot    minItems: 3
657ef62cebSEmmanuel Vadot    maxItems: 13
66d5b0e70fSEmmanuel Vadot
67d5b0e70fSEmmanuel Vadot  clock-names:
68d5b0e70fSEmmanuel Vadot    minItems: 3
697ef62cebSEmmanuel Vadot    maxItems: 13
70d5b0e70fSEmmanuel Vadot
718bab661aSEmmanuel Vadot  dma-coherent: true
728bab661aSEmmanuel Vadot
738bab661aSEmmanuel Vadot  interconnects:
748bab661aSEmmanuel Vadot    maxItems: 2
758bab661aSEmmanuel Vadot
768bab661aSEmmanuel Vadot  interconnect-names:
778bab661aSEmmanuel Vadot    items:
788bab661aSEmmanuel Vadot      - const: pcie-mem
798bab661aSEmmanuel Vadot      - const: cpu-pcie
808bab661aSEmmanuel Vadot
81d5b0e70fSEmmanuel Vadot  resets:
82d5b0e70fSEmmanuel Vadot    minItems: 1
83d5b0e70fSEmmanuel Vadot    maxItems: 12
84d5b0e70fSEmmanuel Vadot
85d5b0e70fSEmmanuel Vadot  resets-names:
86d5b0e70fSEmmanuel Vadot    minItems: 1
87d5b0e70fSEmmanuel Vadot    maxItems: 12
88d5b0e70fSEmmanuel Vadot
89d5b0e70fSEmmanuel Vadot  vdda-supply:
90d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply
91d5b0e70fSEmmanuel Vadot
92d5b0e70fSEmmanuel Vadot  vdda_phy-supply:
93d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply for PHY
94d5b0e70fSEmmanuel Vadot
95d5b0e70fSEmmanuel Vadot  vdda_refclk-supply:
96d5b0e70fSEmmanuel Vadot    description: A phandle to the core analog power supply for IC which generates reference clock
97d5b0e70fSEmmanuel Vadot
98d5b0e70fSEmmanuel Vadot  vddpe-3v3-supply:
99d5b0e70fSEmmanuel Vadot    description: A phandle to the PCIe endpoint power supply
100d5b0e70fSEmmanuel Vadot
101d5b0e70fSEmmanuel Vadot  phys:
102d5b0e70fSEmmanuel Vadot    maxItems: 1
103d5b0e70fSEmmanuel Vadot
104d5b0e70fSEmmanuel Vadot  phy-names:
105d5b0e70fSEmmanuel Vadot    items:
106d5b0e70fSEmmanuel Vadot      - const: pciephy
107d5b0e70fSEmmanuel Vadot
108d5b0e70fSEmmanuel Vadot  power-domains:
109d5b0e70fSEmmanuel Vadot    maxItems: 1
110d5b0e70fSEmmanuel Vadot
111d5b0e70fSEmmanuel Vadot  perst-gpios:
112d5b0e70fSEmmanuel Vadot    description: GPIO controlled connection to PERST# signal
113d5b0e70fSEmmanuel Vadot    maxItems: 1
114d5b0e70fSEmmanuel Vadot
115d5b0e70fSEmmanuel Vadot  wake-gpios:
116d5b0e70fSEmmanuel Vadot    description: GPIO controlled connection to WAKE# signal
117d5b0e70fSEmmanuel Vadot    maxItems: 1
118d5b0e70fSEmmanuel Vadot
119d5b0e70fSEmmanuel Vadotrequired:
120d5b0e70fSEmmanuel Vadot  - compatible
121d5b0e70fSEmmanuel Vadot  - reg
122d5b0e70fSEmmanuel Vadot  - reg-names
123d5b0e70fSEmmanuel Vadot  - interrupts
124d5b0e70fSEmmanuel Vadot  - interrupt-names
125d5b0e70fSEmmanuel Vadot  - "#interrupt-cells"
126d5b0e70fSEmmanuel Vadot  - interrupt-map-mask
127d5b0e70fSEmmanuel Vadot  - interrupt-map
128d5b0e70fSEmmanuel Vadot  - clocks
129d5b0e70fSEmmanuel Vadot  - clock-names
130d5b0e70fSEmmanuel Vadot
131d5b0e70fSEmmanuel VadotallOf:
132d5b0e70fSEmmanuel Vadot  - $ref: /schemas/pci/pci-bus.yaml#
133d5b0e70fSEmmanuel Vadot  - if:
134d5b0e70fSEmmanuel Vadot      properties:
135d5b0e70fSEmmanuel Vadot        compatible:
136d5b0e70fSEmmanuel Vadot          contains:
137d5b0e70fSEmmanuel Vadot            enum:
138d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8064
139d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq4019
140d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064
141d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064v2
142d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8074
143d5b0e70fSEmmanuel Vadot              - qcom,pcie-qcs404
144d5b0e70fSEmmanuel Vadot    then:
145d5b0e70fSEmmanuel Vadot      properties:
146d5b0e70fSEmmanuel Vadot        reg:
147d5b0e70fSEmmanuel Vadot          minItems: 4
148d5b0e70fSEmmanuel Vadot          maxItems: 4
149d5b0e70fSEmmanuel Vadot        reg-names:
150d5b0e70fSEmmanuel Vadot          items:
151d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
152d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
153d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
154d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
155d5b0e70fSEmmanuel Vadot
156d5b0e70fSEmmanuel Vadot  - if:
157d5b0e70fSEmmanuel Vadot      properties:
158d5b0e70fSEmmanuel Vadot        compatible:
159d5b0e70fSEmmanuel Vadot          contains:
160d5b0e70fSEmmanuel Vadot            enum:
161d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq6018
162*cb7aa33aSEmmanuel Vadot              - qcom,pcie-ipq8074-gen3
163d5b0e70fSEmmanuel Vadot    then:
164d5b0e70fSEmmanuel Vadot      properties:
165d5b0e70fSEmmanuel Vadot        reg:
166d5b0e70fSEmmanuel Vadot          minItems: 5
167d5b0e70fSEmmanuel Vadot          maxItems: 5
168d5b0e70fSEmmanuel Vadot        reg-names:
169d5b0e70fSEmmanuel Vadot          items:
170d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
171d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
172d5b0e70fSEmmanuel Vadot            - const: atu # ATU address space
173d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
174d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
175d5b0e70fSEmmanuel Vadot
176d5b0e70fSEmmanuel Vadot  - if:
177d5b0e70fSEmmanuel Vadot      properties:
178d5b0e70fSEmmanuel Vadot        compatible:
179d5b0e70fSEmmanuel Vadot          contains:
180d5b0e70fSEmmanuel Vadot            enum:
181d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8084
182d5b0e70fSEmmanuel Vadot              - qcom,pcie-msm8996
183d5b0e70fSEmmanuel Vadot              - qcom,pcie-sdm845
184d5b0e70fSEmmanuel Vadot    then:
185d5b0e70fSEmmanuel Vadot      properties:
186d5b0e70fSEmmanuel Vadot        reg:
187d5b0e70fSEmmanuel Vadot          minItems: 4
188d5b0e70fSEmmanuel Vadot          maxItems: 4
189d5b0e70fSEmmanuel Vadot        reg-names:
190d5b0e70fSEmmanuel Vadot          items:
191d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
192d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
193d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
194d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
195d5b0e70fSEmmanuel Vadot
196d5b0e70fSEmmanuel Vadot  - if:
197d5b0e70fSEmmanuel Vadot      properties:
198d5b0e70fSEmmanuel Vadot        compatible:
199d5b0e70fSEmmanuel Vadot          contains:
200d5b0e70fSEmmanuel Vadot            enum:
201d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc7280
202d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc8180x
2037ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
204d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8250
205*cb7aa33aSEmmanuel Vadot              - qcom,pcie-sm8350
206d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
207d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
208d5b0e70fSEmmanuel Vadot    then:
209d5b0e70fSEmmanuel Vadot      properties:
210d5b0e70fSEmmanuel Vadot        reg:
211d5b0e70fSEmmanuel Vadot          minItems: 5
212d5b0e70fSEmmanuel Vadot          maxItems: 5
213d5b0e70fSEmmanuel Vadot        reg-names:
214d5b0e70fSEmmanuel Vadot          items:
215d5b0e70fSEmmanuel Vadot            - const: parf # Qualcomm specific registers
216d5b0e70fSEmmanuel Vadot            - const: dbi # DesignWare PCIe registers
217d5b0e70fSEmmanuel Vadot            - const: elbi # External local bus interface registers
218d5b0e70fSEmmanuel Vadot            - const: atu # ATU address space
219d5b0e70fSEmmanuel Vadot            - const: config # PCIe configuration space
220d5b0e70fSEmmanuel Vadot
221d5b0e70fSEmmanuel Vadot  - if:
222d5b0e70fSEmmanuel Vadot      properties:
223d5b0e70fSEmmanuel Vadot        compatible:
224d5b0e70fSEmmanuel Vadot          contains:
225d5b0e70fSEmmanuel Vadot            enum:
226d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8064
227d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064
228d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8064v2
229d5b0e70fSEmmanuel Vadot    then:
230d5b0e70fSEmmanuel Vadot      properties:
231d5b0e70fSEmmanuel Vadot        clocks:
232d5b0e70fSEmmanuel Vadot          minItems: 3
233d5b0e70fSEmmanuel Vadot          maxItems: 5
234d5b0e70fSEmmanuel Vadot        clock-names:
235d5b0e70fSEmmanuel Vadot          minItems: 3
236d5b0e70fSEmmanuel Vadot          items:
237d5b0e70fSEmmanuel Vadot            - const: core # Clocks the pcie hw block
238d5b0e70fSEmmanuel Vadot            - const: iface # Configuration AHB clock
239d5b0e70fSEmmanuel Vadot            - const: phy # Clocks the pcie PHY block
240d5b0e70fSEmmanuel Vadot            - const: aux # Clocks the pcie AUX block, not on apq8064
241d5b0e70fSEmmanuel Vadot            - const: ref # Clocks the pcie ref block, not on apq8064
242d5b0e70fSEmmanuel Vadot        resets:
243d5b0e70fSEmmanuel Vadot          minItems: 5
244d5b0e70fSEmmanuel Vadot          maxItems: 6
245d5b0e70fSEmmanuel Vadot        reset-names:
246d5b0e70fSEmmanuel Vadot          minItems: 5
247d5b0e70fSEmmanuel Vadot          items:
248d5b0e70fSEmmanuel Vadot            - const: axi # AXI reset
249d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
250d5b0e70fSEmmanuel Vadot            - const: por # POR reset
251d5b0e70fSEmmanuel Vadot            - const: pci # PCI reset
252d5b0e70fSEmmanuel Vadot            - const: phy # PHY reset
253d5b0e70fSEmmanuel Vadot            - const: ext # EXT reset, not on apq8064
254d5b0e70fSEmmanuel Vadot      required:
255d5b0e70fSEmmanuel Vadot        - vdda-supply
256d5b0e70fSEmmanuel Vadot        - vdda_phy-supply
257d5b0e70fSEmmanuel Vadot        - vdda_refclk-supply
258d5b0e70fSEmmanuel Vadot
259d5b0e70fSEmmanuel Vadot  - if:
260d5b0e70fSEmmanuel Vadot      properties:
261d5b0e70fSEmmanuel Vadot        compatible:
262d5b0e70fSEmmanuel Vadot          contains:
263d5b0e70fSEmmanuel Vadot            enum:
264d5b0e70fSEmmanuel Vadot              - qcom,pcie-apq8084
265d5b0e70fSEmmanuel Vadot    then:
266d5b0e70fSEmmanuel Vadot      properties:
267d5b0e70fSEmmanuel Vadot        clocks:
268d5b0e70fSEmmanuel Vadot          minItems: 4
269d5b0e70fSEmmanuel Vadot          maxItems: 4
270d5b0e70fSEmmanuel Vadot        clock-names:
271d5b0e70fSEmmanuel Vadot          items:
272d5b0e70fSEmmanuel Vadot            - const: iface # Configuration AHB clock
273d5b0e70fSEmmanuel Vadot            - const: master_bus # Master AXI clock
274d5b0e70fSEmmanuel Vadot            - const: slave_bus # Slave AXI clock
275d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary (AUX) clock
276d5b0e70fSEmmanuel Vadot        resets:
277d5b0e70fSEmmanuel Vadot          maxItems: 1
278d5b0e70fSEmmanuel Vadot        reset-names:
279d5b0e70fSEmmanuel Vadot          items:
280d5b0e70fSEmmanuel Vadot            - const: core # Core reset
281d5b0e70fSEmmanuel Vadot
282d5b0e70fSEmmanuel Vadot  - if:
283d5b0e70fSEmmanuel Vadot      properties:
284d5b0e70fSEmmanuel Vadot        compatible:
285d5b0e70fSEmmanuel Vadot          contains:
286d5b0e70fSEmmanuel Vadot            enum:
287d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq4019
288d5b0e70fSEmmanuel Vadot    then:
289d5b0e70fSEmmanuel Vadot      properties:
290d5b0e70fSEmmanuel Vadot        clocks:
291d5b0e70fSEmmanuel Vadot          minItems: 3
292d5b0e70fSEmmanuel Vadot          maxItems: 3
293d5b0e70fSEmmanuel Vadot        clock-names:
294d5b0e70fSEmmanuel Vadot          items:
295d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary (AUX) clock
296d5b0e70fSEmmanuel Vadot            - const: master_bus # Master AXI clock
297d5b0e70fSEmmanuel Vadot            - const: slave_bus # Slave AXI clock
298d5b0e70fSEmmanuel Vadot        resets:
299d5b0e70fSEmmanuel Vadot          minItems: 12
300d5b0e70fSEmmanuel Vadot          maxItems: 12
301d5b0e70fSEmmanuel Vadot        reset-names:
302d5b0e70fSEmmanuel Vadot          items:
303d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI master reset
304d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI slave reset
305d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
306d5b0e70fSEmmanuel Vadot            - const: axi_m_vmid # VMID reset
307d5b0e70fSEmmanuel Vadot            - const: axi_s_xpu # XPU reset
308d5b0e70fSEmmanuel Vadot            - const: parf # PARF reset
309d5b0e70fSEmmanuel Vadot            - const: phy # PHY reset
310d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI sticky reset
311d5b0e70fSEmmanuel Vadot            - const: pipe_sticky # PIPE sticky reset
312d5b0e70fSEmmanuel Vadot            - const: pwr # PWR reset
313d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
314d5b0e70fSEmmanuel Vadot            - const: phy_ahb # PHY AHB reset
315d5b0e70fSEmmanuel Vadot
316d5b0e70fSEmmanuel Vadot  - if:
317d5b0e70fSEmmanuel Vadot      properties:
318d5b0e70fSEmmanuel Vadot        compatible:
319d5b0e70fSEmmanuel Vadot          contains:
320d5b0e70fSEmmanuel Vadot            enum:
321d5b0e70fSEmmanuel Vadot              - qcom,pcie-msm8996
322d5b0e70fSEmmanuel Vadot    then:
323d5b0e70fSEmmanuel Vadot      properties:
324d5b0e70fSEmmanuel Vadot        clocks:
325d5b0e70fSEmmanuel Vadot          minItems: 5
326d5b0e70fSEmmanuel Vadot          maxItems: 5
327*cb7aa33aSEmmanuel Vadot        clock-names:
328*cb7aa33aSEmmanuel Vadot          items:
329*cb7aa33aSEmmanuel Vadot            - const: pipe # Pipe Clock driving internal logic
330*cb7aa33aSEmmanuel Vadot            - const: aux # Auxiliary (AUX) clock
331*cb7aa33aSEmmanuel Vadot            - const: cfg # Configuration clock
332*cb7aa33aSEmmanuel Vadot            - const: bus_master # Master AXI clock
333*cb7aa33aSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
334d5b0e70fSEmmanuel Vadot        resets: false
335d5b0e70fSEmmanuel Vadot        reset-names: false
336d5b0e70fSEmmanuel Vadot
337d5b0e70fSEmmanuel Vadot  - if:
338d5b0e70fSEmmanuel Vadot      properties:
339d5b0e70fSEmmanuel Vadot        compatible:
340d5b0e70fSEmmanuel Vadot          contains:
341d5b0e70fSEmmanuel Vadot            enum:
342d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq8074
343d5b0e70fSEmmanuel Vadot    then:
344d5b0e70fSEmmanuel Vadot      properties:
345d5b0e70fSEmmanuel Vadot        clocks:
346d5b0e70fSEmmanuel Vadot          minItems: 5
347d5b0e70fSEmmanuel Vadot          maxItems: 5
348d5b0e70fSEmmanuel Vadot        clock-names:
349d5b0e70fSEmmanuel Vadot          items:
350d5b0e70fSEmmanuel Vadot            - const: iface # PCIe to SysNOC BIU clock
351d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master clock
352d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave clock
353d5b0e70fSEmmanuel Vadot            - const: ahb # AHB clock
354d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
355d5b0e70fSEmmanuel Vadot        resets:
356d5b0e70fSEmmanuel Vadot          minItems: 7
357d5b0e70fSEmmanuel Vadot          maxItems: 7
358d5b0e70fSEmmanuel Vadot        reset-names:
359d5b0e70fSEmmanuel Vadot          items:
360d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
361d5b0e70fSEmmanuel Vadot            - const: sleep # Sleep reset
362d5b0e70fSEmmanuel Vadot            - const: sticky # Core Sticky reset
363d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
364d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
365d5b0e70fSEmmanuel Vadot            - const: ahb # AHB Reset
366d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
367d5b0e70fSEmmanuel Vadot
368d5b0e70fSEmmanuel Vadot  - if:
369d5b0e70fSEmmanuel Vadot      properties:
370d5b0e70fSEmmanuel Vadot        compatible:
371d5b0e70fSEmmanuel Vadot          contains:
372d5b0e70fSEmmanuel Vadot            enum:
373d5b0e70fSEmmanuel Vadot              - qcom,pcie-ipq6018
374*cb7aa33aSEmmanuel Vadot              - qcom,pcie-ipq8074-gen3
375d5b0e70fSEmmanuel Vadot    then:
376d5b0e70fSEmmanuel Vadot      properties:
377d5b0e70fSEmmanuel Vadot        clocks:
378d5b0e70fSEmmanuel Vadot          minItems: 5
379d5b0e70fSEmmanuel Vadot          maxItems: 5
380d5b0e70fSEmmanuel Vadot        clock-names:
381d5b0e70fSEmmanuel Vadot          items:
382d5b0e70fSEmmanuel Vadot            - const: iface # PCIe to SysNOC BIU clock
383d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master clock
384d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave clock
385d5b0e70fSEmmanuel Vadot            - const: axi_bridge # AXI bridge clock
386d5b0e70fSEmmanuel Vadot            - const: rchng
387d5b0e70fSEmmanuel Vadot        resets:
388d5b0e70fSEmmanuel Vadot          minItems: 8
389d5b0e70fSEmmanuel Vadot          maxItems: 8
390d5b0e70fSEmmanuel Vadot        reset-names:
391d5b0e70fSEmmanuel Vadot          items:
392d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE reset
393d5b0e70fSEmmanuel Vadot            - const: sleep # Sleep reset
394d5b0e70fSEmmanuel Vadot            - const: sticky # Core Sticky reset
395d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
396d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
397d5b0e70fSEmmanuel Vadot            - const: ahb # AHB Reset
398d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
399d5b0e70fSEmmanuel Vadot            - const: axi_s_sticky # AXI Slave Sticky reset
400d5b0e70fSEmmanuel Vadot
401d5b0e70fSEmmanuel Vadot  - if:
402d5b0e70fSEmmanuel Vadot      properties:
403d5b0e70fSEmmanuel Vadot        compatible:
404d5b0e70fSEmmanuel Vadot          contains:
405d5b0e70fSEmmanuel Vadot            enum:
406d5b0e70fSEmmanuel Vadot              - qcom,pcie-qcs404
407d5b0e70fSEmmanuel Vadot    then:
408d5b0e70fSEmmanuel Vadot      properties:
409d5b0e70fSEmmanuel Vadot        clocks:
410d5b0e70fSEmmanuel Vadot          minItems: 4
411d5b0e70fSEmmanuel Vadot          maxItems: 4
412d5b0e70fSEmmanuel Vadot        clock-names:
413d5b0e70fSEmmanuel Vadot          items:
414d5b0e70fSEmmanuel Vadot            - const: iface # AHB clock
415d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
416d5b0e70fSEmmanuel Vadot            - const: master_bus # AXI Master clock
417d5b0e70fSEmmanuel Vadot            - const: slave_bus # AXI Slave clock
418d5b0e70fSEmmanuel Vadot        resets:
419d5b0e70fSEmmanuel Vadot          minItems: 6
420d5b0e70fSEmmanuel Vadot          maxItems: 6
421d5b0e70fSEmmanuel Vadot        reset-names:
422d5b0e70fSEmmanuel Vadot          items:
423d5b0e70fSEmmanuel Vadot            - const: axi_m # AXI Master reset
424d5b0e70fSEmmanuel Vadot            - const: axi_s # AXI Slave reset
425d5b0e70fSEmmanuel Vadot            - const: axi_m_sticky # AXI Master Sticky reset
426d5b0e70fSEmmanuel Vadot            - const: pipe_sticky # PIPE sticky reset
427d5b0e70fSEmmanuel Vadot            - const: pwr # PWR reset
428d5b0e70fSEmmanuel Vadot            - const: ahb # AHB reset
429d5b0e70fSEmmanuel Vadot
430d5b0e70fSEmmanuel Vadot  - if:
431d5b0e70fSEmmanuel Vadot      properties:
432d5b0e70fSEmmanuel Vadot        compatible:
433d5b0e70fSEmmanuel Vadot          contains:
434d5b0e70fSEmmanuel Vadot            enum:
435d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc7280
436d5b0e70fSEmmanuel Vadot    then:
437d5b0e70fSEmmanuel Vadot      properties:
438d5b0e70fSEmmanuel Vadot        clocks:
4397ef62cebSEmmanuel Vadot          minItems: 13
4407ef62cebSEmmanuel Vadot          maxItems: 13
441d5b0e70fSEmmanuel Vadot        clock-names:
442d5b0e70fSEmmanuel Vadot          items:
443d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
444d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
445d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
446d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
447d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
448d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
449d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
450d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
451d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
452d5b0e70fSEmmanuel Vadot            - const: tbu # PCIe TBU clock
453d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
4547ef62cebSEmmanuel Vadot            - const: aggre0 # Aggre NoC PCIe CENTER SF AXI clock
4557ef62cebSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
456d5b0e70fSEmmanuel Vadot        resets:
457d5b0e70fSEmmanuel Vadot          maxItems: 1
458d5b0e70fSEmmanuel Vadot        reset-names:
459d5b0e70fSEmmanuel Vadot          items:
460d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
461d5b0e70fSEmmanuel Vadot
462d5b0e70fSEmmanuel Vadot  - if:
463d5b0e70fSEmmanuel Vadot      properties:
464d5b0e70fSEmmanuel Vadot        compatible:
465d5b0e70fSEmmanuel Vadot          contains:
466d5b0e70fSEmmanuel Vadot            enum:
467d5b0e70fSEmmanuel Vadot              - qcom,pcie-sdm845
468d5b0e70fSEmmanuel Vadot    then:
469d5b0e70fSEmmanuel Vadot      oneOf:
470d5b0e70fSEmmanuel Vadot          # Unfortunately the "optional" ref clock is used in the middle of the list
471d5b0e70fSEmmanuel Vadot        - properties:
472d5b0e70fSEmmanuel Vadot            clocks:
473d5b0e70fSEmmanuel Vadot              minItems: 8
474d5b0e70fSEmmanuel Vadot              maxItems: 8
475d5b0e70fSEmmanuel Vadot            clock-names:
476d5b0e70fSEmmanuel Vadot              items:
477d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
478d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
479d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
480d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
481d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
482d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
483d5b0e70fSEmmanuel Vadot                - const: ref # REFERENCE clock
484d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
485d5b0e70fSEmmanuel Vadot        - properties:
486d5b0e70fSEmmanuel Vadot            clocks:
487d5b0e70fSEmmanuel Vadot              minItems: 7
488d5b0e70fSEmmanuel Vadot              maxItems: 7
489d5b0e70fSEmmanuel Vadot            clock-names:
490d5b0e70fSEmmanuel Vadot              items:
491d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
492d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
493d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
494d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
495d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
496d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
497d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
498d5b0e70fSEmmanuel Vadot      properties:
499d5b0e70fSEmmanuel Vadot        resets:
500d5b0e70fSEmmanuel Vadot          maxItems: 1
501d5b0e70fSEmmanuel Vadot        reset-names:
502d5b0e70fSEmmanuel Vadot          items:
503d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
504d5b0e70fSEmmanuel Vadot
505d5b0e70fSEmmanuel Vadot  - if:
506d5b0e70fSEmmanuel Vadot      properties:
507d5b0e70fSEmmanuel Vadot        compatible:
508d5b0e70fSEmmanuel Vadot          contains:
509d5b0e70fSEmmanuel Vadot            enum:
510d5b0e70fSEmmanuel Vadot              - qcom,pcie-sc8180x
511d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8150
512d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8250
513d5b0e70fSEmmanuel Vadot    then:
514d5b0e70fSEmmanuel Vadot      oneOf:
515d5b0e70fSEmmanuel Vadot          # Unfortunately the "optional" ref clock is used in the middle of the list
516d5b0e70fSEmmanuel Vadot        - properties:
517d5b0e70fSEmmanuel Vadot            clocks:
518d5b0e70fSEmmanuel Vadot              minItems: 9
519d5b0e70fSEmmanuel Vadot              maxItems: 9
520d5b0e70fSEmmanuel Vadot            clock-names:
521d5b0e70fSEmmanuel Vadot              items:
522d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
523d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
524d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
525d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
526d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
527d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
528d5b0e70fSEmmanuel Vadot                - const: ref # REFERENCE clock
529d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
530d5b0e70fSEmmanuel Vadot                - const: ddrss_sf_tbu # PCIe SF TBU clock
531d5b0e70fSEmmanuel Vadot        - properties:
532d5b0e70fSEmmanuel Vadot            clocks:
533d5b0e70fSEmmanuel Vadot              minItems: 8
534d5b0e70fSEmmanuel Vadot              maxItems: 8
535d5b0e70fSEmmanuel Vadot            clock-names:
536d5b0e70fSEmmanuel Vadot              items:
537d5b0e70fSEmmanuel Vadot                - const: pipe # PIPE clock
538d5b0e70fSEmmanuel Vadot                - const: aux # Auxiliary clock
539d5b0e70fSEmmanuel Vadot                - const: cfg # Configuration clock
540d5b0e70fSEmmanuel Vadot                - const: bus_master # Master AXI clock
541d5b0e70fSEmmanuel Vadot                - const: bus_slave # Slave AXI clock
542d5b0e70fSEmmanuel Vadot                - const: slave_q2a # Slave Q2A clock
543d5b0e70fSEmmanuel Vadot                - const: tbu # PCIe TBU clock
544d5b0e70fSEmmanuel Vadot                - const: ddrss_sf_tbu # PCIe SF TBU clock
545d5b0e70fSEmmanuel Vadot      properties:
546d5b0e70fSEmmanuel Vadot        resets:
547d5b0e70fSEmmanuel Vadot          maxItems: 1
548d5b0e70fSEmmanuel Vadot        reset-names:
549d5b0e70fSEmmanuel Vadot          items:
550d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
551d5b0e70fSEmmanuel Vadot
552d5b0e70fSEmmanuel Vadot  - if:
553d5b0e70fSEmmanuel Vadot      properties:
554d5b0e70fSEmmanuel Vadot        compatible:
555d5b0e70fSEmmanuel Vadot          contains:
556d5b0e70fSEmmanuel Vadot            enum:
557*cb7aa33aSEmmanuel Vadot              - qcom,pcie-sm8350
558*cb7aa33aSEmmanuel Vadot    then:
559*cb7aa33aSEmmanuel Vadot      properties:
560*cb7aa33aSEmmanuel Vadot        clocks:
561*cb7aa33aSEmmanuel Vadot          minItems: 8
562*cb7aa33aSEmmanuel Vadot          maxItems: 9
563*cb7aa33aSEmmanuel Vadot        clock-names:
564*cb7aa33aSEmmanuel Vadot          minItems: 8
565*cb7aa33aSEmmanuel Vadot          items:
566*cb7aa33aSEmmanuel Vadot            - const: aux # Auxiliary clock
567*cb7aa33aSEmmanuel Vadot            - const: cfg # Configuration clock
568*cb7aa33aSEmmanuel Vadot            - const: bus_master # Master AXI clock
569*cb7aa33aSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
570*cb7aa33aSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
571*cb7aa33aSEmmanuel Vadot            - const: tbu # PCIe TBU clock
572*cb7aa33aSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
573*cb7aa33aSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
574*cb7aa33aSEmmanuel Vadot            - const: aggre0 # Aggre NoC PCIe0 AXI clock
575*cb7aa33aSEmmanuel Vadot        resets:
576*cb7aa33aSEmmanuel Vadot          maxItems: 1
577*cb7aa33aSEmmanuel Vadot        reset-names:
578*cb7aa33aSEmmanuel Vadot          items:
579*cb7aa33aSEmmanuel Vadot            - const: pci # PCIe core reset
580*cb7aa33aSEmmanuel Vadot
581*cb7aa33aSEmmanuel Vadot  - if:
582*cb7aa33aSEmmanuel Vadot      properties:
583*cb7aa33aSEmmanuel Vadot        compatible:
584*cb7aa33aSEmmanuel Vadot          contains:
585*cb7aa33aSEmmanuel Vadot            enum:
586d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
587d5b0e70fSEmmanuel Vadot    then:
588d5b0e70fSEmmanuel Vadot      properties:
589d5b0e70fSEmmanuel Vadot        clocks:
590d5b0e70fSEmmanuel Vadot          minItems: 12
591d5b0e70fSEmmanuel Vadot          maxItems: 12
592d5b0e70fSEmmanuel Vadot        clock-names:
593d5b0e70fSEmmanuel Vadot          items:
594d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
595d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
596d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
597d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
598d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
599d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
600d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
601d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
602d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
603d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
604d5b0e70fSEmmanuel Vadot            - const: aggre0 # Aggre NoC PCIe0 AXI clock
605d5b0e70fSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
606d5b0e70fSEmmanuel Vadot        resets:
607d5b0e70fSEmmanuel Vadot          maxItems: 1
608d5b0e70fSEmmanuel Vadot        reset-names:
609d5b0e70fSEmmanuel Vadot          items:
610d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
611d5b0e70fSEmmanuel Vadot
612d5b0e70fSEmmanuel Vadot  - if:
613d5b0e70fSEmmanuel Vadot      properties:
614d5b0e70fSEmmanuel Vadot        compatible:
615d5b0e70fSEmmanuel Vadot          contains:
616d5b0e70fSEmmanuel Vadot            enum:
617d5b0e70fSEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
618d5b0e70fSEmmanuel Vadot    then:
619d5b0e70fSEmmanuel Vadot      properties:
620d5b0e70fSEmmanuel Vadot        clocks:
621d5b0e70fSEmmanuel Vadot          minItems: 11
622d5b0e70fSEmmanuel Vadot          maxItems: 11
623d5b0e70fSEmmanuel Vadot        clock-names:
624d5b0e70fSEmmanuel Vadot          items:
625d5b0e70fSEmmanuel Vadot            - const: pipe # PIPE clock
626d5b0e70fSEmmanuel Vadot            - const: pipe_mux # PIPE MUX
627d5b0e70fSEmmanuel Vadot            - const: phy_pipe # PIPE output clock
628d5b0e70fSEmmanuel Vadot            - const: ref # REFERENCE clock
629d5b0e70fSEmmanuel Vadot            - const: aux # Auxiliary clock
630d5b0e70fSEmmanuel Vadot            - const: cfg # Configuration clock
631d5b0e70fSEmmanuel Vadot            - const: bus_master # Master AXI clock
632d5b0e70fSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
633d5b0e70fSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
634d5b0e70fSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
635d5b0e70fSEmmanuel Vadot            - const: aggre1 # Aggre NoC PCIe1 AXI clock
636d5b0e70fSEmmanuel Vadot        resets:
637d5b0e70fSEmmanuel Vadot          maxItems: 1
638d5b0e70fSEmmanuel Vadot        reset-names:
639d5b0e70fSEmmanuel Vadot          items:
640d5b0e70fSEmmanuel Vadot            - const: pci # PCIe core reset
641d5b0e70fSEmmanuel Vadot
642d5b0e70fSEmmanuel Vadot  - if:
6437ef62cebSEmmanuel Vadot      properties:
6447ef62cebSEmmanuel Vadot        compatible:
6457ef62cebSEmmanuel Vadot          contains:
6467ef62cebSEmmanuel Vadot            enum:
6477ef62cebSEmmanuel Vadot              - qcom,pcie-sa8540p
6487ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
6497ef62cebSEmmanuel Vadot    then:
6507ef62cebSEmmanuel Vadot      properties:
6517ef62cebSEmmanuel Vadot        clocks:
6527ef62cebSEmmanuel Vadot          minItems: 8
6537ef62cebSEmmanuel Vadot          maxItems: 9
6547ef62cebSEmmanuel Vadot        clock-names:
6557ef62cebSEmmanuel Vadot          minItems: 8
6567ef62cebSEmmanuel Vadot          items:
6577ef62cebSEmmanuel Vadot            - const: aux # Auxiliary clock
6587ef62cebSEmmanuel Vadot            - const: cfg # Configuration clock
6597ef62cebSEmmanuel Vadot            - const: bus_master # Master AXI clock
6607ef62cebSEmmanuel Vadot            - const: bus_slave # Slave AXI clock
6617ef62cebSEmmanuel Vadot            - const: slave_q2a # Slave Q2A clock
6627ef62cebSEmmanuel Vadot            - const: ddrss_sf_tbu # PCIe SF TBU clock
6637ef62cebSEmmanuel Vadot            - const: noc_aggr_4 # NoC aggregate 4 clock
6647ef62cebSEmmanuel Vadot            - const: noc_aggr_south_sf # NoC aggregate South SF clock
6657ef62cebSEmmanuel Vadot            - const: cnoc_qx # Configuration NoC QX clock
6667ef62cebSEmmanuel Vadot        resets:
6677ef62cebSEmmanuel Vadot          maxItems: 1
6687ef62cebSEmmanuel Vadot        reset-names:
6697ef62cebSEmmanuel Vadot          items:
6707ef62cebSEmmanuel Vadot            - const: pci # PCIe core reset
6717ef62cebSEmmanuel Vadot
6727ef62cebSEmmanuel Vadot  - if:
6738bab661aSEmmanuel Vadot      properties:
6748bab661aSEmmanuel Vadot        compatible:
6758bab661aSEmmanuel Vadot          contains:
6768bab661aSEmmanuel Vadot            enum:
6778bab661aSEmmanuel Vadot              - qcom,pcie-sa8540p
6788bab661aSEmmanuel Vadot              - qcom,pcie-sc8280xp
6798bab661aSEmmanuel Vadot    then:
6808bab661aSEmmanuel Vadot      required:
6818bab661aSEmmanuel Vadot        - interconnects
6828bab661aSEmmanuel Vadot        - interconnect-names
6838bab661aSEmmanuel Vadot
6848bab661aSEmmanuel Vadot  - if:
685d5b0e70fSEmmanuel Vadot      not:
686d5b0e70fSEmmanuel Vadot        properties:
687d5b0e70fSEmmanuel Vadot          compatible:
688d5b0e70fSEmmanuel Vadot            contains:
689d5b0e70fSEmmanuel Vadot              enum:
690d5b0e70fSEmmanuel Vadot                - qcom,pcie-apq8064
691d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq4019
692d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8064
693d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8064v2
694d5b0e70fSEmmanuel Vadot                - qcom,pcie-ipq8074
695*cb7aa33aSEmmanuel Vadot                - qcom,pcie-ipq8074-gen3
696d5b0e70fSEmmanuel Vadot                - qcom,pcie-qcs404
697d5b0e70fSEmmanuel Vadot    then:
698d5b0e70fSEmmanuel Vadot      required:
699d5b0e70fSEmmanuel Vadot        - power-domains
700d5b0e70fSEmmanuel Vadot
701d5b0e70fSEmmanuel Vadot  - if:
702d5b0e70fSEmmanuel Vadot      not:
703d5b0e70fSEmmanuel Vadot        properties:
704b97ee269SEmmanuel Vadot          compatible:
705d5b0e70fSEmmanuel Vadot            contains:
706d5b0e70fSEmmanuel Vadot              enum:
707d5b0e70fSEmmanuel Vadot                - qcom,pcie-msm8996
708d5b0e70fSEmmanuel Vadot    then:
709d5b0e70fSEmmanuel Vadot      required:
710d5b0e70fSEmmanuel Vadot        - resets
711d5b0e70fSEmmanuel Vadot        - reset-names
712d5b0e70fSEmmanuel Vadot
713b97ee269SEmmanuel Vadot  - if:
714b97ee269SEmmanuel Vadot      properties:
715b97ee269SEmmanuel Vadot        compatible:
716b97ee269SEmmanuel Vadot          contains:
717b97ee269SEmmanuel Vadot            enum:
718b97ee269SEmmanuel Vadot              - qcom,pcie-msm8996
719b97ee269SEmmanuel Vadot              - qcom,pcie-sc7280
720b97ee269SEmmanuel Vadot              - qcom,pcie-sc8180x
721b97ee269SEmmanuel Vadot              - qcom,pcie-sdm845
722b97ee269SEmmanuel Vadot              - qcom,pcie-sm8150
723b97ee269SEmmanuel Vadot              - qcom,pcie-sm8250
724*cb7aa33aSEmmanuel Vadot              - qcom,pcie-sm8350
725b97ee269SEmmanuel Vadot              - qcom,pcie-sm8450-pcie0
726b97ee269SEmmanuel Vadot              - qcom,pcie-sm8450-pcie1
727b97ee269SEmmanuel Vadot    then:
728b97ee269SEmmanuel Vadot      oneOf:
729b97ee269SEmmanuel Vadot        - properties:
730b97ee269SEmmanuel Vadot            interrupts:
731b97ee269SEmmanuel Vadot              maxItems: 1
732b97ee269SEmmanuel Vadot            interrupt-names:
733b97ee269SEmmanuel Vadot              items:
734b97ee269SEmmanuel Vadot                - const: msi
735b97ee269SEmmanuel Vadot        - properties:
736b97ee269SEmmanuel Vadot            interrupts:
737b97ee269SEmmanuel Vadot              minItems: 8
738b97ee269SEmmanuel Vadot            interrupt-names:
739b97ee269SEmmanuel Vadot              items:
740b97ee269SEmmanuel Vadot                - const: msi0
741b97ee269SEmmanuel Vadot                - const: msi1
742b97ee269SEmmanuel Vadot                - const: msi2
743b97ee269SEmmanuel Vadot                - const: msi3
744b97ee269SEmmanuel Vadot                - const: msi4
745b97ee269SEmmanuel Vadot                - const: msi5
746b97ee269SEmmanuel Vadot                - const: msi6
747b97ee269SEmmanuel Vadot                - const: msi7
7487ef62cebSEmmanuel Vadot
7497ef62cebSEmmanuel Vadot  - if:
7507ef62cebSEmmanuel Vadot      properties:
7517ef62cebSEmmanuel Vadot        compatible:
7527ef62cebSEmmanuel Vadot          contains:
7537ef62cebSEmmanuel Vadot            enum:
7547ef62cebSEmmanuel Vadot              - qcom,pcie-sc8280xp
7557ef62cebSEmmanuel Vadot    then:
7567ef62cebSEmmanuel Vadot      properties:
7577ef62cebSEmmanuel Vadot        interrupts:
7587ef62cebSEmmanuel Vadot          minItems: 4
7597ef62cebSEmmanuel Vadot          maxItems: 4
7607ef62cebSEmmanuel Vadot        interrupt-names:
7617ef62cebSEmmanuel Vadot          items:
7627ef62cebSEmmanuel Vadot            - const: msi0
7637ef62cebSEmmanuel Vadot            - const: msi1
7647ef62cebSEmmanuel Vadot            - const: msi2
7657ef62cebSEmmanuel Vadot            - const: msi3
7667ef62cebSEmmanuel Vadot
7677ef62cebSEmmanuel Vadot  - if:
7687ef62cebSEmmanuel Vadot      properties:
7697ef62cebSEmmanuel Vadot        compatible:
7707ef62cebSEmmanuel Vadot          contains:
7717ef62cebSEmmanuel Vadot            enum:
7727ef62cebSEmmanuel Vadot              - qcom,pcie-apq8064
7737ef62cebSEmmanuel Vadot              - qcom,pcie-apq8084
7747ef62cebSEmmanuel Vadot              - qcom,pcie-ipq4019
7757ef62cebSEmmanuel Vadot              - qcom,pcie-ipq6018
7767ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8064
7777ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8064-v2
7787ef62cebSEmmanuel Vadot              - qcom,pcie-ipq8074
779*cb7aa33aSEmmanuel Vadot              - qcom,pcie-ipq8074-gen3
7807ef62cebSEmmanuel Vadot              - qcom,pcie-qcs404
7817ef62cebSEmmanuel Vadot              - qcom,pcie-sa8540p
7827ef62cebSEmmanuel Vadot    then:
783b97ee269SEmmanuel Vadot      properties:
784b97ee269SEmmanuel Vadot        interrupts:
785b97ee269SEmmanuel Vadot          maxItems: 1
786b97ee269SEmmanuel Vadot        interrupt-names:
787b97ee269SEmmanuel Vadot          items:
788b97ee269SEmmanuel Vadot            - const: msi
789b97ee269SEmmanuel Vadot
790d5b0e70fSEmmanuel VadotunevaluatedProperties: false
791d5b0e70fSEmmanuel Vadot
792d5b0e70fSEmmanuel Vadotexamples:
793d5b0e70fSEmmanuel Vadot  - |
794d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
795d5b0e70fSEmmanuel Vadot    pcie@1b500000 {
796d5b0e70fSEmmanuel Vadot      compatible = "qcom,pcie-ipq8064";
797d5b0e70fSEmmanuel Vadot      reg = <0x1b500000 0x1000>,
798d5b0e70fSEmmanuel Vadot            <0x1b502000 0x80>,
799d5b0e70fSEmmanuel Vadot            <0x1b600000 0x100>,
800d5b0e70fSEmmanuel Vadot            <0x0ff00000 0x100000>;
801d5b0e70fSEmmanuel Vadot      reg-names = "dbi", "elbi", "parf", "config";
802d5b0e70fSEmmanuel Vadot      device_type = "pci";
803d5b0e70fSEmmanuel Vadot      linux,pci-domain = <0>;
804d5b0e70fSEmmanuel Vadot      bus-range = <0x00 0xff>;
805d5b0e70fSEmmanuel Vadot      num-lanes = <1>;
806d5b0e70fSEmmanuel Vadot      #address-cells = <3>;
807d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
808d5b0e70fSEmmanuel Vadot      ranges = <0x81000000 0 0 0x0fe00000 0 0x00100000>,
809d5b0e70fSEmmanuel Vadot               <0x82000000 0 0 0x08000000 0 0x07e00000>;
810d5b0e70fSEmmanuel Vadot      interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
811d5b0e70fSEmmanuel Vadot      interrupt-names = "msi";
812d5b0e70fSEmmanuel Vadot      #interrupt-cells = <1>;
813d5b0e70fSEmmanuel Vadot      interrupt-map-mask = <0 0 0 0x7>;
814d5b0e70fSEmmanuel Vadot      interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>,
815d5b0e70fSEmmanuel Vadot                      <0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>,
816d5b0e70fSEmmanuel Vadot                      <0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>,
817d5b0e70fSEmmanuel Vadot                      <0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>;
818d5b0e70fSEmmanuel Vadot      clocks = <&gcc 41>,
819d5b0e70fSEmmanuel Vadot               <&gcc 43>,
820d5b0e70fSEmmanuel Vadot               <&gcc 44>,
821d5b0e70fSEmmanuel Vadot               <&gcc 42>,
822d5b0e70fSEmmanuel Vadot               <&gcc 248>;
823d5b0e70fSEmmanuel Vadot      clock-names = "core", "iface", "phy", "aux", "ref";
824d5b0e70fSEmmanuel Vadot      resets = <&gcc 27>,
825d5b0e70fSEmmanuel Vadot               <&gcc 26>,
826d5b0e70fSEmmanuel Vadot               <&gcc 25>,
827d5b0e70fSEmmanuel Vadot               <&gcc 24>,
828d5b0e70fSEmmanuel Vadot               <&gcc 23>,
829d5b0e70fSEmmanuel Vadot               <&gcc 22>;
830d5b0e70fSEmmanuel Vadot      reset-names = "axi", "ahb", "por", "pci", "phy", "ext";
831d5b0e70fSEmmanuel Vadot      pinctrl-0 = <&pcie_pins_default>;
832d5b0e70fSEmmanuel Vadot      pinctrl-names = "default";
833d5b0e70fSEmmanuel Vadot      vdda-supply = <&pm8921_s3>;
834d5b0e70fSEmmanuel Vadot      vdda_phy-supply = <&pm8921_lvs6>;
835d5b0e70fSEmmanuel Vadot      vdda_refclk-supply = <&ext_3p3v>;
836d5b0e70fSEmmanuel Vadot    };
837d5b0e70fSEmmanuel Vadot  - |
838d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
839d5b0e70fSEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
840d5b0e70fSEmmanuel Vadot    pcie@fc520000 {
841d5b0e70fSEmmanuel Vadot      compatible = "qcom,pcie-apq8084";
842d5b0e70fSEmmanuel Vadot      reg = <0xfc520000 0x2000>,
843d5b0e70fSEmmanuel Vadot            <0xff000000 0x1000>,
844d5b0e70fSEmmanuel Vadot            <0xff001000 0x1000>,
845d5b0e70fSEmmanuel Vadot            <0xff002000 0x2000>;
846d5b0e70fSEmmanuel Vadot      reg-names = "parf", "dbi", "elbi", "config";
847d5b0e70fSEmmanuel Vadot      device_type = "pci";
848d5b0e70fSEmmanuel Vadot      linux,pci-domain = <0>;
849d5b0e70fSEmmanuel Vadot      bus-range = <0x00 0xff>;
850d5b0e70fSEmmanuel Vadot      num-lanes = <1>;
851d5b0e70fSEmmanuel Vadot      #address-cells = <3>;
852d5b0e70fSEmmanuel Vadot      #size-cells = <2>;
853d5b0e70fSEmmanuel Vadot      ranges = <0x81000000 0 0          0xff200000 0 0x00100000>,
854d5b0e70fSEmmanuel Vadot               <0x82000000 0 0x00300000 0xff300000 0 0x00d00000>;
855d5b0e70fSEmmanuel Vadot      interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
856d5b0e70fSEmmanuel Vadot      interrupt-names = "msi";
857d5b0e70fSEmmanuel Vadot      #interrupt-cells = <1>;
858d5b0e70fSEmmanuel Vadot      interrupt-map-mask = <0 0 0 0x7>;
859d5b0e70fSEmmanuel Vadot      interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>,
860d5b0e70fSEmmanuel Vadot                      <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>,
861d5b0e70fSEmmanuel Vadot                      <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>,
862d5b0e70fSEmmanuel Vadot                      <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>;
863d5b0e70fSEmmanuel Vadot      clocks = <&gcc 324>,
864d5b0e70fSEmmanuel Vadot               <&gcc 325>,
865d5b0e70fSEmmanuel Vadot               <&gcc 327>,
866d5b0e70fSEmmanuel Vadot               <&gcc 323>;
867d5b0e70fSEmmanuel Vadot      clock-names = "iface", "master_bus", "slave_bus", "aux";
868d5b0e70fSEmmanuel Vadot      resets = <&gcc 81>;
869d5b0e70fSEmmanuel Vadot      reset-names = "core";
870d5b0e70fSEmmanuel Vadot      power-domains = <&gcc 1>;
871d5b0e70fSEmmanuel Vadot      vdda-supply = <&pma8084_l3>;
872d5b0e70fSEmmanuel Vadot      phys = <&pciephy0>;
873d5b0e70fSEmmanuel Vadot      phy-names = "pciephy";
874d5b0e70fSEmmanuel Vadot      perst-gpios = <&tlmm 70 GPIO_ACTIVE_LOW>;
875d5b0e70fSEmmanuel Vadot      pinctrl-0 = <&pcie0_pins_default>;
876d5b0e70fSEmmanuel Vadot      pinctrl-names = "default";
877d5b0e70fSEmmanuel Vadot    };
878d5b0e70fSEmmanuel Vadot...
879