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