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