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 ARM && 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 || COMPILE_TEST 263 depends on ARM 264 help 265 Say Y here if you want internal PCI support on R-Car Gen2 SoC. 266 There are 3 internal PCI controllers available with a single 267 built-in EHCI/OHCI host controller present on each one. 268 269config PCIE_ROCKCHIP 270 bool 271 depends on PCI 272 273config PCIE_ROCKCHIP_HOST 274 tristate "Rockchip PCIe controller (host mode)" 275 depends on ARCH_ROCKCHIP || COMPILE_TEST 276 depends on OF 277 depends on PCI_MSI 278 select MFD_SYSCON 279 select PCIE_ROCKCHIP 280 help 281 Say Y here if you want internal PCI support on Rockchip SoC. 282 There is 1 internal PCIe port available to support GEN2 with 283 4 slots. 284 285config PCIE_ROCKCHIP_EP 286 bool "Rockchip PCIe controller (endpoint mode)" 287 depends on ARCH_ROCKCHIP || COMPILE_TEST 288 depends on OF 289 depends on PCI_ENDPOINT 290 select MFD_SYSCON 291 select PCIE_ROCKCHIP 292 help 293 Say Y here if you want to support Rockchip PCIe controller in 294 endpoint mode on Rockchip SoC. There is 1 internal PCIe port 295 available to support GEN2 with 4 slots. 296 297config PCI_V3_SEMI 298 bool "V3 Semiconductor PCI controller" 299 depends on OF 300 depends on ARM || COMPILE_TEST 301 default ARCH_INTEGRATOR_AP 302 303config PCI_XGENE 304 bool "X-Gene PCIe controller" 305 depends on ARM64 || COMPILE_TEST 306 depends on OF || (ACPI && PCI_QUIRKS) 307 help 308 Say Y here if you want internal PCI support on APM X-Gene SoC. 309 There are 5 internal PCIe ports available. Each port is GEN3 capable 310 and have varied lanes from x1 to x8. 311 312config PCI_XGENE_MSI 313 bool "X-Gene v1 PCIe MSI feature" 314 depends on PCI_XGENE 315 depends on PCI_MSI 316 select IRQ_MSI_LIB 317 default y 318 help 319 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. 320 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. 321 322config PCIE_XILINX 323 bool "Xilinx AXI PCIe controller" 324 depends on OF 325 depends on PCI_MSI 326 select IRQ_MSI_LIB 327 help 328 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe 329 Host Bridge driver. 330 331config PCIE_XILINX_DMA_PL 332 bool "Xilinx DMA PL PCIe host bridge support" 333 depends on ARCH_ZYNQMP || COMPILE_TEST 334 depends on PCI_MSI 335 select PCI_HOST_COMMON 336 select IRQ_MSI_LIB 337 help 338 Say 'Y' here if you want kernel support for the Xilinx PL DMA 339 PCIe host bridge. The controller is a Soft IP which can act as 340 Root Port. If your system provides Xilinx PCIe host controller 341 bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'. 342 343config PCIE_XILINX_NWL 344 bool "Xilinx NWL PCIe controller" 345 depends on ARCH_ZYNQMP || COMPILE_TEST 346 depends on PCI_MSI 347 select IRQ_MSI_LIB 348 help 349 Say 'Y' here if you want kernel support for Xilinx 350 NWL PCIe controller. The controller can act as Root Port 351 or End Point. The current option selection will only 352 support root port enabling. 353 354config PCIE_XILINX_CPM 355 bool "Xilinx Versal CPM PCI controller" 356 depends on ARCH_ZYNQMP || COMPILE_TEST 357 select PCI_HOST_COMMON 358 help 359 Say 'Y' here if you want kernel support for the 360 Xilinx Versal CPM host bridge. 361 362source "drivers/pci/controller/cadence/Kconfig" 363source "drivers/pci/controller/dwc/Kconfig" 364source "drivers/pci/controller/mobiveil/Kconfig" 365source "drivers/pci/controller/plda/Kconfig" 366endmenu 367