Merge tag 'v5.3-rc4' into next
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / pci / qcom,pcie.txt
1 * Qualcomm PCI express root complex
2
3 - compatible:
4         Usage: required
5         Value type: <stringlist>
6         Definition: Value should contain
7                         - "qcom,pcie-ipq8064" for ipq8064
8                         - "qcom,pcie-apq8064" for apq8064
9                         - "qcom,pcie-apq8084" for apq8084
10                         - "qcom,pcie-msm8996" for msm8996 or apq8096
11                         - "qcom,pcie-ipq4019" for ipq4019
12                         - "qcom,pcie-ipq8074" for ipq8074
13                         - "qcom,pcie-qcs404" for qcs404
14
15 - reg:
16         Usage: required
17         Value type: <prop-encoded-array>
18         Definition: Register ranges as listed in the reg-names property
19
20 - reg-names:
21         Usage: required
22         Value type: <stringlist>
23         Definition: Must include the following entries
24                         - "parf"   Qualcomm specific registers
25                         - "dbi"    DesignWare PCIe registers
26                         - "elbi"   External local bus interface registers
27                         - "config" PCIe configuration space
28
29 - device_type:
30         Usage: required
31         Value type: <string>
32         Definition: Should be "pci". As specified in designware-pcie.txt
33
34 - #address-cells:
35         Usage: required
36         Value type: <u32>
37         Definition: Should be 3. As specified in designware-pcie.txt
38
39 - #size-cells:
40         Usage: required
41         Value type: <u32>
42         Definition: Should be 2. As specified in designware-pcie.txt
43
44 - ranges:
45         Usage: required
46         Value type: <prop-encoded-array>
47         Definition: As specified in designware-pcie.txt
48
49 - interrupts:
50         Usage: required
51         Value type: <prop-encoded-array>
52         Definition: MSI interrupt
53
54 - interrupt-names:
55         Usage: required
56         Value type: <stringlist>
57         Definition: Should contain "msi"
58
59 - #interrupt-cells:
60         Usage: required
61         Value type: <u32>
62         Definition: Should be 1. As specified in designware-pcie.txt
63
64 - interrupt-map-mask:
65         Usage: required
66         Value type: <prop-encoded-array>
67         Definition: As specified in designware-pcie.txt
68
69 - interrupt-map:
70         Usage: required
71         Value type: <prop-encoded-array>
72         Definition: As specified in designware-pcie.txt
73
74 - clocks:
75         Usage: required
76         Value type: <prop-encoded-array>
77         Definition: List of phandle and clock specifier pairs as listed
78                     in clock-names property
79
80 - clock-names:
81         Usage: required
82         Value type: <stringlist>
83         Definition: Should contain the following entries
84                         - "iface"       Configuration AHB clock
85
86 - clock-names:
87         Usage: required for ipq/apq8064
88         Value type: <stringlist>
89         Definition: Should contain the following entries
90                         - "core"        Clocks the pcie hw block
91                         - "phy"         Clocks the pcie PHY block
92 - clock-names:
93         Usage: required for apq8084/ipq4019
94         Value type: <stringlist>
95         Definition: Should contain the following entries
96                         - "aux"         Auxiliary (AUX) clock
97                         - "bus_master"  Master AXI clock
98                         - "bus_slave"   Slave AXI clock
99
100 - clock-names:
101         Usage: required for msm8996/apq8096
102         Value type: <stringlist>
103         Definition: Should contain the following entries
104                         - "pipe"        Pipe Clock driving internal logic
105                         - "aux"         Auxiliary (AUX) clock
106                         - "cfg"         Configuration clock
107                         - "bus_master"  Master AXI clock
108                         - "bus_slave"   Slave AXI clock
109
110 - clock-names:
111         Usage: required for ipq8074
112         Value type: <stringlist>
113         Definition: Should contain the following entries
114                         - "iface"       PCIe to SysNOC BIU clock
115                         - "axi_m"       AXI Master clock
116                         - "axi_s"       AXI Slave clock
117                         - "ahb"         AHB clock
118                         - "aux"         Auxiliary clock
119
120 - clock-names:
121         Usage: required for qcs404
122         Value type: <stringlist>
123         Definition: Should contain the following entries
124                         - "iface"       AHB clock
125                         - "aux"         Auxiliary clock
126                         - "master_bus"  AXI Master clock
127                         - "slave_bus"   AXI Slave clock
128
129 - resets:
130         Usage: required
131         Value type: <prop-encoded-array>
132         Definition: List of phandle and reset specifier pairs as listed
133                     in reset-names property
134
135 - reset-names:
136         Usage: required for ipq/apq8064
137         Value type: <stringlist>
138         Definition: Should contain the following entries
139                         - "axi"  AXI reset
140                         - "ahb"  AHB reset
141                         - "por"  POR reset
142                         - "pci"  PCI reset
143                         - "phy"  PHY reset
144
145 - reset-names:
146         Usage: required for apq8084
147         Value type: <stringlist>
148         Definition: Should contain the following entries
149                         - "core" Core reset
150
151 - reset-names:
152         Usage: required for ipq/apq8064
153         Value type: <stringlist>
154         Definition: Should contain the following entries
155                         - "axi_m"               AXI master reset
156                         - "axi_s"               AXI slave reset
157                         - "pipe"                PIPE reset
158                         - "axi_m_vmid"          VMID reset
159                         - "axi_s_xpu"           XPU reset
160                         - "parf"                PARF reset
161                         - "phy"                 PHY reset
162                         - "axi_m_sticky"        AXI sticky reset
163                         - "pipe_sticky"         PIPE sticky reset
164                         - "pwr"                 PWR reset
165                         - "ahb"                 AHB reset
166                         - "phy_ahb"             PHY AHB reset
167
168 - reset-names:
169         Usage: required for ipq8074
170         Value type: <stringlist>
171         Definition: Should contain the following entries
172                         - "pipe"                PIPE reset
173                         - "sleep"               Sleep reset
174                         - "sticky"              Core Sticky reset
175                         - "axi_m"               AXI Master reset
176                         - "axi_s"               AXI Slave reset
177                         - "ahb"                 AHB Reset
178                         - "axi_m_sticky"        AXI Master Sticky reset
179
180 - reset-names:
181         Usage: required for qcs404
182         Value type: <stringlist>
183         Definition: Should contain the following entries
184                         - "axi_m"               AXI Master reset
185                         - "axi_s"               AXI Slave reset
186                         - "axi_m_sticky"        AXI Master Sticky reset
187                         - "pipe_sticky"         PIPE sticky reset
188                         - "pwr"                 PWR reset
189                         - "ahb"                 AHB reset
190
191 - power-domains:
192         Usage: required for apq8084 and msm8996/apq8096
193         Value type: <prop-encoded-array>
194         Definition: A phandle and power domain specifier pair to the
195                     power domain which is responsible for collapsing
196                     and restoring power to the peripheral
197
198 - vdda-supply:
199         Usage: required
200         Value type: <phandle>
201         Definition: A phandle to the core analog power supply
202
203 - vdda_phy-supply:
204         Usage: required for ipq/apq8064
205         Value type: <phandle>
206         Definition: A phandle to the analog power supply for PHY
207
208 - vdda_refclk-supply:
209         Usage: required for ipq/apq8064
210         Value type: <phandle>
211         Definition: A phandle to the analog power supply for IC which generates
212                     reference clock
213 - vddpe-3v3-supply:
214         Usage: optional
215         Value type: <phandle>
216         Definition: A phandle to the PCIe endpoint power supply
217
218 - phys:
219         Usage: required for apq8084 and qcs404
220         Value type: <phandle>
221         Definition: List of phandle(s) as listed in phy-names property
222
223 - phy-names:
224         Usage: required for apq8084 and qcs404
225         Value type: <stringlist>
226         Definition: Should contain "pciephy"
227
228 - <name>-gpios:
229         Usage: optional
230         Value type: <prop-encoded-array>
231         Definition: List of phandle and GPIO specifier pairs. Should contain
232                         - "perst-gpios" PCIe endpoint reset signal line
233                         - "wake-gpios"  PCIe endpoint wake signal line
234
235 * Example for ipq/apq8064
236         pcie@1b500000 {
237                 compatible = "qcom,pcie-apq8064", "qcom,pcie-ipq8064", "snps,dw-pcie";
238                 reg = <0x1b500000 0x1000
239                        0x1b502000 0x80
240                        0x1b600000 0x100
241                        0x0ff00000 0x100000>;
242                 reg-names = "dbi", "elbi", "parf", "config";
243                 device_type = "pci";
244                 linux,pci-domain = <0>;
245                 bus-range = <0x00 0xff>;
246                 num-lanes = <1>;
247                 #address-cells = <3>;
248                 #size-cells = <2>;
249                 ranges = <0x81000000 0 0 0x0fe00000 0 0x00100000   /* I/O */
250                           0x82000000 0 0 0x08000000 0 0x07e00000>; /* memory */
251                 interrupts = <GIC_SPI 238 IRQ_TYPE_NONE>;
252                 interrupt-names = "msi";
253                 #interrupt-cells = <1>;
254                 interrupt-map-mask = <0 0 0 0x7>;
255                 interrupt-map = <0 0 0 1 &intc 0 36 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
256                                 <0 0 0 2 &intc 0 37 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
257                                 <0 0 0 3 &intc 0 38 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
258                                 <0 0 0 4 &intc 0 39 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
259                 clocks = <&gcc PCIE_A_CLK>,
260                          <&gcc PCIE_H_CLK>,
261                          <&gcc PCIE_PHY_CLK>;
262                 clock-names = "core", "iface", "phy";
263                 resets = <&gcc PCIE_ACLK_RESET>,
264                          <&gcc PCIE_HCLK_RESET>,
265                          <&gcc PCIE_POR_RESET>,
266                          <&gcc PCIE_PCI_RESET>,
267                          <&gcc PCIE_PHY_RESET>;
268                 reset-names = "axi", "ahb", "por", "pci", "phy";
269                 pinctrl-0 = <&pcie_pins_default>;
270                 pinctrl-names = "default";
271         };
272
273 * Example for apq8084
274         pcie0@fc520000 {
275                 compatible = "qcom,pcie-apq8084", "snps,dw-pcie";
276                 reg = <0xfc520000 0x2000>,
277                       <0xff000000 0x1000>,
278                       <0xff001000 0x1000>,
279                       <0xff002000 0x2000>;
280                 reg-names = "parf", "dbi", "elbi", "config";
281                 device_type = "pci";
282                 linux,pci-domain = <0>;
283                 bus-range = <0x00 0xff>;
284                 num-lanes = <1>;
285                 #address-cells = <3>;
286                 #size-cells = <2>;
287                 ranges = <0x81000000 0 0          0xff200000 0 0x00100000   /* I/O */
288                           0x82000000 0 0x00300000 0xff300000 0 0x00d00000>; /* memory */
289                 interrupts = <GIC_SPI 243 IRQ_TYPE_NONE>;
290                 interrupt-names = "msi";
291                 #interrupt-cells = <1>;
292                 interrupt-map-mask = <0 0 0 0x7>;
293                 interrupt-map = <0 0 0 1 &intc 0 244 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
294                                 <0 0 0 2 &intc 0 245 IRQ_TYPE_LEVEL_HIGH>, /* int_b */
295                                 <0 0 0 3 &intc 0 247 IRQ_TYPE_LEVEL_HIGH>, /* int_c */
296                                 <0 0 0 4 &intc 0 248 IRQ_TYPE_LEVEL_HIGH>; /* int_d */
297                 clocks = <&gcc GCC_PCIE_0_CFG_AHB_CLK>,
298                          <&gcc GCC_PCIE_0_MSTR_AXI_CLK>,
299                          <&gcc GCC_PCIE_0_SLV_AXI_CLK>,
300                          <&gcc GCC_PCIE_0_AUX_CLK>;
301                 clock-names = "iface", "master_bus", "slave_bus", "aux";
302                 resets = <&gcc GCC_PCIE_0_BCR>;
303                 reset-names = "core";
304                 power-domains = <&gcc PCIE0_GDSC>;
305                 vdda-supply = <&pma8084_l3>;
306                 phys = <&pciephy0>;
307                 phy-names = "pciephy";
308                 perst-gpio = <&tlmm 70 GPIO_ACTIVE_LOW>;
309                 pinctrl-0 = <&pcie0_pins_default>;
310                 pinctrl-names = "default";
311         };