xref: /linux/Documentation/devicetree/bindings/pci/qcom,hawi-pcie.yaml (revision 570f7e331f5febb30f1384817463c7e42b65ca7d)
1*55aeda95SMatthew Leung# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*55aeda95SMatthew Leung%YAML 1.2
3*55aeda95SMatthew Leung---
4*55aeda95SMatthew Leung$id: http://devicetree.org/schemas/pci/qcom,hawi-pcie.yaml#
5*55aeda95SMatthew Leung$schema: http://devicetree.org/meta-schemas/core.yaml#
6*55aeda95SMatthew Leung
7*55aeda95SMatthew Leungtitle: Qualcomm Hawi PCI Express Root Complex
8*55aeda95SMatthew Leung
9*55aeda95SMatthew Leungmaintainers:
10*55aeda95SMatthew Leung  - Bjorn Andersson <andersson@kernel.org>
11*55aeda95SMatthew Leung  - Manivannan Sadhasivam <mani@kernel.org>
12*55aeda95SMatthew Leung
13*55aeda95SMatthew Leungdescription:
14*55aeda95SMatthew Leung  Qualcomm Hawi SoC (and compatible) PCIe root complex controller is based on
15*55aeda95SMatthew Leung  the Synopsys DesignWare PCIe IP.
16*55aeda95SMatthew Leung
17*55aeda95SMatthew Leungproperties:
18*55aeda95SMatthew Leung  compatible:
19*55aeda95SMatthew Leung    oneOf:
20*55aeda95SMatthew Leung      - const: qcom,hawi-pcie
21*55aeda95SMatthew Leung      - items:
22*55aeda95SMatthew Leung          - enum:
23*55aeda95SMatthew Leung              - qcom,maili-pcie
24*55aeda95SMatthew Leung          - const: qcom,hawi-pcie
25*55aeda95SMatthew Leung
26*55aeda95SMatthew Leung  reg:
27*55aeda95SMatthew Leung    items:
28*55aeda95SMatthew Leung      - description: Qualcomm specific registers
29*55aeda95SMatthew Leung      - description: DesignWare PCIe registers
30*55aeda95SMatthew Leung      - description: External local bus interface registers
31*55aeda95SMatthew Leung      - description: ATU address space
32*55aeda95SMatthew Leung      - description: PCIe configuration space
33*55aeda95SMatthew Leung      - description: MHI registers
34*55aeda95SMatthew Leung
35*55aeda95SMatthew Leung  reg-names:
36*55aeda95SMatthew Leung    items:
37*55aeda95SMatthew Leung      - const: parf
38*55aeda95SMatthew Leung      - const: dbi
39*55aeda95SMatthew Leung      - const: elbi
40*55aeda95SMatthew Leung      - const: atu
41*55aeda95SMatthew Leung      - const: config
42*55aeda95SMatthew Leung      - const: mhi
43*55aeda95SMatthew Leung
44*55aeda95SMatthew Leung  clocks:
45*55aeda95SMatthew Leung    items:
46*55aeda95SMatthew Leung      - description: PCIe Auxiliary clock
47*55aeda95SMatthew Leung      - description: PCIe Configuration clock
48*55aeda95SMatthew Leung      - description: PCIe Master AXI clock
49*55aeda95SMatthew Leung      - description: PCIe Slave AXI clock
50*55aeda95SMatthew Leung      - description: PCIe Slave Q2A AXI clock
51*55aeda95SMatthew Leung      - description: PCIe Aggre NoC AXI clock
52*55aeda95SMatthew Leung      - description: PCIe Config NoC AXI clock
53*55aeda95SMatthew Leung
54*55aeda95SMatthew Leung  clock-names:
55*55aeda95SMatthew Leung    items:
56*55aeda95SMatthew Leung      - const: aux
57*55aeda95SMatthew Leung      - const: cfg
58*55aeda95SMatthew Leung      - const: bus_master
59*55aeda95SMatthew Leung      - const: bus_slave
60*55aeda95SMatthew Leung      - const: slave_q2a
61*55aeda95SMatthew Leung      - const: noc_aggr
62*55aeda95SMatthew Leung      - const: cnoc_sf_axi
63*55aeda95SMatthew Leung
64*55aeda95SMatthew Leung  interrupts:
65*55aeda95SMatthew Leung    minItems: 9
66*55aeda95SMatthew Leung    maxItems: 9
67*55aeda95SMatthew Leung
68*55aeda95SMatthew Leung  interrupt-names:
69*55aeda95SMatthew Leung    items:
70*55aeda95SMatthew Leung      - const: msi0
71*55aeda95SMatthew Leung      - const: msi1
72*55aeda95SMatthew Leung      - const: msi2
73*55aeda95SMatthew Leung      - const: msi3
74*55aeda95SMatthew Leung      - const: msi4
75*55aeda95SMatthew Leung      - const: msi5
76*55aeda95SMatthew Leung      - const: msi6
77*55aeda95SMatthew Leung      - const: msi7
78*55aeda95SMatthew Leung      - const: global
79*55aeda95SMatthew Leung
80*55aeda95SMatthew Leung  resets:
81*55aeda95SMatthew Leung    items:
82*55aeda95SMatthew Leung      - description: PCIe core reset
83*55aeda95SMatthew Leung      - description: PCIe link down reset
84*55aeda95SMatthew Leung
85*55aeda95SMatthew Leung  reset-names:
86*55aeda95SMatthew Leung    items:
87*55aeda95SMatthew Leung      - const: pci
88*55aeda95SMatthew Leung      - const: link_down
89*55aeda95SMatthew Leung
90*55aeda95SMatthew Leungrequired:
91*55aeda95SMatthew Leung  - power-domains
92*55aeda95SMatthew Leung  - resets
93*55aeda95SMatthew Leung  - reset-names
94*55aeda95SMatthew Leung
95*55aeda95SMatthew LeungallOf:
96*55aeda95SMatthew Leung  - $ref: qcom,pcie-common.yaml#
97*55aeda95SMatthew Leung
98*55aeda95SMatthew LeungunevaluatedProperties: false
99*55aeda95SMatthew Leung
100*55aeda95SMatthew Leungexamples:
101*55aeda95SMatthew Leung  - |
102*55aeda95SMatthew Leung    #include <dt-bindings/gpio/gpio.h>
103*55aeda95SMatthew Leung    #include <dt-bindings/interconnect/qcom,icc.h>
104*55aeda95SMatthew Leung    #include <dt-bindings/interrupt-controller/arm-gic.h>
105*55aeda95SMatthew Leung
106*55aeda95SMatthew Leung    soc {
107*55aeda95SMatthew Leung        #address-cells = <2>;
108*55aeda95SMatthew Leung        #size-cells = <2>;
109*55aeda95SMatthew Leung
110*55aeda95SMatthew Leung        pcie@1c00000 {
111*55aeda95SMatthew Leung            compatible = "qcom,hawi-pcie";
112*55aeda95SMatthew Leung            reg = <0 0x01c00000 0 0x3000>,
113*55aeda95SMatthew Leung                  <0 0x40000000 0 0xf1d>,
114*55aeda95SMatthew Leung                  <0 0x40000f20 0 0xa8>,
115*55aeda95SMatthew Leung                  <0 0x40001000 0 0x1000>,
116*55aeda95SMatthew Leung                  <0 0x40100000 0 0x100000>,
117*55aeda95SMatthew Leung                  <0 0x01c03000 0 0x1000>;
118*55aeda95SMatthew Leung            reg-names = "parf", "dbi", "elbi", "atu", "config", "mhi";
119*55aeda95SMatthew Leung            ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x100000>,
120*55aeda95SMatthew Leung                     <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x3d00000>;
121*55aeda95SMatthew Leung
122*55aeda95SMatthew Leung            bus-range = <0x00 0xff>;
123*55aeda95SMatthew Leung            device_type = "pci";
124*55aeda95SMatthew Leung            linux,pci-domain = <0>;
125*55aeda95SMatthew Leung            num-lanes = <2>;
126*55aeda95SMatthew Leung
127*55aeda95SMatthew Leung            #address-cells = <3>;
128*55aeda95SMatthew Leung            #size-cells = <2>;
129*55aeda95SMatthew Leung
130*55aeda95SMatthew Leung            clocks = <&gcc_pcie_0_aux_clk>,
131*55aeda95SMatthew Leung                     <&gcc_pcie_0_cfg_ahb_clk>,
132*55aeda95SMatthew Leung                     <&gcc_pcie_0_mstr_axi_clk>,
133*55aeda95SMatthew Leung                     <&gcc_pcie_0_slv_axi_clk>,
134*55aeda95SMatthew Leung                     <&gcc_pcie_0_slv_q2a_axi_clk>,
135*55aeda95SMatthew Leung                     <&gcc_aggre_noc_pcie_axi_clk>,
136*55aeda95SMatthew Leung                     <&gcc_cnoc_pcie_sf_axi_clk>;
137*55aeda95SMatthew Leung            clock-names = "aux",
138*55aeda95SMatthew Leung                          "cfg",
139*55aeda95SMatthew Leung                          "bus_master",
140*55aeda95SMatthew Leung                          "bus_slave",
141*55aeda95SMatthew Leung                          "slave_q2a",
142*55aeda95SMatthew Leung                          "noc_aggr",
143*55aeda95SMatthew Leung                          "cnoc_sf_axi";
144*55aeda95SMatthew Leung
145*55aeda95SMatthew Leung            dma-coherent;
146*55aeda95SMatthew Leung
147*55aeda95SMatthew Leung            interrupts = <GIC_ESPI 205 IRQ_TYPE_LEVEL_HIGH>,
148*55aeda95SMatthew Leung                         <GIC_ESPI 206 IRQ_TYPE_LEVEL_HIGH>,
149*55aeda95SMatthew Leung                         <GIC_ESPI 207 IRQ_TYPE_LEVEL_HIGH>,
150*55aeda95SMatthew Leung                         <GIC_ESPI 208 IRQ_TYPE_LEVEL_HIGH>,
151*55aeda95SMatthew Leung                         <GIC_ESPI 209 IRQ_TYPE_LEVEL_HIGH>,
152*55aeda95SMatthew Leung                         <GIC_ESPI 210 IRQ_TYPE_LEVEL_HIGH>,
153*55aeda95SMatthew Leung                         <GIC_ESPI 211 IRQ_TYPE_LEVEL_HIGH>,
154*55aeda95SMatthew Leung                         <GIC_ESPI 212 IRQ_TYPE_LEVEL_HIGH>,
155*55aeda95SMatthew Leung                         <GIC_ESPI 204 IRQ_TYPE_LEVEL_HIGH>;
156*55aeda95SMatthew Leung            interrupt-names = "msi0", "msi1", "msi2", "msi3",
157*55aeda95SMatthew Leung                              "msi4", "msi5", "msi6", "msi7", "global";
158*55aeda95SMatthew Leung            #interrupt-cells = <1>;
159*55aeda95SMatthew Leung            interrupt-map-mask = <0 0 0 0x7>;
160*55aeda95SMatthew Leung            interrupt-map = <0 0 0 1 &intc 0 0 GIC_ESPI 213 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
161*55aeda95SMatthew Leung                            <0 0 0 2 &intc 0 0 GIC_ESPI 214 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
162*55aeda95SMatthew Leung                            <0 0 0 3 &intc 0 0 GIC_ESPI 215 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
163*55aeda95SMatthew Leung                            <0 0 0 4 &intc 0 0 GIC_ESPI 216 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
164*55aeda95SMatthew Leung
165*55aeda95SMatthew Leung            interconnects = <&pcie_anoc_master_pcie_0 QCOM_ICC_TAG_ALWAYS
166*55aeda95SMatthew Leung                             &mc_virt_slave_ebi1 QCOM_ICC_TAG_ALWAYS>,
167*55aeda95SMatthew Leung                            <&gem_noc_master_appss_proc QCOM_ICC_TAG_ACTIVE_ONLY
168*55aeda95SMatthew Leung                             &cnoc_main_slave_pcie_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
169*55aeda95SMatthew Leung            interconnect-names = "pcie-mem", "cpu-pcie";
170*55aeda95SMatthew Leung
171*55aeda95SMatthew Leung            iommu-map = <0x0 &apps_smmu 0x1000 0x1>,
172*55aeda95SMatthew Leung                        <0x100 &apps_smmu 0x1001 0x1>;
173*55aeda95SMatthew Leung
174*55aeda95SMatthew Leung            pinctrl-0 = <&pcie0_default_state>;
175*55aeda95SMatthew Leung            pinctrl-names = "default";
176*55aeda95SMatthew Leung
177*55aeda95SMatthew Leung            power-domains = <&gcc_pcie_0_phy_gdsc>;
178*55aeda95SMatthew Leung
179*55aeda95SMatthew Leung            resets = <&gcc_pcie_0_bcr>,
180*55aeda95SMatthew Leung                     <&gcc_pcie_0_link_down_bcr>;
181*55aeda95SMatthew Leung            reset-names = "pci", "link_down";
182*55aeda95SMatthew Leung
183*55aeda95SMatthew Leung            msi-map = <0x0 &gic_its 0x1000 0x1>,
184*55aeda95SMatthew Leung                      <0x100 &gic_its 0x1001 0x1>;
185*55aeda95SMatthew Leung            msi-map-mask = <0xff00>;
186*55aeda95SMatthew Leung
187*55aeda95SMatthew Leung            pcie@0 {
188*55aeda95SMatthew Leung                device_type = "pci";
189*55aeda95SMatthew Leung                reg = <0x0 0x0 0x0 0x0 0x0>;
190*55aeda95SMatthew Leung                bus-range = <0x01 0xff>;
191*55aeda95SMatthew Leung
192*55aeda95SMatthew Leung                #address-cells = <3>;
193*55aeda95SMatthew Leung                #size-cells = <2>;
194*55aeda95SMatthew Leung                ranges;
195*55aeda95SMatthew Leung
196*55aeda95SMatthew Leung                phys = <&pcie0_phy>;
197*55aeda95SMatthew Leung                wake-gpios = <&tlmm 104 GPIO_ACTIVE_HIGH>;
198*55aeda95SMatthew Leung                reset-gpios = <&tlmm 102 GPIO_ACTIVE_LOW>;
199*55aeda95SMatthew Leung            };
200*55aeda95SMatthew Leung        };
201*55aeda95SMatthew Leung    };
202