xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-sc8280xp.yaml (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1*c007a550SKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*c007a550SKrzysztof Kozlowski%YAML 1.2
3*c007a550SKrzysztof Kozlowski---
4*c007a550SKrzysztof Kozlowski$id: http://devicetree.org/schemas/pci/qcom,pcie-sc8280xp.yaml#
5*c007a550SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6*c007a550SKrzysztof Kozlowski
7*c007a550SKrzysztof Kozlowskititle: Qualcomm SC8280XP PCI Express Root Complex
8*c007a550SKrzysztof Kozlowski
9*c007a550SKrzysztof Kozlowskimaintainers:
10*c007a550SKrzysztof Kozlowski  - Bjorn Andersson <andersson@kernel.org>
11*c007a550SKrzysztof Kozlowski  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
12*c007a550SKrzysztof Kozlowski
13*c007a550SKrzysztof Kozlowskidescription:
14*c007a550SKrzysztof Kozlowski  Qualcomm SC8280XP SoC PCIe root complex controller is based on the Synopsys
15*c007a550SKrzysztof Kozlowski  DesignWare PCIe IP.
16*c007a550SKrzysztof Kozlowski
17*c007a550SKrzysztof Kozlowskiproperties:
18*c007a550SKrzysztof Kozlowski  compatible:
19*c007a550SKrzysztof Kozlowski    enum:
20*c007a550SKrzysztof Kozlowski      - qcom,pcie-sa8540p
21*c007a550SKrzysztof Kozlowski      - qcom,pcie-sc8280xp
22*c007a550SKrzysztof Kozlowski
23*c007a550SKrzysztof Kozlowski  reg:
24*c007a550SKrzysztof Kozlowski    minItems: 5
25*c007a550SKrzysztof Kozlowski    maxItems: 6
26*c007a550SKrzysztof Kozlowski
27*c007a550SKrzysztof Kozlowski  reg-names:
28*c007a550SKrzysztof Kozlowski    minItems: 5
29*c007a550SKrzysztof Kozlowski    items:
30*c007a550SKrzysztof Kozlowski      - const: parf # Qualcomm specific registers
31*c007a550SKrzysztof Kozlowski      - const: dbi # DesignWare PCIe registers
32*c007a550SKrzysztof Kozlowski      - const: elbi # External local bus interface registers
33*c007a550SKrzysztof Kozlowski      - const: atu # ATU address space
34*c007a550SKrzysztof Kozlowski      - const: config # PCIe configuration space
35*c007a550SKrzysztof Kozlowski      - const: mhi # MHI registers
36*c007a550SKrzysztof Kozlowski
37*c007a550SKrzysztof Kozlowski  clocks:
38*c007a550SKrzysztof Kozlowski    minItems: 8
39*c007a550SKrzysztof Kozlowski    maxItems: 9
40*c007a550SKrzysztof Kozlowski
41*c007a550SKrzysztof Kozlowski  clock-names:
42*c007a550SKrzysztof Kozlowski    minItems: 8
43*c007a550SKrzysztof Kozlowski    items:
44*c007a550SKrzysztof Kozlowski      - const: aux # Auxiliary clock
45*c007a550SKrzysztof Kozlowski      - const: cfg # Configuration clock
46*c007a550SKrzysztof Kozlowski      - const: bus_master # Master AXI clock
47*c007a550SKrzysztof Kozlowski      - const: bus_slave # Slave AXI clock
48*c007a550SKrzysztof Kozlowski      - const: slave_q2a # Slave Q2A clock
49*c007a550SKrzysztof Kozlowski      - const: ddrss_sf_tbu # PCIe SF TBU clock
50*c007a550SKrzysztof Kozlowski      - const: noc_aggr_4 # NoC aggregate 4 clock
51*c007a550SKrzysztof Kozlowski      - const: noc_aggr_south_sf # NoC aggregate South SF clock
52*c007a550SKrzysztof Kozlowski      - const: cnoc_qx # Configuration NoC QX clock
53*c007a550SKrzysztof Kozlowski
54*c007a550SKrzysztof Kozlowski  resets:
55*c007a550SKrzysztof Kozlowski    maxItems: 1
56*c007a550SKrzysztof Kozlowski
57*c007a550SKrzysztof Kozlowski  reset-names:
58*c007a550SKrzysztof Kozlowski    items:
59*c007a550SKrzysztof Kozlowski      - const: pci
60*c007a550SKrzysztof Kozlowski
61*c007a550SKrzysztof Kozlowskirequired:
62*c007a550SKrzysztof Kozlowski  - interconnects
63*c007a550SKrzysztof Kozlowski  - interconnect-names
64*c007a550SKrzysztof Kozlowski
65*c007a550SKrzysztof KozlowskiallOf:
66*c007a550SKrzysztof Kozlowski  - $ref: qcom,pcie-common.yaml#
67*c007a550SKrzysztof Kozlowski  - if:
68*c007a550SKrzysztof Kozlowski      properties:
69*c007a550SKrzysztof Kozlowski        compatible:
70*c007a550SKrzysztof Kozlowski          contains:
71*c007a550SKrzysztof Kozlowski            enum:
72*c007a550SKrzysztof Kozlowski              - qcom,pcie-sc8280xp
73*c007a550SKrzysztof Kozlowski    then:
74*c007a550SKrzysztof Kozlowski      properties:
75*c007a550SKrzysztof Kozlowski        interrupts:
76*c007a550SKrzysztof Kozlowski          minItems: 4
77*c007a550SKrzysztof Kozlowski          maxItems: 4
78*c007a550SKrzysztof Kozlowski        interrupt-names:
79*c007a550SKrzysztof Kozlowski          items:
80*c007a550SKrzysztof Kozlowski            - const: msi0
81*c007a550SKrzysztof Kozlowski            - const: msi1
82*c007a550SKrzysztof Kozlowski            - const: msi2
83*c007a550SKrzysztof Kozlowski            - const: msi3
84*c007a550SKrzysztof Kozlowski    else:
85*c007a550SKrzysztof Kozlowski      properties:
86*c007a550SKrzysztof Kozlowski        interrupts:
87*c007a550SKrzysztof Kozlowski          maxItems: 1
88*c007a550SKrzysztof Kozlowski        interrupt-names:
89*c007a550SKrzysztof Kozlowski          items:
90*c007a550SKrzysztof Kozlowski            - const: msi
91*c007a550SKrzysztof Kozlowski
92*c007a550SKrzysztof KozlowskiunevaluatedProperties: false
93*c007a550SKrzysztof Kozlowski
94*c007a550SKrzysztof Kozlowskiexamples:
95*c007a550SKrzysztof Kozlowski  - |
96*c007a550SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
97*c007a550SKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
98*c007a550SKrzysztof Kozlowski    #include <dt-bindings/interconnect/qcom,sc8280xp.h>
99*c007a550SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
100*c007a550SKrzysztof Kozlowski
101*c007a550SKrzysztof Kozlowski    soc {
102*c007a550SKrzysztof Kozlowski        #address-cells = <2>;
103*c007a550SKrzysztof Kozlowski        #size-cells = <2>;
104*c007a550SKrzysztof Kozlowski
105*c007a550SKrzysztof Kozlowski        pcie@1c20000 {
106*c007a550SKrzysztof Kozlowski            compatible = "qcom,pcie-sc8280xp";
107*c007a550SKrzysztof Kozlowski            reg = <0x0 0x01c20000 0x0 0x3000>,
108*c007a550SKrzysztof Kozlowski                  <0x0 0x3c000000 0x0 0xf1d>,
109*c007a550SKrzysztof Kozlowski                  <0x0 0x3c000f20 0x0 0xa8>,
110*c007a550SKrzysztof Kozlowski                  <0x0 0x3c001000 0x0 0x1000>,
111*c007a550SKrzysztof Kozlowski                  <0x0 0x3c100000 0x0 0x100000>,
112*c007a550SKrzysztof Kozlowski                  <0x0 0x01c23000 0x0 0x1000>;
113*c007a550SKrzysztof Kozlowski            reg-names = "parf", "dbi", "elbi", "atu", "config", "mhi";
114*c007a550SKrzysztof Kozlowski            ranges = <0x01000000 0x0 0x00000000 0x0 0x3c200000 0x0 0x100000>,
115*c007a550SKrzysztof Kozlowski                     <0x02000000 0x0 0x3c300000 0x0 0x3c300000 0x0 0x1d00000>;
116*c007a550SKrzysztof Kozlowski
117*c007a550SKrzysztof Kozlowski            bus-range = <0x00 0xff>;
118*c007a550SKrzysztof Kozlowski            device_type = "pci";
119*c007a550SKrzysztof Kozlowski            linux,pci-domain = <2>;
120*c007a550SKrzysztof Kozlowski            num-lanes = <4>;
121*c007a550SKrzysztof Kozlowski
122*c007a550SKrzysztof Kozlowski            #address-cells = <3>;
123*c007a550SKrzysztof Kozlowski            #size-cells = <2>;
124*c007a550SKrzysztof Kozlowski
125*c007a550SKrzysztof Kozlowski            assigned-clocks = <&gcc GCC_PCIE_2A_AUX_CLK>;
126*c007a550SKrzysztof Kozlowski            assigned-clock-rates = <19200000>;
127*c007a550SKrzysztof Kozlowski            clocks = <&gcc GCC_PCIE_2A_AUX_CLK>,
128*c007a550SKrzysztof Kozlowski                     <&gcc GCC_PCIE_2A_CFG_AHB_CLK>,
129*c007a550SKrzysztof Kozlowski                     <&gcc GCC_PCIE_2A_MSTR_AXI_CLK>,
130*c007a550SKrzysztof Kozlowski                     <&gcc GCC_PCIE_2A_SLV_AXI_CLK>,
131*c007a550SKrzysztof Kozlowski                     <&gcc GCC_PCIE_2A_SLV_Q2A_AXI_CLK>,
132*c007a550SKrzysztof Kozlowski                     <&gcc GCC_DDRSS_PCIE_SF_TBU_CLK>,
133*c007a550SKrzysztof Kozlowski                     <&gcc GCC_AGGRE_NOC_PCIE_4_AXI_CLK>,
134*c007a550SKrzysztof Kozlowski                     <&gcc GCC_AGGRE_NOC_PCIE_SOUTH_SF_AXI_CLK>;
135*c007a550SKrzysztof Kozlowski            clock-names = "aux",
136*c007a550SKrzysztof Kozlowski                          "cfg",
137*c007a550SKrzysztof Kozlowski                          "bus_master",
138*c007a550SKrzysztof Kozlowski                          "bus_slave",
139*c007a550SKrzysztof Kozlowski                          "slave_q2a",
140*c007a550SKrzysztof Kozlowski                          "ddrss_sf_tbu",
141*c007a550SKrzysztof Kozlowski                          "noc_aggr_4",
142*c007a550SKrzysztof Kozlowski                          "noc_aggr_south_sf";
143*c007a550SKrzysztof Kozlowski
144*c007a550SKrzysztof Kozlowski            dma-coherent;
145*c007a550SKrzysztof Kozlowski
146*c007a550SKrzysztof Kozlowski            interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
147*c007a550SKrzysztof Kozlowski                         <GIC_SPI 523 IRQ_TYPE_LEVEL_HIGH>,
148*c007a550SKrzysztof Kozlowski                         <GIC_SPI 524 IRQ_TYPE_LEVEL_HIGH>,
149*c007a550SKrzysztof Kozlowski                         <GIC_SPI 525 IRQ_TYPE_LEVEL_HIGH>;
150*c007a550SKrzysztof Kozlowski            interrupt-names = "msi0", "msi1", "msi2", "msi3";
151*c007a550SKrzysztof Kozlowski            #interrupt-cells = <1>;
152*c007a550SKrzysztof Kozlowski            interrupt-map-mask = <0 0 0 0x7>;
153*c007a550SKrzysztof Kozlowski            interrupt-map = <0 0 0 1 &intc 0 0 GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>,
154*c007a550SKrzysztof Kozlowski                            <0 0 0 2 &intc 0 0 GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>,
155*c007a550SKrzysztof Kozlowski                            <0 0 0 3 &intc 0 0 GIC_SPI 532 IRQ_TYPE_LEVEL_HIGH>,
156*c007a550SKrzysztof Kozlowski                            <0 0 0 4 &intc 0 0 GIC_SPI 533 IRQ_TYPE_LEVEL_HIGH>;
157*c007a550SKrzysztof Kozlowski
158*c007a550SKrzysztof Kozlowski            interconnects = <&aggre2_noc MASTER_PCIE_2A 0 &mc_virt SLAVE_EBI1 0>,
159*c007a550SKrzysztof Kozlowski                            <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_PCIE_2A 0>;
160*c007a550SKrzysztof Kozlowski            interconnect-names = "pcie-mem", "cpu-pcie";
161*c007a550SKrzysztof Kozlowski
162*c007a550SKrzysztof Kozlowski            phys = <&pcie2a_phy>;
163*c007a550SKrzysztof Kozlowski            phy-names = "pciephy";
164*c007a550SKrzysztof Kozlowski
165*c007a550SKrzysztof Kozlowski            pinctrl-0 = <&pcie2a_default>;
166*c007a550SKrzysztof Kozlowski            pinctrl-names = "default";
167*c007a550SKrzysztof Kozlowski
168*c007a550SKrzysztof Kozlowski            power-domains = <&gcc PCIE_2A_GDSC>;
169*c007a550SKrzysztof Kozlowski
170*c007a550SKrzysztof Kozlowski            resets = <&gcc GCC_PCIE_2A_BCR>;
171*c007a550SKrzysztof Kozlowski            reset-names = "pci";
172*c007a550SKrzysztof Kozlowski
173*c007a550SKrzysztof Kozlowski            perst-gpios = <&tlmm 143 GPIO_ACTIVE_LOW>;
174*c007a550SKrzysztof Kozlowski            wake-gpios = <&tlmm 145 GPIO_ACTIVE_LOW>;
175*c007a550SKrzysztof Kozlowski            vddpe-3v3-supply = <&vreg_nvme>;
176*c007a550SKrzysztof Kozlowski        };
177*c007a550SKrzysztof Kozlowski    };
178