1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pci/qcom,pcie-ep.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm PCIe Endpoint Controller
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12properties:
13  compatible:
14    enum:
15      - qcom,sdx55-pcie-ep
16      - qcom,sdx65-pcie-ep
17      - qcom,sm8450-pcie-ep
18
19  reg:
20    items:
21      - description: Qualcomm-specific PARF configuration registers
22      - description: DesignWare PCIe registers
23      - description: External local bus interface registers
24      - description: Address Translation Unit (ATU) registers
25      - description: Memory region used to map remote RC address space
26      - description: BAR memory region
27
28  reg-names:
29    items:
30      - const: parf
31      - const: dbi
32      - const: elbi
33      - const: atu
34      - const: addr_space
35      - const: mmio
36
37  clocks:
38    minItems: 7
39    maxItems: 8
40
41  clock-names:
42    minItems: 7
43    maxItems: 8
44
45  qcom,perst-regs:
46    description: Reference to a syscon representing TCSR followed by the two
47                 offsets within syscon for Perst enable and Perst separation
48                 enable registers
49    $ref: /schemas/types.yaml#/definitions/phandle-array
50    items:
51      - items:
52          - description: Syscon to TCSR system registers
53          - description: Perst enable offset
54          - description: Perst separation enable offset
55
56  interrupts:
57    items:
58      - description: PCIe Global interrupt
59      - description: PCIe Doorbell interrupt
60
61  interrupt-names:
62    items:
63      - const: global
64      - const: doorbell
65
66  reset-gpios:
67    description: GPIO used as PERST# input signal
68    maxItems: 1
69
70  wake-gpios:
71    description: GPIO used as WAKE# output signal
72    maxItems: 1
73
74  resets:
75    maxItems: 1
76
77  reset-names:
78    const: core
79
80  power-domains:
81    maxItems: 1
82
83  phys:
84    maxItems: 1
85
86  phy-names:
87    const: pciephy
88
89  num-lanes:
90    default: 2
91
92required:
93  - compatible
94  - reg
95  - reg-names
96  - clocks
97  - clock-names
98  - interrupts
99  - interrupt-names
100  - reset-gpios
101  - resets
102  - reset-names
103  - power-domains
104
105allOf:
106  - $ref: pci-ep.yaml#
107  - if:
108      properties:
109        compatible:
110          contains:
111            enum:
112              - qcom,sdx55-pcie-ep
113              - qcom,sdx65-pcie-ep
114    then:
115      properties:
116        clocks:
117          items:
118            - description: PCIe Auxiliary clock
119            - description: PCIe CFG AHB clock
120            - description: PCIe Master AXI clock
121            - description: PCIe Slave AXI clock
122            - description: PCIe Slave Q2A AXI clock
123            - description: PCIe Sleep clock
124            - description: PCIe Reference clock
125        clock-names:
126          items:
127            - const: aux
128            - const: cfg
129            - const: bus_master
130            - const: bus_slave
131            - const: slave_q2a
132            - const: sleep
133            - const: ref
134
135  - if:
136      properties:
137        compatible:
138          contains:
139            enum:
140              - qcom,sm8450-pcie-ep
141    then:
142      properties:
143        clocks:
144          items:
145            - description: PCIe Auxiliary clock
146            - description: PCIe CFG AHB clock
147            - description: PCIe Master AXI clock
148            - description: PCIe Slave AXI clock
149            - description: PCIe Slave Q2A AXI clock
150            - description: PCIe Reference clock
151            - description: PCIe DDRSS SF TBU clock
152            - description: PCIe AGGRE NOC AXI clock
153        clock-names:
154          items:
155            - const: aux
156            - const: cfg
157            - const: bus_master
158            - const: bus_slave
159            - const: slave_q2a
160            - const: ref
161            - const: ddrss_sf_tbu
162            - const: aggre_noc_axi
163
164unevaluatedProperties: false
165
166examples:
167  - |
168    #include <dt-bindings/clock/qcom,gcc-sdx55.h>
169    #include <dt-bindings/gpio/gpio.h>
170    #include <dt-bindings/interrupt-controller/arm-gic.h>
171    pcie_ep: pcie-ep@1c00000 {
172        compatible = "qcom,sdx55-pcie-ep";
173        reg = <0x01c00000 0x3000>,
174              <0x40000000 0xf1d>,
175              <0x40000f20 0xc8>,
176              <0x40001000 0x1000>,
177              <0x40002000 0x1000>,
178              <0x01c03000 0x3000>;
179        reg-names = "parf", "dbi", "elbi", "atu", "addr_space",
180                    "mmio";
181
182        clocks = <&gcc GCC_PCIE_AUX_CLK>,
183             <&gcc GCC_PCIE_CFG_AHB_CLK>,
184             <&gcc GCC_PCIE_MSTR_AXI_CLK>,
185             <&gcc GCC_PCIE_SLV_AXI_CLK>,
186             <&gcc GCC_PCIE_SLV_Q2A_AXI_CLK>,
187             <&gcc GCC_PCIE_SLEEP_CLK>,
188             <&gcc GCC_PCIE_0_CLKREF_CLK>;
189        clock-names = "aux", "cfg", "bus_master", "bus_slave",
190                      "slave_q2a", "sleep", "ref";
191
192        qcom,perst-regs = <&tcsr 0xb258 0xb270>;
193
194        interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
195                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
196        interrupt-names = "global", "doorbell";
197        reset-gpios = <&tlmm 57 GPIO_ACTIVE_LOW>;
198        wake-gpios = <&tlmm 53 GPIO_ACTIVE_LOW>;
199        resets = <&gcc GCC_PCIE_BCR>;
200        reset-names = "core";
201        power-domains = <&gcc PCIE_GDSC>;
202        phys = <&pcie0_lane>;
203        phy-names = "pciephy";
204        max-link-speed = <3>;
205        num-lanes = <2>;
206    };
207