xref: /linux/drivers/pci/controller/dwc/Kconfig (revision 0cb6d733983cb3be88a7c1e44400fdd231efd053)
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	help
301	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
302	  PCIe controller uses the DesignWare core plus Qualcomm-specific
303	  hardware wrappers.
304
305config PCIE_QCOM_EP
306	tristate "Qualcomm PCIe controller (endpoint mode)"
307	depends on OF && (ARCH_QCOM || COMPILE_TEST)
308	depends on PCI_ENDPOINT
309	select PCIE_DW_EP
310	select PCIE_QCOM_COMMON
311	help
312	  Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
313	  to work in endpoint mode. The PCIe controller uses the DesignWare core
314	  plus Qualcomm-specific hardware wrappers.
315
316config PCIE_RCAR_GEN4
317	tristate
318
319config PCIE_RCAR_GEN4_HOST
320	tristate "Renesas R-Car Gen4 PCIe controller (host mode)"
321	depends on ARCH_RENESAS || COMPILE_TEST
322	depends on PCI_MSI
323	select PCIE_DW_HOST
324	select PCIE_RCAR_GEN4
325	help
326	  Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs.
327	  To compile this driver as a module, choose M here: the module will be
328	  called pcie-rcar-gen4.ko. This uses the DesignWare core.
329
330config PCIE_RCAR_GEN4_EP
331	tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)"
332	depends on ARCH_RENESAS || COMPILE_TEST
333	depends on PCI_ENDPOINT
334	select PCIE_DW_EP
335	select PCIE_RCAR_GEN4
336	help
337	  Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4
338	  SoCs. To compile this driver as a module, choose M here: the module
339	  will be called pcie-rcar-gen4.ko. This uses the DesignWare core.
340
341config PCIE_ROCKCHIP_DW
342	bool
343
344config PCIE_ROCKCHIP_DW_HOST
345	bool "Rockchip DesignWare PCIe controller (host mode)"
346	depends on PCI_MSI
347	depends on ARCH_ROCKCHIP || COMPILE_TEST
348	depends on OF
349	select PCIE_DW_HOST
350	select PCIE_ROCKCHIP_DW
351	help
352	  Enables support for the DesignWare PCIe controller in the
353	  Rockchip SoC (except RK3399) to work in host mode.
354
355config PCIE_ROCKCHIP_DW_EP
356	bool "Rockchip DesignWare PCIe controller (endpoint mode)"
357	depends on ARCH_ROCKCHIP || COMPILE_TEST
358	depends on OF
359	depends on PCI_ENDPOINT
360	select PCIE_DW_EP
361	select PCIE_ROCKCHIP_DW
362	help
363	  Enables support for the DesignWare PCIe controller in the
364	  Rockchip SoC (except RK3399) to work in endpoint mode.
365
366config PCI_EXYNOS
367	tristate "Samsung Exynos PCIe controller"
368	depends on ARCH_EXYNOS || COMPILE_TEST
369	depends on PCI_MSI
370	select PCIE_DW_HOST
371	help
372	  Enables support for the PCIe controller in the Samsung Exynos SoCs
373	  to work in host mode. The PCI controller is based on the DesignWare
374	  hardware and therefore the driver re-uses the DesignWare core
375	  functions to implement the driver.
376
377config PCIE_FU740
378	bool "SiFive FU740 PCIe controller"
379	depends on PCI_MSI
380	depends on ARCH_SIFIVE || COMPILE_TEST
381	select PCIE_DW_HOST
382	help
383	  Say Y here if you want PCIe controller support for the SiFive
384	  FU740.
385
386config PCIE_UNIPHIER
387	bool "Socionext UniPhier PCIe controller (host mode)"
388	depends on ARCH_UNIPHIER || COMPILE_TEST
389	depends on OF && HAS_IOMEM
390	depends on PCI_MSI
391	select PCIE_DW_HOST
392	help
393	  Say Y here if you want PCIe host controller support on UniPhier SoCs.
394	  This driver supports LD20 and PXs3 SoCs.
395
396config PCIE_UNIPHIER_EP
397	bool "Socionext UniPhier PCIe controller (endpoint mode)"
398	depends on ARCH_UNIPHIER || COMPILE_TEST
399	depends on OF && HAS_IOMEM
400	depends on PCI_ENDPOINT
401	select PCIE_DW_EP
402	help
403	  Say Y here if you want PCIe endpoint controller support on
404	  UniPhier SoCs. This driver supports Pro5 SoC.
405
406config PCIE_SPEAR13XX
407	bool "STMicroelectronics SPEAr PCIe controller"
408	depends on ARCH_SPEAR13XX || COMPILE_TEST
409	depends on PCI_MSI
410	select PCIE_DW_HOST
411	help
412	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
413
414config PCI_DRA7XX
415	tristate
416
417config PCI_DRA7XX_HOST
418	tristate "TI DRA7xx PCIe controller (host mode)"
419	depends on SOC_DRA7XX || COMPILE_TEST
420	depends on OF && HAS_IOMEM && TI_PIPE3
421	depends on PCI_MSI
422	select PCIE_DW_HOST
423	select PCI_DRA7XX
424	default y if SOC_DRA7XX
425	help
426	  Enables support for the PCIe controller in the DRA7xx SoC to work in
427	  host mode. There are two instances of PCIe controller in DRA7xx.
428	  This controller can work either as EP or RC. In order to enable
429	  host-specific features PCI_DRA7XX_HOST must be selected and in order
430	  to enable device-specific features PCI_DRA7XX_EP must be selected.
431	  This uses the DesignWare core.
432
433config PCI_DRA7XX_EP
434	tristate "TI DRA7xx PCIe controller (endpoint mode)"
435	depends on SOC_DRA7XX || COMPILE_TEST
436	depends on OF && HAS_IOMEM && TI_PIPE3
437	depends on PCI_ENDPOINT
438	select PCIE_DW_EP
439	select PCI_DRA7XX
440	help
441	  Enables support for the PCIe controller in the DRA7xx SoC to work in
442	  endpoint mode. There are two instances of PCIe controller in DRA7xx.
443	  This controller can work either as EP or RC. In order to enable
444	  host-specific features PCI_DRA7XX_HOST must be selected and in order
445	  to enable device-specific features PCI_DRA7XX_EP must be selected.
446	  This uses the DesignWare core.
447
448config PCI_KEYSTONE
449	bool
450
451config PCI_KEYSTONE_HOST
452	bool "TI Keystone PCIe controller (host mode)"
453	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
454	depends on PCI_MSI
455	select PCIE_DW_HOST
456	select PCI_KEYSTONE
457	help
458	  Enables support for the PCIe controller in the Keystone SoC to
459	  work in host mode. The PCI controller on Keystone is based on
460	  DesignWare hardware and therefore the driver re-uses the
461	  DesignWare core functions to implement the driver.
462
463config PCI_KEYSTONE_EP
464	bool "TI Keystone PCIe controller (endpoint mode)"
465	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
466	depends on PCI_ENDPOINT
467	select PCIE_DW_EP
468	select PCI_KEYSTONE
469	help
470	  Enables support for the PCIe controller in the Keystone SoC to
471	  work in endpoint mode. The PCI controller on Keystone is based
472	  on DesignWare hardware and therefore the driver re-uses the
473	  DesignWare core functions to implement the driver.
474
475config PCIE_VISCONTI_HOST
476	bool "Toshiba Visconti PCIe controller"
477	depends on ARCH_VISCONTI || COMPILE_TEST
478	depends on PCI_MSI
479	select PCIE_DW_HOST
480	help
481	  Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
482	  This driver supports TMPV7708 SoC.
483
484endmenu
485