xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-sm8550.yaml (revision 1260ed77798502de9c98020040d2995008de10cc)
1b8d34040SKrzysztof Kozlowski# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2b8d34040SKrzysztof Kozlowski%YAML 1.2
3b8d34040SKrzysztof Kozlowski---
4b8d34040SKrzysztof Kozlowski$id: http://devicetree.org/schemas/pci/qcom,pcie-sm8550.yaml#
5b8d34040SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6b8d34040SKrzysztof Kozlowski
7b8d34040SKrzysztof Kozlowskititle: Qualcomm SM8550 PCI Express Root Complex
8b8d34040SKrzysztof Kozlowski
9b8d34040SKrzysztof Kozlowskimaintainers:
10b8d34040SKrzysztof Kozlowski  - Bjorn Andersson <andersson@kernel.org>
11b8d34040SKrzysztof Kozlowski  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
12b8d34040SKrzysztof Kozlowski
13b8d34040SKrzysztof Kozlowskidescription:
14b8d34040SKrzysztof Kozlowski  Qualcomm SM8550 SoC (and compatible) PCIe root complex controller is based on
15b8d34040SKrzysztof Kozlowski  the Synopsys DesignWare PCIe IP.
16b8d34040SKrzysztof Kozlowski
17b8d34040SKrzysztof Kozlowskiproperties:
18b8d34040SKrzysztof Kozlowski  compatible:
19b8d34040SKrzysztof Kozlowski    oneOf:
20b8d34040SKrzysztof Kozlowski      - const: qcom,pcie-sm8550
21b8d34040SKrzysztof Kozlowski      - items:
22b8d34040SKrzysztof Kozlowski          - enum:
23d38cc57cSDmitry Baryshkov              - qcom,sar2130p-pcie
24b8d34040SKrzysztof Kozlowski              - qcom,pcie-sm8650
25b8d34040SKrzysztof Kozlowski          - const: qcom,pcie-sm8550
26b8d34040SKrzysztof Kozlowski
27b8d34040SKrzysztof Kozlowski  reg:
28b8d34040SKrzysztof Kozlowski    minItems: 5
29b8d34040SKrzysztof Kozlowski    maxItems: 6
30b8d34040SKrzysztof Kozlowski
31b8d34040SKrzysztof Kozlowski  reg-names:
32b8d34040SKrzysztof Kozlowski    minItems: 5
33b8d34040SKrzysztof Kozlowski    items:
34b8d34040SKrzysztof Kozlowski      - const: parf # Qualcomm specific registers
35b8d34040SKrzysztof Kozlowski      - const: dbi # DesignWare PCIe registers
36b8d34040SKrzysztof Kozlowski      - const: elbi # External local bus interface registers
37b8d34040SKrzysztof Kozlowski      - const: atu # ATU address space
38b8d34040SKrzysztof Kozlowski      - const: config # PCIe configuration space
39b8d34040SKrzysztof Kozlowski      - const: mhi # MHI registers
40b8d34040SKrzysztof Kozlowski
41b8d34040SKrzysztof Kozlowski  clocks:
42b8d34040SKrzysztof Kozlowski    minItems: 7
43d38cc57cSDmitry Baryshkov    maxItems: 9
44b8d34040SKrzysztof Kozlowski
45b8d34040SKrzysztof Kozlowski  clock-names:
46b8d34040SKrzysztof Kozlowski    minItems: 7
47b8d34040SKrzysztof Kozlowski    items:
48b8d34040SKrzysztof Kozlowski      - const: aux # Auxiliary clock
49b8d34040SKrzysztof Kozlowski      - const: cfg # Configuration clock
50b8d34040SKrzysztof Kozlowski      - const: bus_master # Master AXI clock
51b8d34040SKrzysztof Kozlowski      - const: bus_slave # Slave AXI clock
52b8d34040SKrzysztof Kozlowski      - const: slave_q2a # Slave Q2A clock
53b8d34040SKrzysztof Kozlowski      - const: ddrss_sf_tbu # PCIe SF TBU clock
54b8d34040SKrzysztof Kozlowski      - const: noc_aggr # Aggre NoC PCIe AXI clock
55b8d34040SKrzysztof Kozlowski      - const: cnoc_sf_axi # Config NoC PCIe1 AXI clock
56d38cc57cSDmitry Baryshkov      - const: qmip_pcie_ahb # QMIP PCIe AHB clock
57b8d34040SKrzysztof Kozlowski
58b8d34040SKrzysztof Kozlowski  interrupts:
59b8d34040SKrzysztof Kozlowski    minItems: 8
60*10e796eeSNeil Armstrong    maxItems: 9
61b8d34040SKrzysztof Kozlowski
62b8d34040SKrzysztof Kozlowski  interrupt-names:
63*10e796eeSNeil Armstrong    minItems: 8
64b8d34040SKrzysztof Kozlowski    items:
65b8d34040SKrzysztof Kozlowski      - const: msi0
66b8d34040SKrzysztof Kozlowski      - const: msi1
67b8d34040SKrzysztof Kozlowski      - const: msi2
68b8d34040SKrzysztof Kozlowski      - const: msi3
69b8d34040SKrzysztof Kozlowski      - const: msi4
70b8d34040SKrzysztof Kozlowski      - const: msi5
71b8d34040SKrzysztof Kozlowski      - const: msi6
72b8d34040SKrzysztof Kozlowski      - const: msi7
73*10e796eeSNeil Armstrong      - const: global
74b8d34040SKrzysztof Kozlowski
75b8d34040SKrzysztof Kozlowski  resets:
76b8d34040SKrzysztof Kozlowski    minItems: 1
77b8d34040SKrzysztof Kozlowski    maxItems: 2
78b8d34040SKrzysztof Kozlowski
79b8d34040SKrzysztof Kozlowski  reset-names:
80b8d34040SKrzysztof Kozlowski    minItems: 1
81b8d34040SKrzysztof Kozlowski    items:
82b8d34040SKrzysztof Kozlowski      - const: pci # PCIe core reset
83b8d34040SKrzysztof Kozlowski      - const: link_down # PCIe link down reset
84b8d34040SKrzysztof Kozlowski
85b8d34040SKrzysztof KozlowskiallOf:
86b8d34040SKrzysztof Kozlowski  - $ref: qcom,pcie-common.yaml#
87b8d34040SKrzysztof Kozlowski
88b8d34040SKrzysztof KozlowskiunevaluatedProperties: false
89b8d34040SKrzysztof Kozlowski
90b8d34040SKrzysztof Kozlowskiexamples:
91b8d34040SKrzysztof Kozlowski  - |
92b8d34040SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,sm8550-gcc.h>
93b8d34040SKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
94b8d34040SKrzysztof Kozlowski    #include <dt-bindings/interconnect/qcom,sm8550-rpmh.h>
95b8d34040SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
96b8d34040SKrzysztof Kozlowski
97b8d34040SKrzysztof Kozlowski    soc {
98b8d34040SKrzysztof Kozlowski        #address-cells = <2>;
99b8d34040SKrzysztof Kozlowski        #size-cells = <2>;
100b8d34040SKrzysztof Kozlowski
101b8d34040SKrzysztof Kozlowski        pcie@1c00000 {
102b8d34040SKrzysztof Kozlowski            compatible = "qcom,pcie-sm8550";
103b8d34040SKrzysztof Kozlowski            reg = <0 0x01c00000 0 0x3000>,
104b8d34040SKrzysztof Kozlowski                  <0 0x60000000 0 0xf1d>,
105b8d34040SKrzysztof Kozlowski                  <0 0x60000f20 0 0xa8>,
106b8d34040SKrzysztof Kozlowski                  <0 0x60001000 0 0x1000>,
107b8d34040SKrzysztof Kozlowski                  <0 0x60100000 0 0x100000>;
108b8d34040SKrzysztof Kozlowski            reg-names = "parf", "dbi", "elbi", "atu", "config";
109b8d34040SKrzysztof Kozlowski            ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x100000>,
110b8d34040SKrzysztof Kozlowski                     <0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0x3d00000>;
111b8d34040SKrzysztof Kozlowski
112b8d34040SKrzysztof Kozlowski            bus-range = <0x00 0xff>;
113b8d34040SKrzysztof Kozlowski            device_type = "pci";
114b8d34040SKrzysztof Kozlowski            linux,pci-domain = <0>;
115b8d34040SKrzysztof Kozlowski            num-lanes = <2>;
116b8d34040SKrzysztof Kozlowski
117b8d34040SKrzysztof Kozlowski            #address-cells = <3>;
118b8d34040SKrzysztof Kozlowski            #size-cells = <2>;
119b8d34040SKrzysztof Kozlowski
120b8d34040SKrzysztof Kozlowski            clocks = <&gcc GCC_PCIE_0_AUX_CLK>,
121b8d34040SKrzysztof Kozlowski                     <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
122b8d34040SKrzysztof Kozlowski                     <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
123b8d34040SKrzysztof Kozlowski                     <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
124b8d34040SKrzysztof Kozlowski                     <&gcc GCC_PCIE_0_SLV_Q2A_AXI_CLK>,
125b8d34040SKrzysztof Kozlowski                     <&gcc GCC_DDRSS_PCIE_SF_QTB_CLK>,
126b8d34040SKrzysztof Kozlowski                     <&gcc GCC_AGGRE_NOC_PCIE_AXI_CLK>;
127b8d34040SKrzysztof Kozlowski            clock-names = "aux",
128b8d34040SKrzysztof Kozlowski                          "cfg",
129b8d34040SKrzysztof Kozlowski                          "bus_master",
130b8d34040SKrzysztof Kozlowski                          "bus_slave",
131b8d34040SKrzysztof Kozlowski                          "slave_q2a",
132b8d34040SKrzysztof Kozlowski                          "ddrss_sf_tbu",
133b8d34040SKrzysztof Kozlowski                          "noc_aggr";
134b8d34040SKrzysztof Kozlowski
135b8d34040SKrzysztof Kozlowski            dma-coherent;
136b8d34040SKrzysztof Kozlowski
137b8d34040SKrzysztof Kozlowski            interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
138b8d34040SKrzysztof Kozlowski                         <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
139b8d34040SKrzysztof Kozlowski                         <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
140b8d34040SKrzysztof Kozlowski                         <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
141b8d34040SKrzysztof Kozlowski                         <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
142b8d34040SKrzysztof Kozlowski                         <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
143b8d34040SKrzysztof Kozlowski                         <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
144*10e796eeSNeil Armstrong                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
145*10e796eeSNeil Armstrong                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
146b8d34040SKrzysztof Kozlowski            interrupt-names = "msi0", "msi1", "msi2", "msi3",
147*10e796eeSNeil Armstrong                              "msi4", "msi5", "msi6", "msi7", "global";
148b8d34040SKrzysztof Kozlowski            #interrupt-cells = <1>;
149b8d34040SKrzysztof Kozlowski            interrupt-map-mask = <0 0 0 0x7>;
150b8d34040SKrzysztof Kozlowski            interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
151b8d34040SKrzysztof Kozlowski                            <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
152b8d34040SKrzysztof Kozlowski                            <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
153b8d34040SKrzysztof Kozlowski                            <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
154b8d34040SKrzysztof Kozlowski
155b8d34040SKrzysztof Kozlowski            interconnects = <&pcie_noc MASTER_PCIE_0 0 &mc_virt SLAVE_EBI1 0>,
156b8d34040SKrzysztof Kozlowski                            <&gem_noc MASTER_APPSS_PROC 0 &cnoc_main SLAVE_PCIE_0 0>;
157b8d34040SKrzysztof Kozlowski            interconnect-names = "pcie-mem", "cpu-pcie";
158b8d34040SKrzysztof Kozlowski
159b8d34040SKrzysztof Kozlowski            iommu-map = <0x0 &apps_smmu 0x1400 0x1>,
160b8d34040SKrzysztof Kozlowski                        <0x100 &apps_smmu 0x1401 0x1>;
161b8d34040SKrzysztof Kozlowski
162b8d34040SKrzysztof Kozlowski            phys = <&pcie0_phy>;
163b8d34040SKrzysztof Kozlowski            phy-names = "pciephy";
164b8d34040SKrzysztof Kozlowski
165b8d34040SKrzysztof Kozlowski            pinctrl-0 = <&pcie0_default_state>;
166b8d34040SKrzysztof Kozlowski            pinctrl-names = "default";
167b8d34040SKrzysztof Kozlowski
168b8d34040SKrzysztof Kozlowski            power-domains = <&gcc PCIE_0_GDSC>;
169b8d34040SKrzysztof Kozlowski
170b8d34040SKrzysztof Kozlowski            resets = <&gcc GCC_PCIE_0_BCR>;
171b8d34040SKrzysztof Kozlowski            reset-names = "pci";
172b8d34040SKrzysztof Kozlowski
173b8d34040SKrzysztof Kozlowski            perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>;
174b8d34040SKrzysztof Kozlowski            wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
175b8d34040SKrzysztof Kozlowski        };
176b8d34040SKrzysztof Kozlowski    };
177