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