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