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