1 # SPDX-License-Identifier: GPL-2.0
2 
3 menu "DesignWare-based PCIe controllers"
4 	depends on PCI
5 
6 config PCIE_DW
7 	bool
8 
9 config PCIE_DW_HOST
10 	bool
11 	select PCIE_DW
12 
13 config PCIE_DW_EP
14 	bool
15 	select PCIE_DW
16 
17 config PCIE_AL
18 	bool "Amazon Annapurna Labs PCIe controller"
19 	depends on OF && (ARM64 || COMPILE_TEST)
20 	depends on PCI_MSI
21 	select PCIE_DW_HOST
22 	select PCI_ECAM
23 	help
24 	  Say Y here to enable support of the Amazon's Annapurna Labs PCIe
25 	  controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
26 	  core plus Annapurna Labs proprietary hardware wrappers. This is
27 	  required only for DT-based platforms. ACPI platforms with the
28 	  Annapurna Labs PCIe controller don't need to enable this.
29 
30 config PCI_MESON
31 	tristate "Amlogic Meson PCIe controller"
32 	default m if ARCH_MESON
33 	depends on PCI_MSI
34 	select PCIE_DW_HOST
35 	help
36 	  Say Y here if you want to enable PCI controller support on Amlogic
37 	  SoCs. The PCI controller on Amlogic is based on DesignWare hardware
38 	  and therefore the driver re-uses the DesignWare core functions to
39 	  implement the driver.
40 
41 config PCIE_ARTPEC6
42 	bool
43 
44 config PCIE_ARTPEC6_HOST
45 	bool "Axis ARTPEC-6 PCIe controller (host mode)"
46 	depends on MACH_ARTPEC6 || COMPILE_TEST
47 	depends on PCI_MSI
48 	select PCIE_DW_HOST
49 	select PCIE_ARTPEC6
50 	help
51 	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
52 	  host mode. This uses the DesignWare core.
53 
54 config PCIE_ARTPEC6_EP
55 	bool "Axis ARTPEC-6 PCIe controller (endpoint mode)"
56 	depends on MACH_ARTPEC6 || COMPILE_TEST
57 	depends on PCI_ENDPOINT
58 	select PCIE_DW_EP
59 	select PCIE_ARTPEC6
60 	help
61 	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
62 	  endpoint mode. This uses the DesignWare core.
63 
64 config PCIE_BT1
65 	tristate "Baikal-T1 PCIe controller"
66 	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
67 	depends on PCI_MSI
68 	select PCIE_DW_HOST
69 	help
70 	  Enables support for the PCIe controller in the Baikal-T1 SoC to work
71 	  in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core.
72 
73 config PCI_IMX6
74 	bool
75 
76 config PCI_IMX6_HOST
77 	bool "Freescale i.MX6/7/8 PCIe controller (host mode)"
78 	depends on ARCH_MXC || COMPILE_TEST
79 	depends on PCI_MSI
80 	select PCIE_DW_HOST
81 	select PCI_IMX6
82 	help
83 	  Enables support for the PCIe controller in the i.MX SoCs to
84 	  work in Root Complex mode. The PCI controller on i.MX is based
85 	  on DesignWare hardware and therefore the driver re-uses the
86 	  DesignWare core functions to implement the driver.
87 
88 config PCI_IMX6_EP
89 	bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)"
90 	depends on ARCH_MXC || COMPILE_TEST
91 	depends on PCI_ENDPOINT
92 	select PCIE_DW_EP
93 	select PCI_IMX6
94 	help
95 	  Enables support for the PCIe controller in the i.MX SoCs to
96 	  work in endpoint mode. The PCI controller on i.MX is based
97 	  on DesignWare hardware and therefore the driver re-uses the
98 	  DesignWare core functions to implement the driver.
99 
100 config PCI_LAYERSCAPE
101 	bool "Freescale Layerscape PCIe controller (host mode)"
102 	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
103 	depends on PCI_MSI
104 	select PCIE_DW_HOST
105 	select MFD_SYSCON
106 	help
107 	  Say Y here if you want to enable PCIe controller support on Layerscape
108 	  SoCs to work in Host mode.
109 	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
110 	  determines which PCIe controller works in EP mode and which PCIe
111 	  controller works in RC mode.
112 
113 config PCI_LAYERSCAPE_EP
114 	bool "Freescale Layerscape PCIe controller (endpoint mode)"
115 	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
116 	depends on PCI_ENDPOINT
117 	select PCIE_DW_EP
118 	help
119 	  Say Y here if you want to enable PCIe controller support on Layerscape
120 	  SoCs to work in Endpoint mode.
121 	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
122 	  determines which PCIe controller works in EP mode and which PCIe
123 	  controller works in RC mode.
124 
125 config PCI_HISI
126 	depends on OF && (ARM64 || COMPILE_TEST)
127 	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller"
128 	depends on PCI_MSI
129 	select PCIE_DW_HOST
130 	select PCI_HOST_COMMON
131 	help
132 	  Say Y here if you want PCIe controller support on HiSilicon
133 	  Hip05 and Hip06 SoCs
134 
135 config PCIE_KIRIN
136 	depends on OF && (ARM64 || COMPILE_TEST)
137 	tristate "HiSilicon Kirin PCIe controller"
138 	depends on PCI_MSI
139 	select PCIE_DW_HOST
140 	select REGMAP_MMIO
141 	help
142 	  Say Y here if you want PCIe controller support
143 	  on HiSilicon Kirin series SoCs.
144 
145 config PCIE_HISI_STB
146 	bool "HiSilicon STB PCIe controller"
147 	depends on ARCH_HISI || COMPILE_TEST
148 	depends on PCI_MSI
149 	select PCIE_DW_HOST
150 	help
151 	  Say Y here if you want PCIe controller support on HiSilicon STB SoCs
152 
153 config PCIE_INTEL_GW
154 	bool "Intel Gateway PCIe controller "
155 	depends on OF && (X86 || COMPILE_TEST)
156 	depends on PCI_MSI
157 	select PCIE_DW_HOST
158 	help
159 	  Say 'Y' here to enable PCIe Host controller support on Intel
160 	  Gateway SoCs.
161 	  The PCIe controller uses the DesignWare core plus Intel-specific
162 	  hardware wrappers.
163 
164 config PCIE_KEEMBAY
165 	bool
166 
167 config PCIE_KEEMBAY_HOST
168 	bool "Intel Keem Bay PCIe controller (host mode)"
169 	depends on ARCH_KEEMBAY || COMPILE_TEST
170 	depends on PCI_MSI
171 	select PCIE_DW_HOST
172 	select PCIE_KEEMBAY
173 	help
174 	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
175 	  to work in host mode.
176 	  The PCIe controller is based on DesignWare Hardware and uses
177 	  DesignWare core functions.
178 
179 config PCIE_KEEMBAY_EP
180 	bool "Intel Keem Bay PCIe controller (endpoint mode)"
181 	depends on ARCH_KEEMBAY || COMPILE_TEST
182 	depends on PCI_MSI
183 	depends on PCI_ENDPOINT
184 	select PCIE_DW_EP
185 	select PCIE_KEEMBAY
186 	help
187 	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
188 	  to work in endpoint mode.
189 	  The PCIe controller is based on DesignWare Hardware and uses
190 	  DesignWare core functions.
191 
192 config PCIE_ARMADA_8K
193 	bool "Marvell Armada-8K PCIe controller"
194 	depends on ARCH_MVEBU || COMPILE_TEST
195 	depends on PCI_MSI
196 	select PCIE_DW_HOST
197 	help
198 	  Say Y here if you want to enable PCIe controller support on
199 	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
200 	  DesignWare hardware and therefore the driver re-uses the
201 	  DesignWare core functions to implement the driver.
202 
203 config PCIE_TEGRA194
204 	tristate
205 
206 config PCIE_TEGRA194_HOST
207 	tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)"
208 	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
209 	depends on PCI_MSI
210 	select PCIE_DW_HOST
211 	select PHY_TEGRA194_P2U
212 	select PCIE_TEGRA194
213 	help
214 	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
215 	  work in host mode. There are two instances of PCIe controllers in
216 	  Tegra194. This controller can work either as EP or RC. In order to
217 	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
218 	  in order to enable device-specific features PCIE_TEGRA194_EP must be
219 	  selected. This uses the DesignWare core.
220 
221 config PCIE_TEGRA194_EP
222 	tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)"
223 	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
224 	depends on PCI_ENDPOINT
225 	select PCIE_DW_EP
226 	select PHY_TEGRA194_P2U
227 	select PCIE_TEGRA194
228 	help
229 	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
230 	  work in endpoint mode. There are two instances of PCIe controllers in
231 	  Tegra194. This controller can work either as EP or RC. In order to
232 	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
233 	  in order to enable device-specific features PCIE_TEGRA194_EP must be
234 	  selected. This uses the DesignWare core.
235 
236 config PCIE_DW_PLAT
237 	bool
238 
239 config PCIE_DW_PLAT_HOST
240 	bool "Platform bus based DesignWare PCIe controller (host mode)"
241 	depends on PCI_MSI
242 	select PCIE_DW_HOST
243 	select PCIE_DW_PLAT
244 	help
245 	  Enables support for the PCIe controller in the Designware IP to
246 	  work in host mode. There are two instances of PCIe controller in
247 	  Designware IP.
248 	  This controller can work either as EP or RC. In order to enable
249 	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
250 	  order to enable device-specific features PCI_DW_PLAT_EP must be
251 	  selected.
252 
253 config PCIE_DW_PLAT_EP
254 	bool "Platform bus based DesignWare PCIe controller (endpoint mode)"
255 	depends on PCI && PCI_MSI
256 	depends on PCI_ENDPOINT
257 	select PCIE_DW_EP
258 	select PCIE_DW_PLAT
259 	help
260 	  Enables support for the PCIe controller in the Designware IP to
261 	  work in endpoint mode. There are two instances of PCIe controller
262 	  in Designware IP.
263 	  This controller can work either as EP or RC. In order to enable
264 	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
265 	  order to enable device-specific features PCI_DW_PLAT_EP must be
266 	  selected.
267 
268 config PCIE_QCOM_COMMON
269 	bool
270 
271 config PCIE_QCOM
272 	bool "Qualcomm PCIe controller (host mode)"
273 	depends on OF && (ARCH_QCOM || COMPILE_TEST)
274 	depends on PCI_MSI
275 	select PCIE_DW_HOST
276 	select CRC8
277 	select PCIE_QCOM_COMMON
278 	help
279 	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
280 	  PCIe controller uses the DesignWare core plus Qualcomm-specific
281 	  hardware wrappers.
282 
283 config PCIE_QCOM_EP
284 	tristate "Qualcomm PCIe controller (endpoint mode)"
285 	depends on OF && (ARCH_QCOM || COMPILE_TEST)
286 	depends on PCI_ENDPOINT
287 	select PCIE_DW_EP
288 	select PCIE_QCOM_COMMON
289 	help
290 	  Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
291 	  to work in endpoint mode. The PCIe controller uses the DesignWare core
292 	  plus Qualcomm-specific hardware wrappers.
293 
294 config PCIE_RCAR_GEN4
295 	tristate
296 
297 config PCIE_RCAR_GEN4_HOST
298 	tristate "Renesas R-Car Gen4 PCIe controller (host mode)"
299 	depends on ARCH_RENESAS || COMPILE_TEST
300 	depends on PCI_MSI
301 	select PCIE_DW_HOST
302 	select PCIE_RCAR_GEN4
303 	help
304 	  Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs.
305 	  To compile this driver as a module, choose M here: the module will be
306 	  called pcie-rcar-gen4.ko. This uses the DesignWare core.
307 
308 config PCIE_RCAR_GEN4_EP
309 	tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)"
310 	depends on ARCH_RENESAS || COMPILE_TEST
311 	depends on PCI_ENDPOINT
312 	select PCIE_DW_EP
313 	select PCIE_RCAR_GEN4
314 	help
315 	  Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4
316 	  SoCs. To compile this driver as a module, choose M here: the module
317 	  will be called pcie-rcar-gen4.ko. This uses the DesignWare core.
318 
319 config PCIE_ROCKCHIP_DW
320 	bool
321 
322 config PCIE_ROCKCHIP_DW_HOST
323 	bool "Rockchip DesignWare PCIe controller (host mode)"
324 	depends on PCI_MSI
325 	depends on ARCH_ROCKCHIP || COMPILE_TEST
326 	depends on OF
327 	select PCIE_DW_HOST
328 	select PCIE_ROCKCHIP_DW
329 	help
330 	  Enables support for the DesignWare PCIe controller in the
331 	  Rockchip SoC (except RK3399) to work in host mode.
332 
333 config PCIE_ROCKCHIP_DW_EP
334 	bool "Rockchip DesignWare PCIe controller (endpoint mode)"
335 	depends on ARCH_ROCKCHIP || COMPILE_TEST
336 	depends on OF
337 	depends on PCI_ENDPOINT
338 	select PCIE_DW_EP
339 	select PCIE_ROCKCHIP_DW
340 	help
341 	  Enables support for the DesignWare PCIe controller in the
342 	  Rockchip SoC (except RK3399) to work in endpoint mode.
343 
344 config PCI_EXYNOS
345 	tristate "Samsung Exynos PCIe controller"
346 	depends on ARCH_EXYNOS || COMPILE_TEST
347 	depends on PCI_MSI
348 	select PCIE_DW_HOST
349 	help
350 	  Enables support for the PCIe controller in the Samsung Exynos SoCs
351 	  to work in host mode. The PCI controller is based on the DesignWare
352 	  hardware and therefore the driver re-uses the DesignWare core
353 	  functions to implement the driver.
354 
355 config PCIE_FU740
356 	bool "SiFive FU740 PCIe controller"
357 	depends on PCI_MSI
358 	depends on ARCH_SIFIVE || COMPILE_TEST
359 	select PCIE_DW_HOST
360 	help
361 	  Say Y here if you want PCIe controller support for the SiFive
362 	  FU740.
363 
364 config PCIE_UNIPHIER
365 	bool "Socionext UniPhier PCIe controller (host mode)"
366 	depends on ARCH_UNIPHIER || COMPILE_TEST
367 	depends on OF && HAS_IOMEM
368 	depends on PCI_MSI
369 	select PCIE_DW_HOST
370 	help
371 	  Say Y here if you want PCIe host controller support on UniPhier SoCs.
372 	  This driver supports LD20 and PXs3 SoCs.
373 
374 config PCIE_UNIPHIER_EP
375 	bool "Socionext UniPhier PCIe controller (endpoint mode)"
376 	depends on ARCH_UNIPHIER || COMPILE_TEST
377 	depends on OF && HAS_IOMEM
378 	depends on PCI_ENDPOINT
379 	select PCIE_DW_EP
380 	help
381 	  Say Y here if you want PCIe endpoint controller support on
382 	  UniPhier SoCs. This driver supports Pro5 SoC.
383 
384 config PCIE_SPEAR13XX
385 	bool "STMicroelectronics SPEAr PCIe controller"
386 	depends on ARCH_SPEAR13XX || COMPILE_TEST
387 	depends on PCI_MSI
388 	select PCIE_DW_HOST
389 	help
390 	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
391 
392 config PCI_DRA7XX
393 	tristate
394 
395 config PCI_DRA7XX_HOST
396 	tristate "TI DRA7xx PCIe controller (host mode)"
397 	depends on SOC_DRA7XX || COMPILE_TEST
398 	depends on OF && HAS_IOMEM && TI_PIPE3
399 	depends on PCI_MSI
400 	select PCIE_DW_HOST
401 	select PCI_DRA7XX
402 	default y if SOC_DRA7XX
403 	help
404 	  Enables support for the PCIe controller in the DRA7xx SoC to work in
405 	  host mode. There are two instances of PCIe controller in DRA7xx.
406 	  This controller can work either as EP or RC. In order to enable
407 	  host-specific features PCI_DRA7XX_HOST must be selected and in order
408 	  to enable device-specific features PCI_DRA7XX_EP must be selected.
409 	  This uses the DesignWare core.
410 
411 config PCI_DRA7XX_EP
412 	tristate "TI DRA7xx PCIe controller (endpoint mode)"
413 	depends on SOC_DRA7XX || COMPILE_TEST
414 	depends on OF && HAS_IOMEM && TI_PIPE3
415 	depends on PCI_ENDPOINT
416 	select PCIE_DW_EP
417 	select PCI_DRA7XX
418 	help
419 	  Enables support for the PCIe controller in the DRA7xx SoC to work in
420 	  endpoint mode. There are two instances of PCIe controller in DRA7xx.
421 	  This controller can work either as EP or RC. In order to enable
422 	  host-specific features PCI_DRA7XX_HOST must be selected and in order
423 	  to enable device-specific features PCI_DRA7XX_EP must be selected.
424 	  This uses the DesignWare core.
425 
426 config PCI_KEYSTONE
427 	bool
428 
429 config PCI_KEYSTONE_HOST
430 	bool "TI Keystone PCIe controller (host mode)"
431 	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
432 	depends on PCI_MSI
433 	select PCIE_DW_HOST
434 	select PCI_KEYSTONE
435 	help
436 	  Enables support for the PCIe controller in the Keystone SoC to
437 	  work in host mode. The PCI controller on Keystone is based on
438 	  DesignWare hardware and therefore the driver re-uses the
439 	  DesignWare core functions to implement the driver.
440 
441 config PCI_KEYSTONE_EP
442 	bool "TI Keystone PCIe controller (endpoint mode)"
443 	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
444 	depends on PCI_ENDPOINT
445 	select PCIE_DW_EP
446 	select PCI_KEYSTONE
447 	help
448 	  Enables support for the PCIe controller in the Keystone SoC to
449 	  work in endpoint mode. The PCI controller on Keystone is based
450 	  on DesignWare hardware and therefore the driver re-uses the
451 	  DesignWare core functions to implement the driver.
452 
453 config PCIE_VISCONTI_HOST
454 	bool "Toshiba Visconti PCIe controller"
455 	depends on ARCH_VISCONTI || COMPILE_TEST
456 	depends on PCI_MSI
457 	select PCIE_DW_HOST
458 	help
459 	  Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
460 	  This driver supports TMPV7708 SoC.
461 
462 endmenu
463