xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-ipq8074.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*edf1701cSKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*edf1701cSKrzysztof Kozlowski%YAML 1.2
3*edf1701cSKrzysztof Kozlowski---
4*edf1701cSKrzysztof Kozlowski$id: http://devicetree.org/schemas/pci/qcom,pcie-ipq8074.yaml#
5*edf1701cSKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*edf1701cSKrzysztof Kozlowski
7*edf1701cSKrzysztof Kozlowskititle: Qualcomm IPQ8074 PCI Express Root Complex
8*edf1701cSKrzysztof Kozlowski
9*edf1701cSKrzysztof Kozlowskimaintainers:
10*edf1701cSKrzysztof Kozlowski  - Bjorn Andersson <andersson@kernel.org>
11*edf1701cSKrzysztof Kozlowski  - Manivannan Sadhasivam <mani@kernel.org>
12*edf1701cSKrzysztof Kozlowski
13*edf1701cSKrzysztof Kozlowskiproperties:
14*edf1701cSKrzysztof Kozlowski  compatible:
15*edf1701cSKrzysztof Kozlowski    enum:
16*edf1701cSKrzysztof Kozlowski      - qcom,pcie-ipq8074
17*edf1701cSKrzysztof Kozlowski
18*edf1701cSKrzysztof Kozlowski  reg:
19*edf1701cSKrzysztof Kozlowski    maxItems: 4
20*edf1701cSKrzysztof Kozlowski
21*edf1701cSKrzysztof Kozlowski  reg-names:
22*edf1701cSKrzysztof Kozlowski    items:
23*edf1701cSKrzysztof Kozlowski      - const: dbi
24*edf1701cSKrzysztof Kozlowski      - const: elbi
25*edf1701cSKrzysztof Kozlowski      - const: parf
26*edf1701cSKrzysztof Kozlowski      - const: config
27*edf1701cSKrzysztof Kozlowski
28*edf1701cSKrzysztof Kozlowski  clocks:
29*edf1701cSKrzysztof Kozlowski    maxItems: 5
30*edf1701cSKrzysztof Kozlowski
31*edf1701cSKrzysztof Kozlowski  clock-names:
32*edf1701cSKrzysztof Kozlowski    items:
33*edf1701cSKrzysztof Kozlowski      - const: iface # PCIe to SysNOC BIU clock
34*edf1701cSKrzysztof Kozlowski      - const: axi_m # AXI Master clock
35*edf1701cSKrzysztof Kozlowski      - const: axi_s # AXI Slave clock
36*edf1701cSKrzysztof Kozlowski      - const: ahb
37*edf1701cSKrzysztof Kozlowski      - const: aux
38*edf1701cSKrzysztof Kozlowski
39*edf1701cSKrzysztof Kozlowski  interrupts:
40*edf1701cSKrzysztof Kozlowski    maxItems: 9
41*edf1701cSKrzysztof Kozlowski
42*edf1701cSKrzysztof Kozlowski  interrupt-names:
43*edf1701cSKrzysztof Kozlowski    items:
44*edf1701cSKrzysztof Kozlowski      - const: msi0
45*edf1701cSKrzysztof Kozlowski      - const: msi1
46*edf1701cSKrzysztof Kozlowski      - const: msi2
47*edf1701cSKrzysztof Kozlowski      - const: msi3
48*edf1701cSKrzysztof Kozlowski      - const: msi4
49*edf1701cSKrzysztof Kozlowski      - const: msi5
50*edf1701cSKrzysztof Kozlowski      - const: msi6
51*edf1701cSKrzysztof Kozlowski      - const: msi7
52*edf1701cSKrzysztof Kozlowski      - const: global
53*edf1701cSKrzysztof Kozlowski
54*edf1701cSKrzysztof Kozlowski  resets:
55*edf1701cSKrzysztof Kozlowski    maxItems: 7
56*edf1701cSKrzysztof Kozlowski
57*edf1701cSKrzysztof Kozlowski  reset-names:
58*edf1701cSKrzysztof Kozlowski    items:
59*edf1701cSKrzysztof Kozlowski      - const: pipe
60*edf1701cSKrzysztof Kozlowski      - const: sleep
61*edf1701cSKrzysztof Kozlowski      - const: sticky # Core sticky reset
62*edf1701cSKrzysztof Kozlowski      - const: axi_m # AXI master reset
63*edf1701cSKrzysztof Kozlowski      - const: axi_s # AXI slave reset
64*edf1701cSKrzysztof Kozlowski      - const: ahb
65*edf1701cSKrzysztof Kozlowski      - const: axi_m_sticky # AXI master sticky reset
66*edf1701cSKrzysztof Kozlowski
67*edf1701cSKrzysztof Kozlowskirequired:
68*edf1701cSKrzysztof Kozlowski  - resets
69*edf1701cSKrzysztof Kozlowski  - reset-names
70*edf1701cSKrzysztof Kozlowski
71*edf1701cSKrzysztof KozlowskiallOf:
72*edf1701cSKrzysztof Kozlowski  - $ref: qcom,pcie-common.yaml#
73*edf1701cSKrzysztof Kozlowski
74*edf1701cSKrzysztof KozlowskiunevaluatedProperties: false
75*edf1701cSKrzysztof Kozlowski
76*edf1701cSKrzysztof Kozlowskiexamples:
77*edf1701cSKrzysztof Kozlowski  - |
78*edf1701cSKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,gcc-ipq8074.h>
79*edf1701cSKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
80*edf1701cSKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
81*edf1701cSKrzysztof Kozlowski
82*edf1701cSKrzysztof Kozlowski    pcie@10000000 {
83*edf1701cSKrzysztof Kozlowski        compatible = "qcom,pcie-ipq8074";
84*edf1701cSKrzysztof Kozlowski        reg = <0x10000000 0xf1d>,
85*edf1701cSKrzysztof Kozlowski              <0x10000f20 0xa8>,
86*edf1701cSKrzysztof Kozlowski              <0x00088000 0x2000>,
87*edf1701cSKrzysztof Kozlowski              <0x10100000 0x1000>;
88*edf1701cSKrzysztof Kozlowski        reg-names = "dbi", "elbi", "parf", "config";
89*edf1701cSKrzysztof Kozlowski        ranges = <0x81000000 0x0 0x00000000 0x10200000 0x0 0x10000>,   /* I/O */
90*edf1701cSKrzysztof Kozlowski                 <0x82000000 0x0 0x10220000 0x10220000 0x0 0xfde0000>; /* MEM */
91*edf1701cSKrzysztof Kozlowski
92*edf1701cSKrzysztof Kozlowski        device_type = "pci";
93*edf1701cSKrzysztof Kozlowski        linux,pci-domain = <1>;
94*edf1701cSKrzysztof Kozlowski        bus-range = <0x00 0xff>;
95*edf1701cSKrzysztof Kozlowski        num-lanes = <1>;
96*edf1701cSKrzysztof Kozlowski        max-link-speed = <2>;
97*edf1701cSKrzysztof Kozlowski        #address-cells = <3>;
98*edf1701cSKrzysztof Kozlowski        #size-cells = <2>;
99*edf1701cSKrzysztof Kozlowski
100*edf1701cSKrzysztof Kozlowski        clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>,
101*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_M_CLK>,
102*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_S_CLK>,
103*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AHB_CLK>,
104*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AUX_CLK>;
105*edf1701cSKrzysztof Kozlowski        clock-names = "iface",
106*edf1701cSKrzysztof Kozlowski                      "axi_m",
107*edf1701cSKrzysztof Kozlowski                      "axi_s",
108*edf1701cSKrzysztof Kozlowski                      "ahb",
109*edf1701cSKrzysztof Kozlowski                      "aux";
110*edf1701cSKrzysztof Kozlowski
111*edf1701cSKrzysztof Kozlowski        interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
112*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
113*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
114*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
115*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
116*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
117*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
118*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
119*edf1701cSKrzysztof Kozlowski                     <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
120*edf1701cSKrzysztof Kozlowski        interrupt-names = "msi0",
121*edf1701cSKrzysztof Kozlowski                          "msi1",
122*edf1701cSKrzysztof Kozlowski                          "msi2",
123*edf1701cSKrzysztof Kozlowski                          "msi3",
124*edf1701cSKrzysztof Kozlowski                          "msi4",
125*edf1701cSKrzysztof Kozlowski                          "msi5",
126*edf1701cSKrzysztof Kozlowski                          "msi6",
127*edf1701cSKrzysztof Kozlowski                          "msi7",
128*edf1701cSKrzysztof Kozlowski                          "global";
129*edf1701cSKrzysztof Kozlowski        #interrupt-cells = <1>;
130*edf1701cSKrzysztof Kozlowski        interrupt-map-mask = <0 0 0 0x7>;
131*edf1701cSKrzysztof Kozlowski        interrupt-map = <0 0 0 1 &intc 0 GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
132*edf1701cSKrzysztof Kozlowski                        <0 0 0 2 &intc 0 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
133*edf1701cSKrzysztof Kozlowski                        <0 0 0 3 &intc 0 GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
134*edf1701cSKrzysztof Kozlowski                        <0 0 0 4 &intc 0 GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
135*edf1701cSKrzysztof Kozlowski
136*edf1701cSKrzysztof Kozlowski        phys = <&pcie_qmp1>;
137*edf1701cSKrzysztof Kozlowski        phy-names = "pciephy";
138*edf1701cSKrzysztof Kozlowski
139*edf1701cSKrzysztof Kozlowski        resets = <&gcc GCC_PCIE1_PIPE_ARES>,
140*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_SLEEP_ARES>,
141*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_CORE_STICKY_ARES>,
142*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_MASTER_ARES>,
143*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_SLAVE_ARES>,
144*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AHB_ARES>,
145*edf1701cSKrzysztof Kozlowski                 <&gcc GCC_PCIE1_AXI_MASTER_STICKY_ARES>;
146*edf1701cSKrzysztof Kozlowski        reset-names = "pipe",
147*edf1701cSKrzysztof Kozlowski                      "sleep",
148*edf1701cSKrzysztof Kozlowski                      "sticky",
149*edf1701cSKrzysztof Kozlowski                      "axi_m",
150*edf1701cSKrzysztof Kozlowski                      "axi_s",
151*edf1701cSKrzysztof Kozlowski                      "ahb",
152*edf1701cSKrzysztof Kozlowski                      "axi_m_sticky";
153*edf1701cSKrzysztof Kozlowski
154*edf1701cSKrzysztof Kozlowski        perst-gpios = <&tlmm 58 GPIO_ACTIVE_LOW>;
155*edf1701cSKrzysztof Kozlowski
156*edf1701cSKrzysztof Kozlowski        pcie@0 {
157*edf1701cSKrzysztof Kozlowski            device_type = "pci";
158*edf1701cSKrzysztof Kozlowski            reg = <0x0 0x0 0x0 0x0 0x0>;
159*edf1701cSKrzysztof Kozlowski            bus-range = <0x01 0xff>;
160*edf1701cSKrzysztof Kozlowski
161*edf1701cSKrzysztof Kozlowski            #address-cells = <3>;
162*edf1701cSKrzysztof Kozlowski            #size-cells = <2>;
163*edf1701cSKrzysztof Kozlowski            ranges;
164*edf1701cSKrzysztof Kozlowski        };
165*edf1701cSKrzysztof Kozlowski    };
166