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