xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-ipq9574.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*5e8bf1c1SKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*5e8bf1c1SKrzysztof Kozlowski%YAML 1.2
3*5e8bf1c1SKrzysztof Kozlowski---
4*5e8bf1c1SKrzysztof Kozlowski$id: http://devicetree.org/schemas/pci/qcom,pcie-ipq9574.yaml#
5*5e8bf1c1SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5e8bf1c1SKrzysztof Kozlowski
7*5e8bf1c1SKrzysztof Kozlowskititle: Qualcomm IPQ9574 PCI Express Root Complex
8*5e8bf1c1SKrzysztof Kozlowski
9*5e8bf1c1SKrzysztof Kozlowskimaintainers:
10*5e8bf1c1SKrzysztof Kozlowski  - Bjorn Andersson <andersson@kernel.org>
11*5e8bf1c1SKrzysztof Kozlowski  - Manivannan Sadhasivam <mani@kernel.org>
12*5e8bf1c1SKrzysztof Kozlowski
13*5e8bf1c1SKrzysztof Kozlowskiproperties:
14*5e8bf1c1SKrzysztof Kozlowski  compatible:
15*5e8bf1c1SKrzysztof Kozlowski    oneOf:
16*5e8bf1c1SKrzysztof Kozlowski      - enum:
17*5e8bf1c1SKrzysztof Kozlowski          - qcom,pcie-ipq9574
18*5e8bf1c1SKrzysztof Kozlowski      - items:
19*5e8bf1c1SKrzysztof Kozlowski          - enum:
20*5e8bf1c1SKrzysztof Kozlowski              - qcom,pcie-ipq5332
21*5e8bf1c1SKrzysztof Kozlowski              - qcom,pcie-ipq5424
22*5e8bf1c1SKrzysztof Kozlowski          - const: qcom,pcie-ipq9574
23*5e8bf1c1SKrzysztof Kozlowski
24*5e8bf1c1SKrzysztof Kozlowski  reg:
25*5e8bf1c1SKrzysztof Kozlowski    maxItems: 6
26*5e8bf1c1SKrzysztof Kozlowski
27*5e8bf1c1SKrzysztof Kozlowski  reg-names:
28*5e8bf1c1SKrzysztof Kozlowski    items:
29*5e8bf1c1SKrzysztof Kozlowski      - const: dbi
30*5e8bf1c1SKrzysztof Kozlowski      - const: elbi
31*5e8bf1c1SKrzysztof Kozlowski      - const: atu
32*5e8bf1c1SKrzysztof Kozlowski      - const: parf
33*5e8bf1c1SKrzysztof Kozlowski      - const: config
34*5e8bf1c1SKrzysztof Kozlowski      - const: mhi
35*5e8bf1c1SKrzysztof Kozlowski
36*5e8bf1c1SKrzysztof Kozlowski  clocks:
37*5e8bf1c1SKrzysztof Kozlowski    maxItems: 6
38*5e8bf1c1SKrzysztof Kozlowski
39*5e8bf1c1SKrzysztof Kozlowski  clock-names:
40*5e8bf1c1SKrzysztof Kozlowski    items:
41*5e8bf1c1SKrzysztof Kozlowski      - const: axi_m # AXI Master clock
42*5e8bf1c1SKrzysztof Kozlowski      - const: axi_s # AXI Slave clock
43*5e8bf1c1SKrzysztof Kozlowski      - const: axi_bridge
44*5e8bf1c1SKrzysztof Kozlowski      - const: rchng
45*5e8bf1c1SKrzysztof Kozlowski      - const: ahb
46*5e8bf1c1SKrzysztof Kozlowski      - const: aux
47*5e8bf1c1SKrzysztof Kozlowski
48*5e8bf1c1SKrzysztof Kozlowski  interrupts:
49*5e8bf1c1SKrzysztof Kozlowski    minItems: 8
50*5e8bf1c1SKrzysztof Kozlowski    maxItems: 9
51*5e8bf1c1SKrzysztof Kozlowski
52*5e8bf1c1SKrzysztof Kozlowski  interrupt-names:
53*5e8bf1c1SKrzysztof Kozlowski    minItems: 8
54*5e8bf1c1SKrzysztof Kozlowski    items:
55*5e8bf1c1SKrzysztof Kozlowski      - const: msi0
56*5e8bf1c1SKrzysztof Kozlowski      - const: msi1
57*5e8bf1c1SKrzysztof Kozlowski      - const: msi2
58*5e8bf1c1SKrzysztof Kozlowski      - const: msi3
59*5e8bf1c1SKrzysztof Kozlowski      - const: msi4
60*5e8bf1c1SKrzysztof Kozlowski      - const: msi5
61*5e8bf1c1SKrzysztof Kozlowski      - const: msi6
62*5e8bf1c1SKrzysztof Kozlowski      - const: msi7
63*5e8bf1c1SKrzysztof Kozlowski      - const: global
64*5e8bf1c1SKrzysztof Kozlowski
65*5e8bf1c1SKrzysztof Kozlowski  resets:
66*5e8bf1c1SKrzysztof Kozlowski    maxItems: 8
67*5e8bf1c1SKrzysztof Kozlowski
68*5e8bf1c1SKrzysztof Kozlowski  reset-names:
69*5e8bf1c1SKrzysztof Kozlowski    items:
70*5e8bf1c1SKrzysztof Kozlowski      - const: pipe
71*5e8bf1c1SKrzysztof Kozlowski      - const: sticky # Core sticky reset
72*5e8bf1c1SKrzysztof Kozlowski      - const: axi_s_sticky # AXI Slave Sticky reset
73*5e8bf1c1SKrzysztof Kozlowski      - const: axi_s # AXI slave reset
74*5e8bf1c1SKrzysztof Kozlowski      - const: axi_m_sticky # AXI Master Sticky reset
75*5e8bf1c1SKrzysztof Kozlowski      - const: axi_m # AXI master reset
76*5e8bf1c1SKrzysztof Kozlowski      - const: aux
77*5e8bf1c1SKrzysztof Kozlowski      - const: ahb
78*5e8bf1c1SKrzysztof Kozlowski
79*5e8bf1c1SKrzysztof Kozlowskirequired:
80*5e8bf1c1SKrzysztof Kozlowski  - resets
81*5e8bf1c1SKrzysztof Kozlowski  - reset-names
82*5e8bf1c1SKrzysztof Kozlowski
83*5e8bf1c1SKrzysztof KozlowskiallOf:
84*5e8bf1c1SKrzysztof Kozlowski  - $ref: qcom,pcie-common.yaml#
85*5e8bf1c1SKrzysztof Kozlowski
86*5e8bf1c1SKrzysztof KozlowskiunevaluatedProperties: false
87*5e8bf1c1SKrzysztof Kozlowski
88*5e8bf1c1SKrzysztof Kozlowskiexamples:
89*5e8bf1c1SKrzysztof Kozlowski  - |
90*5e8bf1c1SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,ipq9574-gcc.h>
91*5e8bf1c1SKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
92*5e8bf1c1SKrzysztof Kozlowski    #include <dt-bindings/interconnect/qcom,ipq9574.h>
93*5e8bf1c1SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
94*5e8bf1c1SKrzysztof Kozlowski    #include <dt-bindings/reset/qcom,ipq9574-gcc.h>
95*5e8bf1c1SKrzysztof Kozlowski
96*5e8bf1c1SKrzysztof Kozlowski    pcie@10000000 {
97*5e8bf1c1SKrzysztof Kozlowski        compatible = "qcom,pcie-ipq9574";
98*5e8bf1c1SKrzysztof Kozlowski        reg = <0x10000000 0xf1d>,
99*5e8bf1c1SKrzysztof Kozlowski              <0x10000f20 0xa8>,
100*5e8bf1c1SKrzysztof Kozlowski              <0x10001000 0x1000>,
101*5e8bf1c1SKrzysztof Kozlowski              <0x000f8000 0x4000>,
102*5e8bf1c1SKrzysztof Kozlowski              <0x10100000 0x1000>,
103*5e8bf1c1SKrzysztof Kozlowski              <0x000fe000 0x1000>;
104*5e8bf1c1SKrzysztof Kozlowski        reg-names = "dbi",
105*5e8bf1c1SKrzysztof Kozlowski                "elbi",
106*5e8bf1c1SKrzysztof Kozlowski                "atu",
107*5e8bf1c1SKrzysztof Kozlowski                "parf",
108*5e8bf1c1SKrzysztof Kozlowski                "config",
109*5e8bf1c1SKrzysztof Kozlowski                "mhi";
110*5e8bf1c1SKrzysztof Kozlowski        ranges = <0x01000000 0x0 0x00000000 0x10200000 0x0 0x100000>,
111*5e8bf1c1SKrzysztof Kozlowski                 <0x02000000 0x0 0x10300000 0x10300000 0x0 0x7d00000>;
112*5e8bf1c1SKrzysztof Kozlowski
113*5e8bf1c1SKrzysztof Kozlowski        device_type = "pci";
114*5e8bf1c1SKrzysztof Kozlowski        linux,pci-domain = <1>;
115*5e8bf1c1SKrzysztof Kozlowski        bus-range = <0x00 0xff>;
116*5e8bf1c1SKrzysztof Kozlowski        num-lanes = <1>;
117*5e8bf1c1SKrzysztof Kozlowski        #address-cells = <3>;
118*5e8bf1c1SKrzysztof Kozlowski        #size-cells = <2>;
119*5e8bf1c1SKrzysztof Kozlowski
120*5e8bf1c1SKrzysztof Kozlowski        clocks = <&gcc GCC_PCIE1_AXI_M_CLK>,
121*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_S_CLK>,
122*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>,
123*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_RCHNG_CLK>,
124*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AHB_CLK>,
125*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AUX_CLK>;
126*5e8bf1c1SKrzysztof Kozlowski        clock-names = "axi_m",
127*5e8bf1c1SKrzysztof Kozlowski                      "axi_s",
128*5e8bf1c1SKrzysztof Kozlowski                      "axi_bridge",
129*5e8bf1c1SKrzysztof Kozlowski                      "rchng",
130*5e8bf1c1SKrzysztof Kozlowski                      "ahb",
131*5e8bf1c1SKrzysztof Kozlowski                      "aux";
132*5e8bf1c1SKrzysztof Kozlowski
133*5e8bf1c1SKrzysztof Kozlowski        interconnects = <&gcc MASTER_ANOC_PCIE1 &gcc SLAVE_ANOC_PCIE1>,
134*5e8bf1c1SKrzysztof Kozlowski                        <&gcc MASTER_SNOC_PCIE1 &gcc SLAVE_SNOC_PCIE1>;
135*5e8bf1c1SKrzysztof Kozlowski        interconnect-names = "pcie-mem", "cpu-pcie";
136*5e8bf1c1SKrzysztof Kozlowski
137*5e8bf1c1SKrzysztof Kozlowski        interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
138*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
139*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
140*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
141*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
142*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
143*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
144*5e8bf1c1SKrzysztof Kozlowski                     <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
145*5e8bf1c1SKrzysztof Kozlowski        interrupt-names = "msi0",
146*5e8bf1c1SKrzysztof Kozlowski                          "msi1",
147*5e8bf1c1SKrzysztof Kozlowski                          "msi2",
148*5e8bf1c1SKrzysztof Kozlowski                          "msi3",
149*5e8bf1c1SKrzysztof Kozlowski                          "msi4",
150*5e8bf1c1SKrzysztof Kozlowski                          "msi5",
151*5e8bf1c1SKrzysztof Kozlowski                          "msi6",
152*5e8bf1c1SKrzysztof Kozlowski                          "msi7";
153*5e8bf1c1SKrzysztof Kozlowski
154*5e8bf1c1SKrzysztof Kozlowski        #interrupt-cells = <1>;
155*5e8bf1c1SKrzysztof Kozlowski        interrupt-map-mask = <0 0 0 0x7>;
156*5e8bf1c1SKrzysztof Kozlowski        interrupt-map = <0 0 0 1 &intc 0 GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
157*5e8bf1c1SKrzysztof Kozlowski                        <0 0 0 2 &intc 0 GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
158*5e8bf1c1SKrzysztof Kozlowski                        <0 0 0 3 &intc 0 GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
159*5e8bf1c1SKrzysztof Kozlowski                        <0 0 0 4 &intc 0 GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
160*5e8bf1c1SKrzysztof Kozlowski
161*5e8bf1c1SKrzysztof Kozlowski        resets = <&gcc GCC_PCIE1_PIPE_ARES>,
162*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_CORE_STICKY_ARES>,
163*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_S_STICKY_ARES>,
164*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_S_ARES>,
165*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_M_STICKY_ARES>,
166*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_M_ARES>,
167*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AUX_ARES>,
168*5e8bf1c1SKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AHB_ARES>;
169*5e8bf1c1SKrzysztof Kozlowski        reset-names = "pipe",
170*5e8bf1c1SKrzysztof Kozlowski                      "sticky",
171*5e8bf1c1SKrzysztof Kozlowski                      "axi_s_sticky",
172*5e8bf1c1SKrzysztof Kozlowski                      "axi_s",
173*5e8bf1c1SKrzysztof Kozlowski                      "axi_m_sticky",
174*5e8bf1c1SKrzysztof Kozlowski                      "axi_m",
175*5e8bf1c1SKrzysztof Kozlowski                      "aux",
176*5e8bf1c1SKrzysztof Kozlowski                      "ahb";
177*5e8bf1c1SKrzysztof Kozlowski
178*5e8bf1c1SKrzysztof Kozlowski        phys = <&pcie1_phy>;
179*5e8bf1c1SKrzysztof Kozlowski        phy-names = "pciephy";
180*5e8bf1c1SKrzysztof Kozlowski
181*5e8bf1c1SKrzysztof Kozlowski        perst-gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
182*5e8bf1c1SKrzysztof Kozlowski        wake-gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
183*5e8bf1c1SKrzysztof Kozlowski    };
184