1# SPDX-License-Identifier: GPL-2.0
2
3menu "PCI controller drivers"
4	depends on PCI
5
6config PCI_MVEBU
7	tristate "Marvell EBU PCIe controller"
8	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
9	depends on MVEBU_MBUS
10	depends on ARM
11	depends on OF
12	select PCI_BRIDGE_EMUL
13	help
14	 Add support for Marvell EBU PCIe controller. This PCIe controller
15	 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
16	 Armada XP, Armada 375, Armada 38x and Armada 39x.
17
18config PCI_AARDVARK
19	tristate "Aardvark PCIe controller"
20	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
21	depends on OF
22	depends on PCI_MSI_IRQ_DOMAIN
23	select PCI_BRIDGE_EMUL
24	help
25	 Add support for Aardvark 64bit PCIe Host Controller. This
26	 controller is part of the South Bridge of the Marvel Armada
27	 3700 SoC.
28
29config PCIE_XILINX_NWL
30	bool "NWL PCIe Core"
31	depends on ARCH_ZYNQMP || COMPILE_TEST
32	depends on PCI_MSI_IRQ_DOMAIN
33	help
34	 Say 'Y' here if you want kernel support for Xilinx
35	 NWL PCIe controller. The controller can act as Root Port
36	 or End Point. The current option selection will only
37	 support root port enabling.
38
39config PCI_FTPCI100
40	bool "Faraday Technology FTPCI100 PCI controller"
41	depends on OF
42	default ARCH_GEMINI
43
44config PCI_IXP4XX
45	bool "Intel IXP4xx PCI controller"
46	depends on ARM && OF
47	depends on ARCH_IXP4XX || COMPILE_TEST
48	default ARCH_IXP4XX
49	help
50	  Say Y here if you want support for the PCI host controller found
51	  in the Intel IXP4xx XScale-based network processor SoC.
52
53config PCI_TEGRA
54	bool "NVIDIA Tegra PCIe controller"
55	depends on ARCH_TEGRA || COMPILE_TEST
56	depends on PCI_MSI_IRQ_DOMAIN
57	help
58	  Say Y here if you want support for the PCIe host controller found
59	  on NVIDIA Tegra SoCs.
60
61config PCI_RCAR_GEN2
62	bool "Renesas R-Car Gen2 Internal PCI controller"
63	depends on ARCH_RENESAS || COMPILE_TEST
64	depends on ARM
65	help
66	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
67	  There are 3 internal PCI controllers available with a single
68	  built-in EHCI/OHCI host controller present on each one.
69
70config PCIE_RCAR_HOST
71	bool "Renesas R-Car PCIe host controller"
72	depends on ARCH_RENESAS || COMPILE_TEST
73	depends on PCI_MSI_IRQ_DOMAIN
74	help
75	  Say Y here if you want PCIe controller support on R-Car SoCs in host
76	  mode.
77
78config PCIE_RCAR_EP
79	bool "Renesas R-Car PCIe endpoint controller"
80	depends on ARCH_RENESAS || COMPILE_TEST
81	depends on PCI_ENDPOINT
82	help
83	  Say Y here if you want PCIe controller support on R-Car SoCs in
84	  endpoint mode.
85
86config PCI_HOST_COMMON
87	tristate
88	select PCI_ECAM
89
90config PCI_HOST_GENERIC
91	tristate "Generic PCI host controller"
92	depends on OF
93	select PCI_HOST_COMMON
94	select IRQ_DOMAIN
95	help
96	  Say Y here if you want to support a simple generic PCI host
97	  controller, such as the one emulated by kvmtool.
98
99config PCIE_XILINX
100	bool "Xilinx AXI PCIe host bridge support"
101	depends on OF || COMPILE_TEST
102	depends on PCI_MSI_IRQ_DOMAIN
103	help
104	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
105	  Host Bridge driver.
106
107config PCIE_XILINX_CPM
108	bool "Xilinx Versal CPM host bridge support"
109	depends on ARCH_ZYNQMP || COMPILE_TEST
110	select PCI_HOST_COMMON
111	help
112	  Say 'Y' here if you want kernel support for the
113	  Xilinx Versal CPM host bridge.
114
115config PCI_XGENE
116	bool "X-Gene PCIe controller"
117	depends on ARM64 || COMPILE_TEST
118	depends on OF || (ACPI && PCI_QUIRKS)
119	help
120	  Say Y here if you want internal PCI support on APM X-Gene SoC.
121	  There are 5 internal PCIe ports available. Each port is GEN3 capable
122	  and have varied lanes from x1 to x8.
123
124config PCI_XGENE_MSI
125	bool "X-Gene v1 PCIe MSI feature"
126	depends on PCI_XGENE
127	depends on PCI_MSI_IRQ_DOMAIN
128	default y
129	help
130	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
131	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
132
133config PCI_V3_SEMI
134	bool "V3 Semiconductor PCI controller"
135	depends on OF
136	depends on ARM || COMPILE_TEST
137	default ARCH_INTEGRATOR_AP
138
139config PCI_VERSATILE
140	bool "ARM Versatile PB PCI controller"
141	depends on ARCH_VERSATILE || COMPILE_TEST
142
143config PCIE_IPROC
144	tristate
145	help
146	  This enables the iProc PCIe core controller support for Broadcom's
147	  iProc family of SoCs. An appropriate bus interface driver needs
148	  to be enabled to select this.
149
150config PCIE_IPROC_PLATFORM
151	tristate "Broadcom iProc PCIe platform bus driver"
152	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
153	depends on OF
154	select PCIE_IPROC
155	default ARCH_BCM_IPROC
156	help
157	  Say Y here if you want to use the Broadcom iProc PCIe controller
158	  through the generic platform bus interface
159
160config PCIE_IPROC_BCMA
161	tristate "Broadcom iProc PCIe BCMA bus driver"
162	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
163	select PCIE_IPROC
164	select BCMA
165	default ARCH_BCM_5301X
166	help
167	  Say Y here if you want to use the Broadcom iProc PCIe controller
168	  through the BCMA bus interface
169
170config PCIE_IPROC_MSI
171	bool "Broadcom iProc PCIe MSI support"
172	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
173	depends on PCI_MSI_IRQ_DOMAIN
174	default ARCH_BCM_IPROC
175	help
176	  Say Y here if you want to enable MSI support for Broadcom's iProc
177	  PCIe controller
178
179config PCIE_ALTERA
180	tristate "Altera PCIe controller"
181	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
182	help
183	  Say Y here if you want to enable PCIe controller support on Altera
184	  FPGA.
185
186config PCIE_ALTERA_MSI
187	tristate "Altera PCIe MSI feature"
188	depends on PCIE_ALTERA
189	depends on PCI_MSI_IRQ_DOMAIN
190	help
191	  Say Y here if you want PCIe MSI support for the Altera FPGA.
192	  This MSI driver supports Altera MSI to GIC controller IP.
193
194config PCI_HOST_THUNDER_PEM
195	bool "Cavium Thunder PCIe controller to off-chip devices"
196	depends on ARM64 || COMPILE_TEST
197	depends on OF || (ACPI && PCI_QUIRKS)
198	select PCI_HOST_COMMON
199	help
200	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
201
202config PCI_HOST_THUNDER_ECAM
203	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
204	depends on ARM64 || COMPILE_TEST
205	depends on OF || (ACPI && PCI_QUIRKS)
206	select PCI_HOST_COMMON
207	help
208	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
209
210config PCIE_ROCKCHIP
211	bool
212	depends on PCI
213
214config PCIE_ROCKCHIP_HOST
215	tristate "Rockchip PCIe host controller"
216	depends on ARCH_ROCKCHIP || COMPILE_TEST
217	depends on OF
218	depends on PCI_MSI_IRQ_DOMAIN
219	select MFD_SYSCON
220	select PCIE_ROCKCHIP
221	help
222	  Say Y here if you want internal PCI support on Rockchip SoC.
223	  There is 1 internal PCIe port available to support GEN2 with
224	  4 slots.
225
226config PCIE_ROCKCHIP_EP
227	bool "Rockchip PCIe endpoint controller"
228	depends on ARCH_ROCKCHIP || COMPILE_TEST
229	depends on OF
230	depends on PCI_ENDPOINT
231	select MFD_SYSCON
232	select PCIE_ROCKCHIP
233	help
234	  Say Y here if you want to support Rockchip PCIe controller in
235	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
236	  available to support GEN2 with 4 slots.
237
238config PCIE_MEDIATEK
239	tristate "MediaTek PCIe controller"
240	depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
241	depends on OF
242	depends on PCI_MSI_IRQ_DOMAIN
243	help
244	  Say Y here if you want to enable PCIe controller support on
245	  MediaTek SoCs.
246
247config PCIE_MEDIATEK_GEN3
248	tristate "MediaTek Gen3 PCIe controller"
249	depends on ARCH_MEDIATEK || COMPILE_TEST
250	depends on PCI_MSI_IRQ_DOMAIN
251	help
252	  Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
253	  This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
254	  and support up to 256 MSI interrupt numbers for
255	  multi-function devices.
256
257	  Say Y here if you want to enable Gen3 PCIe controller support on
258	  MediaTek SoCs.
259
260config VMD
261	depends on PCI_MSI && X86_64 && SRCU && !UML
262	tristate "Intel Volume Management Device Driver"
263	help
264	  Adds support for the Intel Volume Management Device (VMD). VMD is a
265	  secondary PCI host bridge that allows PCI Express root ports,
266	  and devices attached to them, to be removed from the default
267	  PCI domain and placed within the VMD domain. This provides
268	  more bus resources than are otherwise possible with a
269	  single domain. If you know your system provides one of these and
270	  has devices attached to it, say Y; if you are not sure, say N.
271
272	  To compile this driver as a module, choose M here: the
273	  module will be called vmd.
274
275config PCIE_BRCMSTB
276	tristate "Broadcom Brcmstb PCIe host controller"
277	depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
278		   BMIPS_GENERIC || COMPILE_TEST
279	depends on OF
280	depends on PCI_MSI_IRQ_DOMAIN
281	default ARCH_BRCMSTB || BMIPS_GENERIC
282	help
283	  Say Y here to enable PCIe host controller support for
284	  Broadcom STB based SoCs, like the Raspberry Pi 4.
285
286config PCI_HYPERV_INTERFACE
287	tristate "Hyper-V PCI Interface"
288	depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN
289	help
290	  The Hyper-V PCI Interface is a helper driver allows other drivers to
291	  have a common interface with the Hyper-V PCI frontend driver.
292
293config PCI_LOONGSON
294	bool "LOONGSON PCI Controller"
295	depends on MACH_LOONGSON64 || COMPILE_TEST
296	depends on OF || ACPI
297	depends on PCI_QUIRKS
298	default MACH_LOONGSON64
299	help
300	  Say Y here if you want to enable PCI controller support on
301	  Loongson systems.
302
303config PCIE_MICROCHIP_HOST
304	bool "Microchip AXI PCIe host bridge support"
305	depends on PCI_MSI && OF
306	select PCI_MSI_IRQ_DOMAIN
307	select GENERIC_MSI_IRQ_DOMAIN
308	select PCI_HOST_COMMON
309	help
310	  Say Y here if you want kernel to support the Microchip AXI PCIe
311	  Host Bridge driver.
312
313config PCIE_HISI_ERR
314	depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
315	bool "HiSilicon HIP PCIe controller error handling driver"
316	help
317	  Say Y here if you want error handling support
318	  for the PCIe controller's errors on HiSilicon HIP SoCs
319
320config PCIE_APPLE_MSI_DOORBELL_ADDR
321	hex
322	default 0xfffff000
323	depends on PCIE_APPLE
324
325config PCIE_APPLE
326	tristate "Apple PCIe controller"
327	depends on ARCH_APPLE || COMPILE_TEST
328	depends on OF
329	depends on PCI_MSI_IRQ_DOMAIN
330	select PCI_HOST_COMMON
331	help
332	  Say Y here if you want to enable PCIe controller support on Apple
333	  system-on-chips, like the Apple M1. This is required for the USB
334	  type-A ports, Ethernet, Wi-Fi, and Bluetooth.
335
336	  If unsure, say Y if you have an Apple Silicon system.
337
338config PCIE_MT7621
339	tristate "MediaTek MT7621 PCIe Controller"
340	depends on SOC_MT7621 || COMPILE_TEST
341	select PHY_MT7621_PCI
342	default SOC_MT7621
343	help
344	  This selects a driver for the MediaTek MT7621 PCIe Controller.
345
346source "drivers/pci/controller/dwc/Kconfig"
347source "drivers/pci/controller/mobiveil/Kconfig"
348source "drivers/pci/controller/cadence/Kconfig"
349endmenu
350