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