1# SPDX-License-Identifier: GPL-2.0
2
3menu "DesignWare PCI Core Support"
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 "PCI Keystone 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 "PCI Keystone 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 controllers"
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"
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 host controller support"
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 series SoCs PCIe controllers"
308	depends on PCI_MSI
309	select PCIE_DW_HOST
310	help
311	  Say Y here if you want PCIe controller support
312	  on HiSilicon Kirin series SoCs.
313
314config PCIE_HISI_STB
315	bool "HiSilicon STB SoCs PCIe controllers"
316	depends on ARCH_HISI || COMPILE_TEST
317	depends on PCI_MSI
318	select PCIE_DW_HOST
319	help
320	  Say Y here if you want PCIe controller support on HiSilicon STB SoCs
321
322config PCI_MESON
323	tristate "MESON PCIe controller"
324	default m if ARCH_MESON
325	depends on PCI_MSI
326	select PCIE_DW_HOST
327	help
328	  Say Y here if you want to enable PCI controller support on Amlogic
329	  SoCs. The PCI controller on Amlogic is based on DesignWare hardware
330	  and therefore the driver re-uses the DesignWare core functions to
331	  implement the driver.
332
333config PCIE_TEGRA194
334	tristate
335
336config PCIE_TEGRA194_HOST
337	tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode"
338	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
339	depends on PCI_MSI
340	select PCIE_DW_HOST
341	select PHY_TEGRA194_P2U
342	select PCIE_TEGRA194
343	help
344	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
345	  work in host mode. There are two instances of PCIe controllers in
346	  Tegra194. This controller can work either as EP or RC. In order to
347	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
348	  in order to enable device-specific features PCIE_TEGRA194_EP must be
349	  selected. This uses the DesignWare core.
350
351config PCIE_TEGRA194_EP
352	tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode"
353	depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
354	depends on PCI_ENDPOINT
355	select PCIE_DW_EP
356	select PHY_TEGRA194_P2U
357	select PCIE_TEGRA194
358	help
359	  Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
360	  work in endpoint mode. There are two instances of PCIe controllers in
361	  Tegra194. This controller can work either as EP or RC. In order to
362	  enable host-specific features PCIE_TEGRA194_HOST must be selected and
363	  in order to enable device-specific features PCIE_TEGRA194_EP must be
364	  selected. This uses the DesignWare core.
365
366config PCIE_VISCONTI_HOST
367	bool "Toshiba Visconti PCIe controllers"
368	depends on ARCH_VISCONTI || COMPILE_TEST
369	depends on PCI_MSI
370	select PCIE_DW_HOST
371	help
372	  Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
373	  This driver supports TMPV7708 SoC.
374
375config PCIE_UNIPHIER
376	bool "Socionext UniPhier PCIe host controllers"
377	depends on ARCH_UNIPHIER || COMPILE_TEST
378	depends on OF && HAS_IOMEM
379	depends on PCI_MSI
380	select PCIE_DW_HOST
381	help
382	  Say Y here if you want PCIe host controller support on UniPhier SoCs.
383	  This driver supports LD20 and PXs3 SoCs.
384
385config PCIE_UNIPHIER_EP
386	bool "Socionext UniPhier PCIe endpoint controllers"
387	depends on ARCH_UNIPHIER || COMPILE_TEST
388	depends on OF && HAS_IOMEM
389	depends on PCI_ENDPOINT
390	select PCIE_DW_EP
391	help
392	  Say Y here if you want PCIe endpoint controller support on
393	  UniPhier SoCs. This driver supports Pro5 SoC.
394
395config PCIE_AL
396	bool "Amazon Annapurna Labs PCIe controller"
397	depends on OF && (ARM64 || COMPILE_TEST)
398	depends on PCI_MSI
399	select PCIE_DW_HOST
400	select PCI_ECAM
401	help
402	  Say Y here to enable support of the Amazon's Annapurna Labs PCIe
403	  controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
404	  core plus Annapurna Labs proprietary hardware wrappers. This is
405	  required only for DT-based platforms. ACPI platforms with the
406	  Annapurna Labs PCIe controller don't need to enable this.
407
408config PCIE_FU740
409	bool "SiFive FU740 PCIe host controller"
410	depends on PCI_MSI
411	depends on SOC_SIFIVE || COMPILE_TEST
412	select PCIE_DW_HOST
413	help
414	  Say Y here if you want PCIe controller support for the SiFive
415	  FU740.
416
417endmenu
418