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