xref: /linux/drivers/pci/controller/dwc/Kconfig (revision aec2f682d47c54ef434b2d440992626d80b1ebdc)
1# SPDX-License-Identifier: GPL-2.0
2
3menu "DesignWare-based PCIe controllers"
4	depends on PCI
5
6config PCIE_DW
7	bool
8
9config PCIE_DW_DEBUGFS
10	bool "DesignWare PCIe debugfs entries"
11	depends on DEBUG_FS
12	depends on PCIE_DW_HOST || PCIE_DW_EP
13	help
14	  Say Y here to enable debugfs entries for the PCIe controller. These
15	  entries provide various debug features related to the controller and
16	  expose the RAS DES capabilities such as Silicon Debug, Error Injection
17	  and Statistical Counters.
18
19config PCIE_DW_HOST
20	bool
21	select PCIE_DW
22	select IRQ_MSI_LIB
23	select PCI_HOST_COMMON
24
25config PCIE_DW_EP
26	bool
27	select PCIE_DW
28
29config PCIE_AL
30	bool "Amazon Annapurna Labs PCIe controller"
31	depends on OF && (ARM64 || COMPILE_TEST)
32	depends on PCI_MSI
33	select PCIE_DW_HOST
34	select PCI_ECAM
35	help
36	  Say Y here to enable support of the Amazon's Annapurna Labs PCIe
37	  controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
38	  core plus Annapurna Labs proprietary hardware wrappers. This is
39	  required only for DT-based platforms. ACPI platforms with the
40	  Annapurna Labs PCIe controller don't need to enable this.
41
42config PCIE_AMD_MDB
43	bool "AMD MDB Versal2 PCIe controller"
44	depends on OF && (ARM64 || COMPILE_TEST)
45	depends on PCI_MSI
46	select PCIE_DW_HOST
47	help
48	  Say Y here if you want to enable PCIe controller support on AMD
49	  Versal2 SoCs. The AMD MDB Versal2 PCIe controller is based on
50	  DesignWare IP and therefore the driver re-uses the DesignWare
51	  core functions to implement the driver.
52
53config PCI_MESON
54	tristate "Amlogic Meson PCIe controller"
55	default m if ARCH_MESON
56	depends on PCI_MSI
57	select PCIE_DW_HOST
58	help
59	  Say Y here if you want to enable PCI controller support on Amlogic
60	  SoCs. The PCI controller on Amlogic is based on DesignWare hardware
61	  and therefore the driver re-uses the DesignWare core functions to
62	  implement the driver.
63
64config PCIE_ANDES_QILAI
65	tristate "Andes QiLai PCIe controller"
66	depends on ARCH_ANDES || COMPILE_TEST
67	depends on PCI_MSI
68	select PCIE_DW_HOST
69	help
70	  Say Y here to enable PCIe controller support on Andes QiLai SoCs,
71	  which operate in Root Complex mode. The Andes QiLai SoC PCIe
72	  controller is based on DesignWare IP and therefore the driver
73	  re-uses the DesignWare core functions to implement the driver.
74
75config PCIE_ARTPEC6
76	bool
77
78config PCIE_ARTPEC6_HOST
79	bool "Axis ARTPEC-6 PCIe controller (host mode)"
80	depends on MACH_ARTPEC6 || COMPILE_TEST
81	depends on PCI_MSI
82	select PCIE_DW_HOST
83	select PCIE_ARTPEC6
84	help
85	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
86	  host mode. This uses the DesignWare core.
87
88config PCIE_ARTPEC6_EP
89	bool "Axis ARTPEC-6 PCIe controller (endpoint mode)"
90	depends on MACH_ARTPEC6 || COMPILE_TEST
91	depends on PCI_ENDPOINT
92	select PCIE_DW_EP
93	select PCIE_ARTPEC6
94	help
95	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
96	  endpoint mode. This uses the DesignWare core.
97
98config PCIE_ESWIN
99	tristate "ESWIN PCIe controller"
100	depends on ARCH_ESWIN || COMPILE_TEST
101	depends on PCI_MSI
102	select PCIE_DW_HOST
103	help
104	  Say Y here if you want PCIe controller support for the ESWIN SoCs.
105	  The PCIe controller in ESWIN SoCs is based on DesignWare hardware, and
106	  works only in host mode.
107
108config PCI_IMX6
109	bool
110
111config PCI_IMX6_HOST
112	bool "Freescale i.MX6/7/8 PCIe controller (host mode)"
113	depends on ARCH_MXC || COMPILE_TEST
114	depends on PCI_MSI
115	select PCIE_DW_HOST
116	select PCI_IMX6
117	help
118	  Enables support for the PCIe controller in the i.MX SoCs to
119	  work in Root Complex mode. The PCI controller on i.MX is based
120	  on DesignWare hardware and therefore the driver re-uses the
121	  DesignWare core functions to implement the driver.
122
123config PCI_IMX6_EP
124	bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)"
125	depends on ARCH_MXC || COMPILE_TEST
126	depends on PCI_ENDPOINT
127	select PCIE_DW_EP
128	select PCI_IMX6
129	help
130	  Enables support for the PCIe controller in the i.MX SoCs to
131	  work in endpoint mode. The PCI controller on i.MX is based
132	  on DesignWare hardware and therefore the driver re-uses the
133	  DesignWare core functions to implement the driver.
134
135config PCI_LAYERSCAPE
136	tristate "Freescale Layerscape PCIe controller (host mode)"
137	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
138	depends on PCI_MSI
139	select PCIE_DW_HOST
140	select MFD_SYSCON
141	help
142	  Say Y here if you want to enable PCIe controller support on Layerscape
143	  SoCs to work in Host mode.
144	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
145	  determines which PCIe controller works in EP mode and which PCIe
146	  controller works in RC mode.
147
148config PCI_LAYERSCAPE_EP
149	bool "Freescale Layerscape PCIe controller (endpoint mode)"
150	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
151	depends on PCI_ENDPOINT
152	select PCIE_DW_EP
153	help
154	  Say Y here if you want to enable PCIe controller support on Layerscape
155	  SoCs to work in Endpoint mode.
156	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
157	  determines which PCIe controller works in EP mode and which PCIe
158	  controller works in RC mode.
159
160config PCI_HISI
161	depends on OF && (ARM64 || COMPILE_TEST)
162	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller"
163	depends on PCI_MSI
164	select PCIE_DW_HOST
165	select PCI_HOST_COMMON
166	help
167	  Say Y here if you want PCIe controller support on HiSilicon
168	  Hip05 and Hip06 SoCs
169
170config PCIE_KIRIN
171	depends on OF && (ARM64 || COMPILE_TEST)
172	tristate "HiSilicon Kirin PCIe controller"
173	depends on PCI_MSI
174	select PCIE_DW_HOST
175	select REGMAP_MMIO
176	help
177	  Say Y here if you want PCIe controller support
178	  on HiSilicon Kirin series SoCs.
179
180config PCIE_HISI_STB
181	bool "HiSilicon STB PCIe controller"
182	depends on ARCH_HISI || COMPILE_TEST
183	depends on PCI_MSI
184	select PCIE_DW_HOST
185	help
186	  Say Y here if you want PCIe controller support on HiSilicon STB SoCs
187
188config PCIE_INTEL_GW
189	bool "Intel Gateway PCIe controller "
190	depends on OF && (X86 || COMPILE_TEST)
191	depends on PCI_MSI
192	select PCIE_DW_HOST
193	help
194	  Say 'Y' here to enable PCIe Host controller support on Intel
195	  Gateway SoCs.
196	  The PCIe controller uses the DesignWare core plus Intel-specific
197	  hardware wrappers.
198
199config PCIE_KEEMBAY
200	bool
201
202config PCIE_KEEMBAY_HOST
203	bool "Intel Keem Bay PCIe controller (host mode)"
204	depends on ARCH_KEEMBAY || COMPILE_TEST
205	depends on PCI_MSI
206	select PCIE_DW_HOST
207	select PCIE_KEEMBAY
208	help
209	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
210	  to work in host mode.
211	  The PCIe controller is based on DesignWare Hardware and uses
212	  DesignWare core functions.
213
214config PCIE_KEEMBAY_EP
215	bool "Intel Keem Bay PCIe controller (endpoint mode)"
216	depends on ARCH_KEEMBAY || COMPILE_TEST
217	depends on PCI_MSI
218	depends on PCI_ENDPOINT
219	select PCIE_DW_EP
220	select PCIE_KEEMBAY
221	help
222	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
223	  to work in endpoint mode.
224	  The PCIe controller is based on DesignWare Hardware and uses
225	  DesignWare core functions.
226
227config PCIE_ARMADA_8K
228	bool "Marvell Armada-8K PCIe controller"
229	depends on ARCH_MVEBU || COMPILE_TEST
230	depends on PCI_MSI
231	select PCIE_DW_HOST
232	help
233	  Say Y here if you want to enable PCIe controller support on
234	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
235	  DesignWare hardware and therefore the driver re-uses the
236	  DesignWare core functions to implement the driver.
237
238config PCIE_TEGRA194
239	tristate
240
241config PCIE_TEGRA194_HOST
242	tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)"
243	depends on (ARCH_TEGRA && ARM64) || COMPILE_TEST
244	depends on PCI_MSI
245	select PCIE_DW_HOST
246	select PHY_TEGRA194_P2U
247	select PCIE_TEGRA194
248	help
249	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
250	  work in host mode. There are two instances of PCIe controllers in
251	  Tegra194. This controller can work either as EP or RC. In order to
252	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
253	  in order to enable device-specific features PCIE_TEGRA194_EP must be
254	  selected. This uses the DesignWare core.
255
256config PCIE_TEGRA194_EP
257	tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)"
258	depends on (ARCH_TEGRA && ARM64) || COMPILE_TEST
259	depends on PCI_ENDPOINT
260	select PCIE_DW_EP
261	select PHY_TEGRA194_P2U
262	select PCIE_TEGRA194
263	help
264	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
265	  work in endpoint mode. There are two instances of PCIe controllers in
266	  Tegra194. This controller can work either as EP or RC. In order to
267	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
268	  in order to enable device-specific features PCIE_TEGRA194_EP must be
269	  selected. This uses the DesignWare core.
270
271config PCIE_NXP_S32G
272	bool "NXP S32G PCIe controller (host mode)"
273	depends on ARCH_S32 || COMPILE_TEST
274	select PCIE_DW_HOST
275	help
276	  Enable support for the PCIe controller in NXP S32G based boards to
277	  work in Host mode. The controller is based on DesignWare IP and
278	  can work either as RC or EP. In order to enable host-specific
279	  features PCIE_NXP_S32G must be selected.
280
281config PCIE_DW_PLAT
282	bool
283
284config PCIE_DW_PLAT_HOST
285	bool "Platform bus based DesignWare PCIe controller (host mode)"
286	depends on PCI_MSI
287	select PCIE_DW_HOST
288	select PCIE_DW_PLAT
289	help
290	  Enables support for the PCIe controller in the Designware IP to
291	  work in host mode. There are two instances of PCIe controller in
292	  Designware IP.
293	  This controller can work either as EP or RC. In order to enable
294	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
295	  order to enable device-specific features PCI_DW_PLAT_EP must be
296	  selected.
297
298config PCIE_DW_PLAT_EP
299	bool "Platform bus based DesignWare PCIe controller (endpoint mode)"
300	depends on PCI && PCI_MSI
301	depends on PCI_ENDPOINT
302	select PCIE_DW_EP
303	select PCIE_DW_PLAT
304	help
305	  Enables support for the PCIe controller in the Designware IP to
306	  work in endpoint mode. There are two instances of PCIe controller
307	  in Designware IP.
308	  This controller can work either as EP or RC. In order to enable
309	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
310	  order to enable device-specific features PCI_DW_PLAT_EP must be
311	  selected.
312
313config PCIE_QCOM_COMMON
314	bool
315
316config PCIE_QCOM
317	bool "Qualcomm PCIe controller (host mode)"
318	depends on OF && (ARCH_QCOM || COMPILE_TEST)
319	depends on PCI_MSI
320	select PCIE_DW_HOST
321	select CRC8
322	select PCIE_QCOM_COMMON
323	select PCI_HOST_COMMON
324	select PCI_PWRCTRL_GENERIC
325	help
326	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
327	  PCIe controller uses the DesignWare core plus Qualcomm-specific
328	  hardware wrappers.
329
330config PCIE_QCOM_EP
331	tristate "Qualcomm PCIe controller (endpoint mode)"
332	depends on OF && (ARCH_QCOM || COMPILE_TEST)
333	depends on PCI_ENDPOINT
334	select PCIE_DW_EP
335	select PCIE_QCOM_COMMON
336	help
337	  Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
338	  to work in endpoint mode. The PCIe controller uses the DesignWare core
339	  plus Qualcomm-specific hardware wrappers.
340
341config PCIE_RCAR_GEN4
342	tristate
343
344config PCIE_RCAR_GEN4_HOST
345	tristate "Renesas R-Car Gen4 PCIe controller (host mode)"
346	depends on ARCH_RENESAS || COMPILE_TEST
347	depends on PCI_MSI
348	select PCIE_DW_HOST
349	select PCIE_RCAR_GEN4
350	help
351	  Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs.
352	  To compile this driver as a module, choose M here: the module will be
353	  called pcie-rcar-gen4.ko. This uses the DesignWare core.
354
355config PCIE_RCAR_GEN4_EP
356	tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)"
357	depends on ARCH_RENESAS || COMPILE_TEST
358	depends on PCI_ENDPOINT
359	select PCIE_DW_EP
360	select PCIE_RCAR_GEN4
361	help
362	  Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4
363	  SoCs. To compile this driver as a module, choose M here: the module
364	  will be called pcie-rcar-gen4.ko. This uses the DesignWare core.
365
366config PCIE_ROCKCHIP_DW
367	bool
368
369config PCIE_ROCKCHIP_DW_HOST
370	bool "Rockchip DesignWare PCIe controller (host mode)"
371	depends on PCI_MSI
372	depends on ARCH_ROCKCHIP || COMPILE_TEST
373	depends on OF
374	select PCIE_DW_HOST
375	select PCIE_ROCKCHIP_DW
376	help
377	  Enables support for the DesignWare PCIe controller in the
378	  Rockchip SoC (except RK3399) to work in host mode.
379
380config PCIE_ROCKCHIP_DW_EP
381	bool "Rockchip DesignWare PCIe controller (endpoint mode)"
382	depends on ARCH_ROCKCHIP || COMPILE_TEST
383	depends on OF
384	depends on PCI_ENDPOINT
385	select PCIE_DW_EP
386	select PCIE_ROCKCHIP_DW
387	help
388	  Enables support for the DesignWare PCIe controller in the
389	  Rockchip SoC (except RK3399) to work in endpoint mode.
390
391config PCI_EXYNOS
392	tristate "Samsung Exynos PCIe controller"
393	depends on ARCH_EXYNOS || COMPILE_TEST
394	depends on PCI_MSI
395	select PCIE_DW_HOST
396	help
397	  Enables support for the PCIe controller in the Samsung Exynos SoCs
398	  to work in host mode. The PCI controller is based on the DesignWare
399	  hardware and therefore the driver re-uses the DesignWare core
400	  functions to implement the driver.
401
402config PCIE_FU740
403	bool "SiFive FU740 PCIe controller"
404	depends on PCI_MSI
405	depends on ARCH_SIFIVE || COMPILE_TEST
406	select PCIE_DW_HOST
407	help
408	  Say Y here if you want PCIe controller support for the SiFive
409	  FU740.
410
411config PCIE_UNIPHIER
412	bool "Socionext UniPhier PCIe controller (host mode)"
413	depends on ARCH_UNIPHIER || COMPILE_TEST
414	depends on OF && HAS_IOMEM
415	depends on PCI_MSI
416	select PCIE_DW_HOST
417	help
418	  Say Y here if you want PCIe host controller support on UniPhier SoCs.
419	  This driver supports LD20 and PXs3 SoCs.
420
421config PCIE_UNIPHIER_EP
422	bool "Socionext UniPhier PCIe controller (endpoint mode)"
423	depends on ARCH_UNIPHIER || COMPILE_TEST
424	depends on OF && HAS_IOMEM
425	depends on PCI_ENDPOINT
426	select PCIE_DW_EP
427	help
428	  Say Y here if you want PCIe endpoint controller support on
429	  UniPhier SoCs. This driver supports Pro5 SoC.
430
431config PCIE_SOPHGO_DW
432	bool "Sophgo DesignWare PCIe controller (host mode)"
433	depends on ARCH_SOPHGO || COMPILE_TEST
434	depends on PCI_MSI
435	depends on OF
436	select PCIE_DW_HOST
437	help
438	  Say Y here if you want PCIe host controller support on
439	  Sophgo SoCs.
440
441config PCIE_SPACEMIT_K1
442	tristate "SpacemiT K1 PCIe controller (host mode)"
443	depends on ARCH_SPACEMIT || COMPILE_TEST
444	depends on HAS_IOMEM
445	select PCIE_DW_HOST
446	select PCI_PWRCTRL_GENERIC
447	default ARCH_SPACEMIT
448	help
449	  Enables support for the DesignWare based PCIe controller in
450	  the SpacemiT K1 SoC operating in host mode.  Three controllers
451	  are available on the K1 SoC; the first of these shares a PHY
452	  with a USB 3.0 host controller (one or the other can be used).
453
454config PCIE_SPEAR13XX
455	bool "STMicroelectronics SPEAr PCIe controller"
456	depends on ARCH_SPEAR13XX || COMPILE_TEST
457	depends on PCI_MSI
458	select PCIE_DW_HOST
459	help
460	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
461
462config PCIE_STM32_HOST
463	tristate "STMicroelectronics STM32MP25 PCIe Controller (host mode)"
464	depends on ARCH_STM32 || COMPILE_TEST
465	depends on PCI_MSI
466	select PCIE_DW_HOST
467	help
468	  Enables Root Complex (RC) support for the DesignWare core based PCIe
469	  controller found in STM32MP25 SoC.
470
471	  This driver can also be built as a module. If so, the module
472	  will be called pcie-stm32.
473
474config PCIE_STM32_EP
475	tristate "STMicroelectronics STM32MP25 PCIe Controller (endpoint mode)"
476	depends on ARCH_STM32 || COMPILE_TEST
477	depends on PCI_ENDPOINT
478	select PCIE_DW_EP
479	help
480	  Enables Endpoint (EP) support for the DesignWare core based PCIe
481	  controller found in STM32MP25 SoC.
482
483	  This driver can also be built as a module. If so, the module
484	  will be called pcie-stm32-ep.
485
486config PCI_DRA7XX
487	tristate
488
489config PCI_DRA7XX_HOST
490	tristate "TI DRA7xx PCIe controller (host mode)"
491	depends on SOC_DRA7XX || COMPILE_TEST
492	depends on OF && HAS_IOMEM && TI_PIPE3
493	depends on PCI_MSI
494	select PCIE_DW_HOST
495	select PCI_DRA7XX
496	default y if SOC_DRA7XX
497	help
498	  Enables support for the PCIe controller in the DRA7xx SoC to work in
499	  host mode. There are two instances of PCIe controller in DRA7xx.
500	  This controller can work either as EP or RC. In order to enable
501	  host-specific features PCI_DRA7XX_HOST must be selected and in order
502	  to enable device-specific features PCI_DRA7XX_EP must be selected.
503	  This uses the DesignWare core.
504
505config PCI_DRA7XX_EP
506	tristate "TI DRA7xx PCIe controller (endpoint mode)"
507	depends on SOC_DRA7XX || COMPILE_TEST
508	depends on OF && HAS_IOMEM && TI_PIPE3
509	depends on PCI_ENDPOINT
510	select PCIE_DW_EP
511	select PCI_DRA7XX
512	help
513	  Enables support for the PCIe controller in the DRA7xx SoC to work in
514	  endpoint mode. There are two instances of PCIe controller in DRA7xx.
515	  This controller can work either as EP or RC. In order to enable
516	  host-specific features PCI_DRA7XX_HOST must be selected and in order
517	  to enable device-specific features PCI_DRA7XX_EP must be selected.
518	  This uses the DesignWare core.
519
520# ARM32 platforms use hook_fault_code() and cannot support loadable module.
521config PCI_KEYSTONE
522	bool
523
524# On non-ARM32 platforms, loadable module can be supported.
525config PCI_KEYSTONE_TRISTATE
526	tristate
527
528config PCI_KEYSTONE_HOST
529	tristate "TI Keystone PCIe controller (host mode)"
530	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
531	depends on PCI_MSI
532	select PCIE_DW_HOST
533	select PCI_KEYSTONE if ARM
534	select PCI_KEYSTONE_TRISTATE if !ARM
535	help
536	  Enables support for the PCIe controller in the Keystone SoC to
537	  work in host mode. The PCI controller on Keystone is based on
538	  DesignWare hardware and therefore the driver re-uses the
539	  DesignWare core functions to implement the driver.
540
541config PCI_KEYSTONE_EP
542	tristate "TI Keystone PCIe controller (endpoint mode)"
543	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
544	depends on PCI_ENDPOINT
545	select PCIE_DW_EP
546	select PCI_KEYSTONE if ARM
547	select PCI_KEYSTONE_TRISTATE if !ARM
548	help
549	  Enables support for the PCIe controller in the Keystone SoC to
550	  work in endpoint mode. The PCI controller on Keystone is based
551	  on DesignWare hardware and therefore the driver re-uses the
552	  DesignWare core functions to implement the driver.
553
554config PCIE_VISCONTI_HOST
555	bool "Toshiba Visconti PCIe controller"
556	depends on ARCH_VISCONTI || COMPILE_TEST
557	depends on PCI_MSI
558	select PCIE_DW_HOST
559	help
560	  Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
561	  This driver supports TMPV7708 SoC.
562
563endmenu
564