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