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