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