xref: /linux-6.15/drivers/pci/controller/dwc/Kconfig (revision 80c170d7)
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_HOST
10	bool
11	select PCIE_DW
12
13config PCIE_DW_EP
14	bool
15	select PCIE_DW
16
17config PCI_DRA7XX
18	tristate
19
20config PCI_DRA7XX_HOST
21	tristate "TI DRA7xx PCIe controller (host mode)"
22	depends on SOC_DRA7XX || COMPILE_TEST
23	depends on OF && HAS_IOMEM && TI_PIPE3
24	depends on PCI_MSI
25	select PCIE_DW_HOST
26	select PCI_DRA7XX
27	default y if SOC_DRA7XX
28	help
29	  Enables support for the PCIe controller in the DRA7xx SoC to work in
30	  host mode. There are two instances of PCIe controller in DRA7xx.
31	  This controller can work either as EP or RC. In order to enable
32	  host-specific features PCI_DRA7XX_HOST must be selected and in order
33	  to enable device-specific features PCI_DRA7XX_EP must be selected.
34	  This uses the DesignWare core.
35
36config PCI_DRA7XX_EP
37	tristate "TI DRA7xx PCIe controller (endpoint mode)"
38	depends on SOC_DRA7XX || COMPILE_TEST
39	depends on OF && HAS_IOMEM && TI_PIPE3
40	depends on PCI_ENDPOINT
41	select PCIE_DW_EP
42	select PCI_DRA7XX
43	help
44	  Enables support for the PCIe controller in the DRA7xx SoC to work in
45	  endpoint mode. There are two instances of PCIe controller in DRA7xx.
46	  This controller can work either as EP or RC. In order to enable
47	  host-specific features PCI_DRA7XX_HOST must be selected and in order
48	  to enable device-specific features PCI_DRA7XX_EP must be selected.
49	  This uses the DesignWare core.
50
51config PCIE_DW_PLAT
52	bool
53
54config PCIE_DW_PLAT_HOST
55	bool "Platform bus based DesignWare PCIe controller (host mode)"
56	depends on PCI_MSI
57	select PCIE_DW_HOST
58	select PCIE_DW_PLAT
59	help
60	  Enables support for the PCIe controller in the Designware IP to
61	  work in host mode. There are two instances of PCIe controller in
62	  Designware IP.
63	  This controller can work either as EP or RC. In order to enable
64	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
65	  order to enable device-specific features PCI_DW_PLAT_EP must be
66	  selected.
67
68config PCIE_DW_PLAT_EP
69	bool "Platform bus based DesignWare PCIe controller (endpoint mode)"
70	depends on PCI && PCI_MSI
71	depends on PCI_ENDPOINT
72	select PCIE_DW_EP
73	select PCIE_DW_PLAT
74	help
75	  Enables support for the PCIe controller in the Designware IP to
76	  work in endpoint mode. There are two instances of PCIe controller
77	  in Designware IP.
78	  This controller can work either as EP or RC. In order to enable
79	  host-specific features PCIE_DW_PLAT_HOST must be selected and in
80	  order to enable device-specific features PCI_DW_PLAT_EP must be
81	  selected.
82
83config PCI_EXYNOS
84	tristate "Samsung Exynos PCIe controller"
85	depends on ARCH_EXYNOS || COMPILE_TEST
86	depends on PCI_MSI
87	select PCIE_DW_HOST
88	help
89	  Enables support for the PCIe controller in the Samsung Exynos SoCs
90	  to work in host mode. The PCI controller is based on the DesignWare
91	  hardware and therefore the driver re-uses the DesignWare core
92	  functions to implement the driver.
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 PCIE_SPEAR13XX
122	bool "STMicroelectronics SPEAr PCIe controller"
123	depends on ARCH_SPEAR13XX || COMPILE_TEST
124	depends on PCI_MSI
125	select PCIE_DW_HOST
126	help
127	  Say Y here if you want PCIe support on SPEAr13XX SoCs.
128
129config PCI_KEYSTONE
130	bool
131
132config PCI_KEYSTONE_HOST
133	bool "TI Keystone PCIe controller (host mode)"
134	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
135	depends on PCI_MSI
136	select PCIE_DW_HOST
137	select PCI_KEYSTONE
138	help
139	  Enables support for the PCIe controller in the Keystone SoC to
140	  work in host mode. The PCI controller on Keystone is based on
141	  DesignWare hardware and therefore the driver re-uses the
142	  DesignWare core functions to implement the driver.
143
144config PCI_KEYSTONE_EP
145	bool "TI Keystone PCIe controller (endpoint mode)"
146	depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
147	depends on PCI_ENDPOINT
148	select PCIE_DW_EP
149	select PCI_KEYSTONE
150	help
151	  Enables support for the PCIe controller in the Keystone SoC to
152	  work in endpoint mode. The PCI controller on Keystone is based
153	  on DesignWare hardware and therefore the driver re-uses the
154	  DesignWare core functions to implement the driver.
155
156config PCI_LAYERSCAPE
157	bool "Freescale Layerscape PCIe controller (host mode)"
158	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
159	depends on PCI_MSI
160	select PCIE_DW_HOST
161	select MFD_SYSCON
162	help
163	  Say Y here if you want to enable PCIe controller support on Layerscape
164	  SoCs to work in Host mode.
165	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
166	  determines which PCIe controller works in EP mode and which PCIe
167	  controller works in RC mode.
168
169config PCI_LAYERSCAPE_EP
170	bool "Freescale Layerscape PCIe controller (endpoint mode)"
171	depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
172	depends on PCI_ENDPOINT
173	select PCIE_DW_EP
174	help
175	  Say Y here if you want to enable PCIe controller support on Layerscape
176	  SoCs to work in Endpoint mode.
177	  This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
178	  determines which PCIe controller works in EP mode and which PCIe
179	  controller works in RC mode.
180
181config PCI_HISI
182	depends on OF && (ARM64 || COMPILE_TEST)
183	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller"
184	depends on PCI_MSI
185	select PCIE_DW_HOST
186	select PCI_HOST_COMMON
187	help
188	  Say Y here if you want PCIe controller support on HiSilicon
189	  Hip05 and Hip06 SoCs
190
191config PCIE_QCOM
192	bool "Qualcomm PCIe controller (host mode)"
193	depends on OF && (ARCH_QCOM || COMPILE_TEST)
194	depends on PCI_MSI
195	select PCIE_DW_HOST
196	select CRC8
197	help
198	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
199	  PCIe controller uses the DesignWare core plus Qualcomm-specific
200	  hardware wrappers.
201
202config PCIE_QCOM_EP
203	tristate "Qualcomm PCIe controller (endpoint mode)"
204	depends on OF && (ARCH_QCOM || COMPILE_TEST)
205	depends on PCI_ENDPOINT
206	select PCIE_DW_EP
207	help
208	  Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
209	  to work in endpoint mode. The PCIe controller uses the DesignWare core
210	  plus Qualcomm-specific hardware wrappers.
211
212config PCIE_ARMADA_8K
213	bool "Marvell Armada-8K PCIe controller"
214	depends on ARCH_MVEBU || COMPILE_TEST
215	depends on PCI_MSI
216	select PCIE_DW_HOST
217	help
218	  Say Y here if you want to enable PCIe controller support on
219	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
220	  DesignWare hardware and therefore the driver re-uses the
221	  DesignWare core functions to implement the driver.
222
223config PCIE_ARTPEC6
224	bool
225
226config PCIE_ARTPEC6_HOST
227	bool "Axis ARTPEC-6 PCIe controller (host mode)"
228	depends on MACH_ARTPEC6 || COMPILE_TEST
229	depends on PCI_MSI
230	select PCIE_DW_HOST
231	select PCIE_ARTPEC6
232	help
233	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
234	  host mode. This uses the DesignWare core.
235
236config PCIE_ARTPEC6_EP
237	bool "Axis ARTPEC-6 PCIe controller (endpoint mode)"
238	depends on MACH_ARTPEC6 || COMPILE_TEST
239	depends on PCI_ENDPOINT
240	select PCIE_DW_EP
241	select PCIE_ARTPEC6
242	help
243	  Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
244	  endpoint mode. This uses the DesignWare core.
245
246config PCIE_BT1
247	tristate "Baikal-T1 PCIe controller"
248	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
249	depends on PCI_MSI
250	select PCIE_DW_HOST
251	help
252	  Enables support for the PCIe controller in the Baikal-T1 SoC to work
253	  in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core.
254
255config PCIE_ROCKCHIP_DW_HOST
256	bool "Rockchip DesignWare PCIe controller"
257	select PCIE_DW
258	select PCIE_DW_HOST
259	depends on PCI_MSI
260	depends on ARCH_ROCKCHIP || COMPILE_TEST
261	depends on OF
262	help
263	  Enables support for the DesignWare PCIe controller in the
264	  Rockchip SoC except RK3399.
265
266config PCIE_INTEL_GW
267	bool "Intel Gateway PCIe controller "
268	depends on OF && (X86 || COMPILE_TEST)
269	depends on PCI_MSI
270	select PCIE_DW_HOST
271	help
272	  Say 'Y' here to enable PCIe Host controller support on Intel
273	  Gateway SoCs.
274	  The PCIe controller uses the DesignWare core plus Intel-specific
275	  hardware wrappers.
276
277config PCIE_KEEMBAY
278	bool
279
280config PCIE_KEEMBAY_HOST
281	bool "Intel Keem Bay PCIe controller (host mode)"
282	depends on ARCH_KEEMBAY || COMPILE_TEST
283	depends on PCI_MSI
284	select PCIE_DW_HOST
285	select PCIE_KEEMBAY
286	help
287	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
288	  to work in host mode.
289	  The PCIe controller is based on DesignWare Hardware and uses
290	  DesignWare core functions.
291
292config PCIE_KEEMBAY_EP
293	bool "Intel Keem Bay PCIe controller (endpoint mode)"
294	depends on ARCH_KEEMBAY || COMPILE_TEST
295	depends on PCI_MSI
296	depends on PCI_ENDPOINT
297	select PCIE_DW_EP
298	select PCIE_KEEMBAY
299	help
300	  Say 'Y' here to enable support for the PCIe controller in Keem Bay
301	  to work in endpoint mode.
302	  The PCIe controller is based on DesignWare Hardware and uses
303	  DesignWare core functions.
304
305config PCIE_KIRIN
306	depends on OF && (ARM64 || COMPILE_TEST)
307	tristate "HiSilicon Kirin PCIe controller"
308	depends on PCI_MSI
309	select PCIE_DW_HOST
310	select REGMAP_MMIO
311	help
312	  Say Y here if you want PCIe controller support
313	  on HiSilicon Kirin series SoCs.
314
315config PCIE_HISI_STB
316	bool "HiSilicon STB PCIe controller"
317	depends on ARCH_HISI || COMPILE_TEST
318	depends on PCI_MSI
319	select PCIE_DW_HOST
320	help
321	  Say Y here if you want PCIe controller support on HiSilicon STB SoCs
322
323config PCI_MESON
324	tristate "Amlogic Meson PCIe controller"
325	default m if ARCH_MESON
326	depends on PCI_MSI
327	select PCIE_DW_HOST
328	help
329	  Say Y here if you want to enable PCI controller support on Amlogic
330	  SoCs. The PCI controller on Amlogic is based on DesignWare hardware
331	  and therefore the driver re-uses the DesignWare core functions to
332	  implement the driver.
333
334config PCIE_TEGRA194
335	tristate
336
337config PCIE_TEGRA194_HOST
338	tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)"
339	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
340	depends on PCI_MSI
341	select PCIE_DW_HOST
342	select PHY_TEGRA194_P2U
343	select PCIE_TEGRA194
344	help
345	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
346	  work in host mode. There are two instances of PCIe controllers in
347	  Tegra194. This controller can work either as EP or RC. In order to
348	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
349	  in order to enable device-specific features PCIE_TEGRA194_EP must be
350	  selected. This uses the DesignWare core.
351
352config PCIE_TEGRA194_EP
353	tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)"
354	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
355	depends on PCI_ENDPOINT
356	select PCIE_DW_EP
357	select PHY_TEGRA194_P2U
358	select PCIE_TEGRA194
359	help
360	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
361	  work in endpoint mode. There are two instances of PCIe controllers in
362	  Tegra194. This controller can work either as EP or RC. In order to
363	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
364	  in order to enable device-specific features PCIE_TEGRA194_EP must be
365	  selected. This uses the DesignWare core.
366
367config PCIE_VISCONTI_HOST
368	bool "Toshiba Visconti PCIe controller"
369	depends on ARCH_VISCONTI || COMPILE_TEST
370	depends on PCI_MSI
371	select PCIE_DW_HOST
372	help
373	  Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
374	  This driver supports TMPV7708 SoC.
375
376config PCIE_UNIPHIER
377	bool "Socionext UniPhier PCIe controller (host mode)"
378	depends on ARCH_UNIPHIER || COMPILE_TEST
379	depends on OF && HAS_IOMEM
380	depends on PCI_MSI
381	select PCIE_DW_HOST
382	help
383	  Say Y here if you want PCIe host controller support on UniPhier SoCs.
384	  This driver supports LD20 and PXs3 SoCs.
385
386config PCIE_UNIPHIER_EP
387	bool "Socionext UniPhier PCIe controller (endpoint mode)"
388	depends on ARCH_UNIPHIER || COMPILE_TEST
389	depends on OF && HAS_IOMEM
390	depends on PCI_ENDPOINT
391	select PCIE_DW_EP
392	help
393	  Say Y here if you want PCIe endpoint controller support on
394	  UniPhier SoCs. This driver supports Pro5 SoC.
395
396config PCIE_AL
397	bool "Amazon Annapurna Labs PCIe controller"
398	depends on OF && (ARM64 || COMPILE_TEST)
399	depends on PCI_MSI
400	select PCIE_DW_HOST
401	select PCI_ECAM
402	help
403	  Say Y here to enable support of the Amazon's Annapurna Labs PCIe
404	  controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
405	  core plus Annapurna Labs proprietary hardware wrappers. This is
406	  required only for DT-based platforms. ACPI platforms with the
407	  Annapurna Labs PCIe controller don't need to enable this.
408
409config PCIE_FU740
410	bool "SiFive FU740 PCIe controller"
411	depends on PCI_MSI
412	depends on SOC_SIFIVE || COMPILE_TEST
413	select PCIE_DW_HOST
414	help
415	  Say Y here if you want PCIe controller support for the SiFive
416	  FU740.
417
418endmenu
419