xref: /linux/drivers/pci/controller/dwc/Kconfig (revision 7d944c0f146986a532087e15abb66a27c7890ca1)
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
23config PCIE_DW_EP
24	bool
25	select PCIE_DW
26
27config PCIE_AL
28	bool "Amazon Annapurna Labs PCIe controller"
29	depends on OF && (ARM64 || COMPILE_TEST)
30	depends on PCI_MSI
31	select PCIE_DW_HOST
32	select PCI_ECAM
33	help
34	  Say Y here to enable support of the Amazon's Annapurna Labs PCIe
35	  controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
36	  core plus Annapurna Labs proprietary hardware wrappers. This is
37	  required only for DT-based platforms. ACPI platforms with the
38	  Annapurna Labs PCIe controller don't need to enable this.
39
40config PCIE_AMD_MDB
41	bool "AMD MDB Versal2 PCIe controller"
42	depends on OF && (ARM64 || COMPILE_TEST)
43	depends on PCI_MSI
44	select PCIE_DW_HOST
45	help
46	  Say Y here if you want to enable PCIe controller support on AMD
47	  Versal2 SoCs. The AMD MDB Versal2 PCIe controller is based on
48	  DesignWare IP and therefore the driver re-uses the DesignWare
49	  core functions to implement the driver.
50
51config PCI_MESON
52	tristate "Amlogic Meson PCIe controller"
53	default m if ARCH_MESON
54	depends on PCI_MSI
55	select PCIE_DW_HOST
56	help
57	  Say Y here if you want to enable PCI controller support on Amlogic
58	  SoCs. The PCI controller on Amlogic is based on DesignWare hardware
59	  and therefore the driver re-uses the DesignWare core functions to
60	  implement the driver.
61
62config PCIE_ARTPEC6
63	bool
64
65config PCIE_ARTPEC6_HOST
66	bool "Axis ARTPEC-6 PCIe controller (host mode)"
67	depends on MACH_ARTPEC6 || COMPILE_TEST
68	depends on PCI_MSI
69	select PCIE_DW_HOST
70	select PCIE_ARTPEC6
71	help
72	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
73	  host mode. This uses the DesignWare core.
74
75config PCIE_ARTPEC6_EP
76	bool "Axis ARTPEC-6 PCIe controller (endpoint mode)"
77	depends on MACH_ARTPEC6 || COMPILE_TEST
78	depends on PCI_ENDPOINT
79	select PCIE_DW_EP
80	select PCIE_ARTPEC6
81	help
82	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
83	  endpoint mode. This uses the DesignWare core.
84
85config PCIE_BT1
86	tristate "Baikal-T1 PCIe controller"
87	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
88	depends on PCI_MSI
89	select PCIE_DW_HOST
90	help
91	  Enables support for the PCIe controller in the Baikal-T1 SoC to work
92	  in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core.
93
94config PCI_IMX6
95	bool
96
97config PCI_IMX6_HOST
98	bool "Freescale i.MX6/7/8 PCIe controller (host mode)"
99	depends on ARCH_MXC || COMPILE_TEST
100	depends on PCI_MSI
101	select PCIE_DW_HOST
102	select PCI_IMX6
103	help
104	  Enables support for the PCIe controller in the i.MX SoCs to
105	  work in Root Complex mode. The PCI controller on i.MX is based
106	  on DesignWare hardware and therefore the driver re-uses the
107	  DesignWare core functions to implement the driver.
108
109config PCI_IMX6_EP
110	bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)"
111	depends on ARCH_MXC || COMPILE_TEST
112	depends on PCI_ENDPOINT
113	select PCIE_DW_EP
114	select PCI_IMX6
115	help
116	  Enables support for the PCIe controller in the i.MX SoCs to
117	  work in endpoint mode. The PCI controller on i.MX is based
118	  on DesignWare hardware and therefore the driver re-uses the
119	  DesignWare core functions to implement the driver.
120
121config PCI_LAYERSCAPE
122	bool "Freescale Layerscape PCIe controller (host mode)"
123	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
124	depends on PCI_MSI
125	select PCIE_DW_HOST
126	select MFD_SYSCON
127	help
128	  Say Y here if you want to enable PCIe controller support on Layerscape
129	  SoCs to work in Host mode.
130	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
131	  determines which PCIe controller works in EP mode and which PCIe
132	  controller works in RC mode.
133
134config PCI_LAYERSCAPE_EP
135	bool "Freescale Layerscape PCIe controller (endpoint mode)"
136	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
137	depends on PCI_ENDPOINT
138	select PCIE_DW_EP
139	help
140	  Say Y here if you want to enable PCIe controller support on Layerscape
141	  SoCs to work in Endpoint mode.
142	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
143	  determines which PCIe controller works in EP mode and which PCIe
144	  controller works in RC mode.
145
146config PCI_HISI
147	depends on OF && (ARM64 || COMPILE_TEST)
148	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller"
149	depends on PCI_MSI
150	select PCIE_DW_HOST
151	select PCI_HOST_COMMON
152	help
153	  Say Y here if you want PCIe controller support on HiSilicon
154	  Hip05 and Hip06 SoCs
155
156config PCIE_KIRIN
157	depends on OF && (ARM64 || COMPILE_TEST)
158	tristate "HiSilicon Kirin PCIe controller"
159	depends on PCI_MSI
160	select PCIE_DW_HOST
161	select REGMAP_MMIO
162	help
163	  Say Y here if you want PCIe controller support
164	  on HiSilicon Kirin series SoCs.
165
166config PCIE_HISI_STB
167	bool "HiSilicon STB PCIe controller"
168	depends on ARCH_HISI || COMPILE_TEST
169	depends on PCI_MSI
170	select PCIE_DW_HOST
171	help
172	  Say Y here if you want PCIe controller support on HiSilicon STB SoCs
173
174config PCIE_INTEL_GW
175	bool "Intel Gateway PCIe controller "
176	depends on OF && (X86 || COMPILE_TEST)
177	depends on PCI_MSI
178	select PCIE_DW_HOST
179	help
180	  Say 'Y' here to enable PCIe Host controller support on Intel
181	  Gateway SoCs.
182	  The PCIe controller uses the DesignWare core plus Intel-specific
183	  hardware wrappers.
184
185config PCIE_KEEMBAY
186	bool
187
188config PCIE_KEEMBAY_HOST
189	bool "Intel Keem Bay PCIe controller (host mode)"
190	depends on ARCH_KEEMBAY || COMPILE_TEST
191	depends on PCI_MSI
192	select PCIE_DW_HOST
193	select PCIE_KEEMBAY
194	help
195	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
196	  to work in host mode.
197	  The PCIe controller is based on DesignWare Hardware and uses
198	  DesignWare core functions.
199
200config PCIE_KEEMBAY_EP
201	bool "Intel Keem Bay PCIe controller (endpoint mode)"
202	depends on ARCH_KEEMBAY || COMPILE_TEST
203	depends on PCI_MSI
204	depends on PCI_ENDPOINT
205	select PCIE_DW_EP
206	select PCIE_KEEMBAY
207	help
208	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
209	  to work in endpoint mode.
210	  The PCIe controller is based on DesignWare Hardware and uses
211	  DesignWare core functions.
212
213config PCIE_ARMADA_8K
214	bool "Marvell Armada-8K PCIe controller"
215	depends on ARCH_MVEBU || COMPILE_TEST
216	depends on PCI_MSI
217	select PCIE_DW_HOST
218	help
219	  Say Y here if you want to enable PCIe controller support on
220	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
221	  DesignWare hardware and therefore the driver re-uses the
222	  DesignWare core functions to implement the driver.
223
224config PCIE_TEGRA194
225	tristate
226
227config PCIE_TEGRA194_HOST
228	tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)"
229	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
230	depends on PCI_MSI
231	select PCIE_DW_HOST
232	select PHY_TEGRA194_P2U
233	select PCIE_TEGRA194
234	help
235	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
236	  work in host mode. There are two instances of PCIe controllers in
237	  Tegra194. This controller can work either as EP or RC. In order to
238	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
239	  in order to enable device-specific features PCIE_TEGRA194_EP must be
240	  selected. This uses the DesignWare core.
241
242config PCIE_TEGRA194_EP
243	tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)"
244	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
245	depends on PCI_ENDPOINT
246	select PCIE_DW_EP
247	select PHY_TEGRA194_P2U
248	select PCIE_TEGRA194
249	help
250	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
251	  work in endpoint mode. There are two instances of PCIe controllers in
252	  Tegra194. This controller can work either as EP or RC. In order to
253	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
254	  in order to enable device-specific features PCIE_TEGRA194_EP must be
255	  selected. This uses the DesignWare core.
256
257config PCIE_DW_PLAT
258	bool
259
260config PCIE_DW_PLAT_HOST
261	bool "Platform bus based DesignWare PCIe controller (host mode)"
262	depends on PCI_MSI
263	select PCIE_DW_HOST
264	select PCIE_DW_PLAT
265	help
266	  Enables support for the PCIe controller in the Designware IP to
267	  work in host mode. There are two instances of PCIe controller in
268	  Designware IP.
269	  This controller can work either as EP or RC. In order to enable
270	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
271	  order to enable device-specific features PCI_DW_PLAT_EP must be
272	  selected.
273
274config PCIE_DW_PLAT_EP
275	bool "Platform bus based DesignWare PCIe controller (endpoint mode)"
276	depends on PCI && PCI_MSI
277	depends on PCI_ENDPOINT
278	select PCIE_DW_EP
279	select PCIE_DW_PLAT
280	help
281	  Enables support for the PCIe controller in the Designware IP to
282	  work in endpoint mode. There are two instances of PCIe controller
283	  in Designware IP.
284	  This controller can work either as EP or RC. In order to enable
285	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
286	  order to enable device-specific features PCI_DW_PLAT_EP must be
287	  selected.
288
289config PCIE_QCOM_COMMON
290	bool
291
292config PCIE_QCOM
293	bool "Qualcomm PCIe controller (host mode)"
294	depends on OF && (ARCH_QCOM || COMPILE_TEST)
295	depends on PCI_MSI
296	select PCIE_DW_HOST
297	select CRC8
298	select PCIE_QCOM_COMMON
299	select PCI_HOST_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