xref: /linux/Documentation/devicetree/bindings/pci/qcom,pcie-ep.yaml (revision f325b0786162971390e7b31666b8f37cfc0fa708)
131c9ef00SManivannan Sadhasivam# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
231c9ef00SManivannan Sadhasivam%YAML 1.2
331c9ef00SManivannan Sadhasivam---
431c9ef00SManivannan Sadhasivam$id: http://devicetree.org/schemas/pci/qcom,pcie-ep.yaml#
531c9ef00SManivannan Sadhasivam$schema: http://devicetree.org/meta-schemas/core.yaml#
631c9ef00SManivannan Sadhasivam
784e85359SKrzysztof Kozlowskititle: Qualcomm PCIe Endpoint Controller
831c9ef00SManivannan Sadhasivam
931c9ef00SManivannan Sadhasivammaintainers:
1031c9ef00SManivannan Sadhasivam  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
1131c9ef00SManivannan Sadhasivam
1231c9ef00SManivannan Sadhasivamproperties:
1331c9ef00SManivannan Sadhasivam  compatible:
1415d63a89SKrzysztof Kozlowski    oneOf:
1515d63a89SKrzysztof Kozlowski      - enum:
169d3d5e75SMrinmay Sarkar          - qcom,sa8775p-pcie-ep
17*f325b078SDmitry Baryshkov          - qcom,sar2130p-pcie-ep
1863e445b7SManivannan Sadhasivam          - qcom,sdx55-pcie-ep
1963e445b7SManivannan Sadhasivam          - qcom,sm8450-pcie-ep
2015d63a89SKrzysztof Kozlowski      - items:
2115d63a89SKrzysztof Kozlowski          - const: qcom,sdx65-pcie-ep
2215d63a89SKrzysztof Kozlowski          - const: qcom,sdx55-pcie-ep
2331c9ef00SManivannan Sadhasivam
2431c9ef00SManivannan Sadhasivam  reg:
259d3d5e75SMrinmay Sarkar    minItems: 6
2631c9ef00SManivannan Sadhasivam    items:
2731c9ef00SManivannan Sadhasivam      - description: Qualcomm-specific PARF configuration registers
2831c9ef00SManivannan Sadhasivam      - description: DesignWare PCIe registers
2931c9ef00SManivannan Sadhasivam      - description: External local bus interface registers
3031c9ef00SManivannan Sadhasivam      - description: Address Translation Unit (ATU) registers
3131c9ef00SManivannan Sadhasivam      - description: Memory region used to map remote RC address space
3231c9ef00SManivannan Sadhasivam      - description: BAR memory region
339d3d5e75SMrinmay Sarkar      - description: DMA register space
3431c9ef00SManivannan Sadhasivam
3531c9ef00SManivannan Sadhasivam  reg-names:
369d3d5e75SMrinmay Sarkar    minItems: 6
3731c9ef00SManivannan Sadhasivam    items:
3831c9ef00SManivannan Sadhasivam      - const: parf
3931c9ef00SManivannan Sadhasivam      - const: dbi
4031c9ef00SManivannan Sadhasivam      - const: elbi
4131c9ef00SManivannan Sadhasivam      - const: atu
4231c9ef00SManivannan Sadhasivam      - const: addr_space
4331c9ef00SManivannan Sadhasivam      - const: mmio
449d3d5e75SMrinmay Sarkar      - const: dma
4531c9ef00SManivannan Sadhasivam
4631c9ef00SManivannan Sadhasivam  clocks:
479d3d5e75SMrinmay Sarkar    minItems: 5
48*f325b078SDmitry Baryshkov    maxItems: 9
4931c9ef00SManivannan Sadhasivam
5031c9ef00SManivannan Sadhasivam  clock-names:
519d3d5e75SMrinmay Sarkar    minItems: 5
52*f325b078SDmitry Baryshkov    maxItems: 9
5331c9ef00SManivannan Sadhasivam
5431c9ef00SManivannan Sadhasivam  qcom,perst-regs:
5531c9ef00SManivannan Sadhasivam    description: Reference to a syscon representing TCSR followed by the two
5631c9ef00SManivannan Sadhasivam                 offsets within syscon for Perst enable and Perst separation
5731c9ef00SManivannan Sadhasivam                 enable registers
58f5501623SRob Herring    $ref: /schemas/types.yaml#/definitions/phandle-array
5931c9ef00SManivannan Sadhasivam    items:
60a0754633SKrzysztof Kozlowski      - items:
61a0754633SKrzysztof Kozlowski          - description: Syscon to TCSR system registers
62a0754633SKrzysztof Kozlowski          - description: Perst enable offset
63a0754633SKrzysztof Kozlowski          - description: Perst separation enable offset
6431c9ef00SManivannan Sadhasivam
6531c9ef00SManivannan Sadhasivam  interrupts:
669d3d5e75SMrinmay Sarkar    minItems: 2
6731c9ef00SManivannan Sadhasivam    items:
6831c9ef00SManivannan Sadhasivam      - description: PCIe Global interrupt
6931c9ef00SManivannan Sadhasivam      - description: PCIe Doorbell interrupt
709d3d5e75SMrinmay Sarkar      - description: DMA interrupt
7131c9ef00SManivannan Sadhasivam
7231c9ef00SManivannan Sadhasivam  interrupt-names:
739d3d5e75SMrinmay Sarkar    minItems: 2
7431c9ef00SManivannan Sadhasivam    items:
7531c9ef00SManivannan Sadhasivam      - const: global
7631c9ef00SManivannan Sadhasivam      - const: doorbell
779d3d5e75SMrinmay Sarkar      - const: dma
7831c9ef00SManivannan Sadhasivam
798f5bd6cfSDmitry Baryshkov  iommus:
808f5bd6cfSDmitry Baryshkov    maxItems: 1
818f5bd6cfSDmitry Baryshkov
8231c9ef00SManivannan Sadhasivam  reset-gpios:
8331c9ef00SManivannan Sadhasivam    description: GPIO used as PERST# input signal
8431c9ef00SManivannan Sadhasivam    maxItems: 1
8531c9ef00SManivannan Sadhasivam
8631c9ef00SManivannan Sadhasivam  wake-gpios:
8731c9ef00SManivannan Sadhasivam    description: GPIO used as WAKE# output signal
8831c9ef00SManivannan Sadhasivam    maxItems: 1
8931c9ef00SManivannan Sadhasivam
90e590ad24SKrishna chaitanya chundru  interconnects:
91e590ad24SKrishna chaitanya chundru    maxItems: 2
92e590ad24SKrishna chaitanya chundru
93e590ad24SKrishna chaitanya chundru  interconnect-names:
94e590ad24SKrishna chaitanya chundru    items:
95e590ad24SKrishna chaitanya chundru      - const: pcie-mem
96e590ad24SKrishna chaitanya chundru      - const: cpu-pcie
97e590ad24SKrishna chaitanya chundru
98a22d3039SDmitry Baryshkov  dma-coherent: true
99a22d3039SDmitry Baryshkov
10031c9ef00SManivannan Sadhasivam  resets:
10131c9ef00SManivannan Sadhasivam    maxItems: 1
10231c9ef00SManivannan Sadhasivam
10331c9ef00SManivannan Sadhasivam  reset-names:
10431c9ef00SManivannan Sadhasivam    const: core
10531c9ef00SManivannan Sadhasivam
10631c9ef00SManivannan Sadhasivam  power-domains:
10731c9ef00SManivannan Sadhasivam    maxItems: 1
10831c9ef00SManivannan Sadhasivam
10931c9ef00SManivannan Sadhasivam  phys:
11031c9ef00SManivannan Sadhasivam    maxItems: 1
11131c9ef00SManivannan Sadhasivam
11231c9ef00SManivannan Sadhasivam  phy-names:
11331c9ef00SManivannan Sadhasivam    const: pciephy
11431c9ef00SManivannan Sadhasivam
11531c9ef00SManivannan Sadhasivam  num-lanes:
11631c9ef00SManivannan Sadhasivam    default: 2
11731c9ef00SManivannan Sadhasivam
11831c9ef00SManivannan Sadhasivamrequired:
11931c9ef00SManivannan Sadhasivam  - compatible
12031c9ef00SManivannan Sadhasivam  - reg
12131c9ef00SManivannan Sadhasivam  - reg-names
12231c9ef00SManivannan Sadhasivam  - clocks
12331c9ef00SManivannan Sadhasivam  - clock-names
12431c9ef00SManivannan Sadhasivam  - interrupts
12531c9ef00SManivannan Sadhasivam  - interrupt-names
12631c9ef00SManivannan Sadhasivam  - reset-gpios
127e590ad24SKrishna chaitanya chundru  - interconnects
128e590ad24SKrishna chaitanya chundru  - interconnect-names
12931c9ef00SManivannan Sadhasivam  - resets
13031c9ef00SManivannan Sadhasivam  - reset-names
13131c9ef00SManivannan Sadhasivam  - power-domains
13231c9ef00SManivannan Sadhasivam
1338dffa879SManivannan SadhasivamallOf:
1348dffa879SManivannan Sadhasivam  - $ref: pci-ep.yaml#
135f9d7bbd0SDmitry Baryshkov
1368dffa879SManivannan Sadhasivam  - if:
1378dffa879SManivannan Sadhasivam      properties:
1388dffa879SManivannan Sadhasivam        compatible:
1398dffa879SManivannan Sadhasivam          contains:
1408dffa879SManivannan Sadhasivam            enum:
141*f325b078SDmitry Baryshkov              - qcom,sar2130p-pcie-ep
142*f325b078SDmitry Baryshkov    then:
143*f325b078SDmitry Baryshkov      properties:
144*f325b078SDmitry Baryshkov        clocks:
145*f325b078SDmitry Baryshkov          items:
146*f325b078SDmitry Baryshkov            - description: PCIe Auxiliary clock
147*f325b078SDmitry Baryshkov            - description: PCIe CFG AHB clock
148*f325b078SDmitry Baryshkov            - description: PCIe Master AXI clock
149*f325b078SDmitry Baryshkov            - description: PCIe Slave AXI clock
150*f325b078SDmitry Baryshkov            - description: PCIe Slave Q2A AXI clock
151*f325b078SDmitry Baryshkov            - description: PCIe DDRSS SF TBU clock
152*f325b078SDmitry Baryshkov            - description: PCIe AGGRE NOC AXI clock
153*f325b078SDmitry Baryshkov            - description: PCIe CFG NOC AXI clock
154*f325b078SDmitry Baryshkov            - description: PCIe QMIP AHB clock
155*f325b078SDmitry Baryshkov        clock-names:
156*f325b078SDmitry Baryshkov          items:
157*f325b078SDmitry Baryshkov            - const: aux
158*f325b078SDmitry Baryshkov            - const: cfg
159*f325b078SDmitry Baryshkov            - const: bus_master
160*f325b078SDmitry Baryshkov            - const: bus_slave
161*f325b078SDmitry Baryshkov            - const: slave_q2a
162*f325b078SDmitry Baryshkov            - const: ddrss_sf_tbu
163*f325b078SDmitry Baryshkov            - const: aggre_noc_axi
164*f325b078SDmitry Baryshkov            - const: cnoc_sf_axi
165*f325b078SDmitry Baryshkov            - const: qmip_pcie_ahb
166*f325b078SDmitry Baryshkov
167*f325b078SDmitry Baryshkov  - if:
168*f325b078SDmitry Baryshkov      properties:
169*f325b078SDmitry Baryshkov        compatible:
170*f325b078SDmitry Baryshkov          contains:
171*f325b078SDmitry Baryshkov            enum:
1728dffa879SManivannan Sadhasivam              - qcom,sdx55-pcie-ep
1738dffa879SManivannan Sadhasivam    then:
1748dffa879SManivannan Sadhasivam      properties:
1759d3d5e75SMrinmay Sarkar        reg:
176f9d7bbd0SDmitry Baryshkov          minItems: 6
1779d3d5e75SMrinmay Sarkar          maxItems: 6
1789d3d5e75SMrinmay Sarkar        reg-names:
179f9d7bbd0SDmitry Baryshkov          minItems: 6
1809d3d5e75SMrinmay Sarkar          maxItems: 6
181f9d7bbd0SDmitry Baryshkov        interrupts:
182f9d7bbd0SDmitry Baryshkov          minItems: 2
183f9d7bbd0SDmitry Baryshkov          maxItems: 2
184f9d7bbd0SDmitry Baryshkov        interrupt-names:
185f9d7bbd0SDmitry Baryshkov          minItems: 2
186f9d7bbd0SDmitry Baryshkov          maxItems: 2
187f9d7bbd0SDmitry Baryshkov        iommus: false
188f9d7bbd0SDmitry Baryshkov    else:
189f9d7bbd0SDmitry Baryshkov      properties:
190f9d7bbd0SDmitry Baryshkov        reg:
191f9d7bbd0SDmitry Baryshkov          minItems: 7
192f9d7bbd0SDmitry Baryshkov          maxItems: 7
193f9d7bbd0SDmitry Baryshkov        reg-names:
194f9d7bbd0SDmitry Baryshkov          minItems: 7
195f9d7bbd0SDmitry Baryshkov          maxItems: 7
196f9d7bbd0SDmitry Baryshkov        interrupts:
197f9d7bbd0SDmitry Baryshkov          minItems: 3
198f9d7bbd0SDmitry Baryshkov          maxItems: 3
199f9d7bbd0SDmitry Baryshkov        interrupt-names:
200f9d7bbd0SDmitry Baryshkov          minItems: 3
201f9d7bbd0SDmitry Baryshkov          maxItems: 3
202f9d7bbd0SDmitry Baryshkov      required:
203f9d7bbd0SDmitry Baryshkov        - iommus
204f9d7bbd0SDmitry Baryshkov
205f9d7bbd0SDmitry Baryshkov  - if:
206f9d7bbd0SDmitry Baryshkov      properties:
207f9d7bbd0SDmitry Baryshkov        compatible:
208f9d7bbd0SDmitry Baryshkov          contains:
209f9d7bbd0SDmitry Baryshkov            enum:
210f9d7bbd0SDmitry Baryshkov              - qcom,sdx55-pcie-ep
211f9d7bbd0SDmitry Baryshkov    then:
212f9d7bbd0SDmitry Baryshkov      properties:
2138dffa879SManivannan Sadhasivam        clocks:
2148dffa879SManivannan Sadhasivam          items:
2158dffa879SManivannan Sadhasivam            - description: PCIe Auxiliary clock
2168dffa879SManivannan Sadhasivam            - description: PCIe CFG AHB clock
2178dffa879SManivannan Sadhasivam            - description: PCIe Master AXI clock
2188dffa879SManivannan Sadhasivam            - description: PCIe Slave AXI clock
2198dffa879SManivannan Sadhasivam            - description: PCIe Slave Q2A AXI clock
2208dffa879SManivannan Sadhasivam            - description: PCIe Sleep clock
2218dffa879SManivannan Sadhasivam            - description: PCIe Reference clock
2228dffa879SManivannan Sadhasivam        clock-names:
2238dffa879SManivannan Sadhasivam          items:
2248dffa879SManivannan Sadhasivam            - const: aux
2258dffa879SManivannan Sadhasivam            - const: cfg
2268dffa879SManivannan Sadhasivam            - const: bus_master
2278dffa879SManivannan Sadhasivam            - const: bus_slave
2288dffa879SManivannan Sadhasivam            - const: slave_q2a
2298dffa879SManivannan Sadhasivam            - const: sleep
2308dffa879SManivannan Sadhasivam            - const: ref
2318dffa879SManivannan Sadhasivam
23263e445b7SManivannan Sadhasivam  - if:
23363e445b7SManivannan Sadhasivam      properties:
23463e445b7SManivannan Sadhasivam        compatible:
23563e445b7SManivannan Sadhasivam          contains:
23663e445b7SManivannan Sadhasivam            enum:
23763e445b7SManivannan Sadhasivam              - qcom,sm8450-pcie-ep
23863e445b7SManivannan Sadhasivam    then:
23963e445b7SManivannan Sadhasivam      properties:
24063e445b7SManivannan Sadhasivam        clocks:
24163e445b7SManivannan Sadhasivam          items:
24263e445b7SManivannan Sadhasivam            - description: PCIe Auxiliary clock
24363e445b7SManivannan Sadhasivam            - description: PCIe CFG AHB clock
24463e445b7SManivannan Sadhasivam            - description: PCIe Master AXI clock
24563e445b7SManivannan Sadhasivam            - description: PCIe Slave AXI clock
24663e445b7SManivannan Sadhasivam            - description: PCIe Slave Q2A AXI clock
24763e445b7SManivannan Sadhasivam            - description: PCIe Reference clock
24863e445b7SManivannan Sadhasivam            - description: PCIe DDRSS SF TBU clock
24963e445b7SManivannan Sadhasivam            - description: PCIe AGGRE NOC AXI clock
25063e445b7SManivannan Sadhasivam        clock-names:
25163e445b7SManivannan Sadhasivam          items:
25263e445b7SManivannan Sadhasivam            - const: aux
25363e445b7SManivannan Sadhasivam            - const: cfg
25463e445b7SManivannan Sadhasivam            - const: bus_master
25563e445b7SManivannan Sadhasivam            - const: bus_slave
25663e445b7SManivannan Sadhasivam            - const: slave_q2a
25763e445b7SManivannan Sadhasivam            - const: ref
25863e445b7SManivannan Sadhasivam            - const: ddrss_sf_tbu
25963e445b7SManivannan Sadhasivam            - const: aggre_noc_axi
2609d3d5e75SMrinmay Sarkar
2619d3d5e75SMrinmay Sarkar  - if:
2629d3d5e75SMrinmay Sarkar      properties:
2639d3d5e75SMrinmay Sarkar        compatible:
2649d3d5e75SMrinmay Sarkar          contains:
2659d3d5e75SMrinmay Sarkar            enum:
2669d3d5e75SMrinmay Sarkar              - qcom,sa8775p-pcie-ep
2679d3d5e75SMrinmay Sarkar    then:
2689d3d5e75SMrinmay Sarkar      properties:
2699d3d5e75SMrinmay Sarkar        clocks:
2709d3d5e75SMrinmay Sarkar          items:
2719d3d5e75SMrinmay Sarkar            - description: PCIe Auxiliary clock
2729d3d5e75SMrinmay Sarkar            - description: PCIe CFG AHB clock
2739d3d5e75SMrinmay Sarkar            - description: PCIe Master AXI clock
2749d3d5e75SMrinmay Sarkar            - description: PCIe Slave AXI clock
2759d3d5e75SMrinmay Sarkar            - description: PCIe Slave Q2A AXI clock
2769d3d5e75SMrinmay Sarkar        clock-names:
2779d3d5e75SMrinmay Sarkar          items:
2789d3d5e75SMrinmay Sarkar            - const: aux
2799d3d5e75SMrinmay Sarkar            - const: cfg
2809d3d5e75SMrinmay Sarkar            - const: bus_master
2819d3d5e75SMrinmay Sarkar            - const: bus_slave
2829d3d5e75SMrinmay Sarkar            - const: slave_q2a
28363e445b7SManivannan Sadhasivam
28431c9ef00SManivannan SadhasivamunevaluatedProperties: false
28531c9ef00SManivannan Sadhasivam
28631c9ef00SManivannan Sadhasivamexamples:
28731c9ef00SManivannan Sadhasivam  - |
28831c9ef00SManivannan Sadhasivam    #include <dt-bindings/clock/qcom,gcc-sdx55.h>
28931c9ef00SManivannan Sadhasivam    #include <dt-bindings/gpio/gpio.h>
290e590ad24SKrishna chaitanya chundru    #include <dt-bindings/interconnect/qcom,sdx55.h>
29131c9ef00SManivannan Sadhasivam    #include <dt-bindings/interrupt-controller/arm-gic.h>
292e590ad24SKrishna chaitanya chundru
293e12b6893SManivannan Sadhasivam    pcie_ep: pcie-ep@1c00000 {
29431c9ef00SManivannan Sadhasivam        compatible = "qcom,sdx55-pcie-ep";
29531c9ef00SManivannan Sadhasivam        reg = <0x01c00000 0x3000>,
29631c9ef00SManivannan Sadhasivam              <0x40000000 0xf1d>,
29731c9ef00SManivannan Sadhasivam              <0x40000f20 0xc8>,
29831c9ef00SManivannan Sadhasivam              <0x40001000 0x1000>,
29931c9ef00SManivannan Sadhasivam              <0x40002000 0x1000>,
30031c9ef00SManivannan Sadhasivam              <0x01c03000 0x3000>;
30131c9ef00SManivannan Sadhasivam        reg-names = "parf", "dbi", "elbi", "atu", "addr_space",
30231c9ef00SManivannan Sadhasivam                    "mmio";
30331c9ef00SManivannan Sadhasivam
30431c9ef00SManivannan Sadhasivam        clocks = <&gcc GCC_PCIE_AUX_CLK>,
30531c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_CFG_AHB_CLK>,
30631c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_MSTR_AXI_CLK>,
30731c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_SLV_AXI_CLK>,
30831c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_SLV_Q2A_AXI_CLK>,
30931c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_SLEEP_CLK>,
31031c9ef00SManivannan Sadhasivam             <&gcc GCC_PCIE_0_CLKREF_CLK>;
31131c9ef00SManivannan Sadhasivam        clock-names = "aux", "cfg", "bus_master", "bus_slave",
31231c9ef00SManivannan Sadhasivam                      "slave_q2a", "sleep", "ref";
31331c9ef00SManivannan Sadhasivam
31431c9ef00SManivannan Sadhasivam        qcom,perst-regs = <&tcsr 0xb258 0xb270>;
31531c9ef00SManivannan Sadhasivam
31631c9ef00SManivannan Sadhasivam        interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
31731c9ef00SManivannan Sadhasivam                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
31831c9ef00SManivannan Sadhasivam        interrupt-names = "global", "doorbell";
319e590ad24SKrishna chaitanya chundru        interconnects = <&system_noc MASTER_PCIE &mc_virt SLAVE_EBI_CH0>,
320e590ad24SKrishna chaitanya chundru                        <&mem_noc MASTER_AMPSS_M0 &system_noc SLAVE_PCIE_0>;
321e590ad24SKrishna chaitanya chundru        interconnect-names = "pcie-mem", "cpu-pcie";
32231c9ef00SManivannan Sadhasivam        reset-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
32331c9ef00SManivannan Sadhasivam        wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>;
32431c9ef00SManivannan Sadhasivam        resets = <&gcc GCC_PCIE_BCR>;
32531c9ef00SManivannan Sadhasivam        reset-names = "core";
32631c9ef00SManivannan Sadhasivam        power-domains = <&gcc PCIE_GDSC>;
32731c9ef00SManivannan Sadhasivam        phys = <&pcie0_lane>;
32831c9ef00SManivannan Sadhasivam        phy-names = "pciephy";
32931c9ef00SManivannan Sadhasivam        max-link-speed = <3>;
33031c9ef00SManivannan Sadhasivam        num-lanes = <2>;
331ada94d00SManivannan Sadhasivam        linux,pci-domain = <0>;
33231c9ef00SManivannan Sadhasivam    };
333