1 # SPDX-License-Identifier: GPL-2.0
3 menu "PCI controller drivers"
7 tristate "Marvell EBU PCIe controller"
8 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
12 select PCI_BRIDGE_EMUL
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.
19 tristate "Aardvark PCIe controller"
20 depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
22 depends on PCI_MSI_IRQ_DOMAIN
23 select PCI_BRIDGE_EMUL
25 Add support for Aardvark 64bit PCIe Host Controller. This
26 controller is part of the South Bridge of the Marvel Armada
29 config PCIE_XILINX_NWL
31 depends on ARCH_ZYNQMP || COMPILE_TEST
32 depends on PCI_MSI_IRQ_DOMAIN
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.
40 bool "Faraday Technology FTPCI100 PCI controller"
45 bool "Intel IXP4xx PCI controller"
47 depends on ARCH_IXP4XX || COMPILE_TEST
50 Say Y here if you want support for the PCI host controller found
51 in the Intel IXP4xx XScale-based network processor SoC.
54 bool "NVIDIA Tegra PCIe controller"
55 depends on ARCH_TEGRA || COMPILE_TEST
56 depends on PCI_MSI_IRQ_DOMAIN
58 Say Y here if you want support for the PCIe host controller found
62 bool "Renesas R-Car Gen2 Internal PCI controller"
63 depends on ARCH_RENESAS || COMPILE_TEST
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.
71 bool "Renesas R-Car PCIe host controller"
72 depends on ARCH_RENESAS || COMPILE_TEST
73 depends on PCI_MSI_IRQ_DOMAIN
75 Say Y here if you want PCIe controller support on R-Car SoCs in host
79 bool "Renesas R-Car PCIe endpoint controller"
80 depends on ARCH_RENESAS || COMPILE_TEST
81 depends on PCI_ENDPOINT
83 Say Y here if you want PCIe controller support on R-Car SoCs in
86 config PCI_HOST_COMMON
90 config PCI_HOST_GENERIC
91 tristate "Generic PCI host controller"
93 select PCI_HOST_COMMON
96 Say Y here if you want to support a simple generic PCI host
97 controller, such as the one emulated by kvmtool.
100 bool "Xilinx AXI PCIe host bridge support"
101 depends on OF || COMPILE_TEST
102 depends on PCI_MSI_IRQ_DOMAIN
104 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
107 config PCIE_XILINX_CPM
108 bool "Xilinx Versal CPM host bridge support"
109 depends on ARCH_ZYNQMP || COMPILE_TEST
110 select PCI_HOST_COMMON
112 Say 'Y' here if you want kernel support for the
113 Xilinx Versal CPM host bridge.
116 bool "X-Gene PCIe controller"
117 depends on ARM64 || COMPILE_TEST
118 depends on OF || (ACPI && PCI_QUIRKS)
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.
125 bool "X-Gene v1 PCIe MSI feature"
127 depends on PCI_MSI_IRQ_DOMAIN
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.
134 bool "V3 Semiconductor PCI controller"
136 depends on ARM || COMPILE_TEST
137 default ARCH_INTEGRATOR_AP
140 bool "ARM Versatile PB PCI controller"
141 depends on ARCH_VERSATILE || COMPILE_TEST
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.
150 config PCIE_IPROC_PLATFORM
151 tristate "Broadcom iProc PCIe platform bus driver"
152 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
155 default ARCH_BCM_IPROC
157 Say Y here if you want to use the Broadcom iProc PCIe controller
158 through the generic platform bus interface
160 config PCIE_IPROC_BCMA
161 tristate "Broadcom iProc PCIe BCMA bus driver"
162 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
165 default ARCH_BCM_5301X
167 Say Y here if you want to use the Broadcom iProc PCIe controller
168 through the BCMA bus interface
170 config 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
176 Say Y here if you want to enable MSI support for Broadcom's iProc
180 tristate "Altera PCIe controller"
181 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
183 Say Y here if you want to enable PCIe controller support on Altera
186 config PCIE_ALTERA_MSI
187 tristate "Altera PCIe MSI feature"
188 depends on PCIE_ALTERA
189 depends on PCI_MSI_IRQ_DOMAIN
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.
194 config 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
200 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
202 config 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
208 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
214 config PCIE_ROCKCHIP_HOST
215 tristate "Rockchip PCIe host controller"
216 depends on ARCH_ROCKCHIP || COMPILE_TEST
218 depends on PCI_MSI_IRQ_DOMAIN
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
226 config PCIE_ROCKCHIP_EP
227 bool "Rockchip PCIe endpoint controller"
228 depends on ARCH_ROCKCHIP || COMPILE_TEST
230 depends on PCI_ENDPOINT
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.
239 tristate "MediaTek PCIe controller"
240 depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
242 depends on PCI_MSI_IRQ_DOMAIN
244 Say Y here if you want to enable PCIe controller support on
247 config PCIE_MEDIATEK_GEN3
248 tristate "MediaTek Gen3 PCIe controller"
249 depends on ARCH_MEDIATEK || COMPILE_TEST
250 depends on PCI_MSI_IRQ_DOMAIN
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.
257 Say Y here if you want to enable Gen3 PCIe controller support on
261 depends on PCI_MSI && X86_64 && SRCU && !UML
262 tristate "Intel Volume Management Device Driver"
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.
272 To compile this driver as a module, choose M here: the
273 module will be called vmd.
276 tristate "Broadcom Brcmstb PCIe host controller"
277 depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || \
278 BMIPS_GENERIC || COMPILE_TEST
280 depends on PCI_MSI_IRQ_DOMAIN
281 default ARCH_BRCMSTB || BMIPS_GENERIC
283 Say Y here to enable PCIe host controller support for
284 Broadcom STB based SoCs, like the Raspberry Pi 4.
286 config PCI_HYPERV_INTERFACE
287 tristate "Hyper-V PCI Interface"
288 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN
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.
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
300 Say Y here if you want to enable PCI controller support on
303 config 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
310 Say Y here if you want kernel to support the Microchip AXI PCIe
314 depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
315 bool "HiSilicon HIP PCIe controller error handling driver"
317 Say Y here if you want error handling support
318 for the PCIe controller's errors on HiSilicon HIP SoCs
320 config PCIE_APPLE_MSI_DOORBELL_ADDR
323 depends on PCIE_APPLE
326 tristate "Apple PCIe controller"
327 depends on ARCH_APPLE || COMPILE_TEST
329 depends on PCI_MSI_IRQ_DOMAIN
330 select PCI_HOST_COMMON
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.
336 If unsure, say Y if you have an Apple Silicon system.
339 tristate "MediaTek MT7621 PCIe Controller"
340 depends on SOC_MT7621 || COMPILE_TEST
341 select PHY_MT7621_PCI
344 This selects a driver for the MediaTek MT7621 PCIe Controller.
346 source "drivers/pci/controller/dwc/Kconfig"
347 source "drivers/pci/controller/mobiveil/Kconfig"
348 source "drivers/pci/controller/cadence/Kconfig"