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 select PCI_PWRCTRL_GENERIC 226 help 227 Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. 228 This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, 229 and support up to 256 MSI interrupt numbers for 230 multi-function devices. 231 232 Say Y here if you want to enable Gen3 PCIe controller support on 233 MediaTek SoCs. 234 235config PCIE_MT7621 236 tristate "MediaTek MT7621 PCIe controller" 237 depends on SOC_MT7621 || COMPILE_TEST 238 select PHY_MT7621_PCI 239 default SOC_MT7621 240 help 241 This selects a driver for the MediaTek MT7621 PCIe Controller. 242 243config PCI_HYPERV_INTERFACE 244 tristate "Microsoft Hyper-V PCI Interface" 245 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI 246 help 247 The Hyper-V PCI Interface is a helper driver that allows other 248 drivers to have a common interface with the Hyper-V PCI frontend 249 driver. 250 251config PCI_TEGRA 252 tristate "NVIDIA Tegra PCIe controller" 253 depends on ARCH_TEGRA || COMPILE_TEST 254 depends on PCI_MSI 255 select IRQ_MSI_LIB 256 help 257 Say Y here if you want support for the PCIe host controller found 258 on NVIDIA Tegra SoCs. 259 260config PCIE_RCAR_HOST 261 bool "Renesas R-Car PCIe controller (host mode)" 262 depends on ARCH_RENESAS || COMPILE_TEST 263 depends on OF 264 depends on PCI_MSI 265 select IRQ_MSI_LIB 266 help 267 Say Y here if you want PCIe controller support on R-Car SoCs in host 268 mode. 269 270config PCIE_RCAR_EP 271 bool "Renesas R-Car PCIe controller (endpoint mode)" 272 depends on ARCH_RENESAS || COMPILE_TEST 273 depends on PCI_ENDPOINT 274 help 275 Say Y here if you want PCIe controller support on R-Car SoCs in 276 endpoint mode. 277 278config PCI_RCAR_GEN2 279 bool "Renesas R-Car Gen2 Internal PCI controller" 280 depends on (ARCH_RENESAS && ARM) || COMPILE_TEST 281 help 282 Say Y here if you want internal PCI support on R-Car Gen2 SoC. 283 Each internal PCI controller contains a single built-in EHCI/OHCI 284 host controller. 285 286config PCIE_RENESAS_RZG3S_HOST 287 bool "Renesas RZ/G3S PCIe host controller" 288 depends on ARCH_RENESAS || COMPILE_TEST 289 select MFD_SYSCON 290 select IRQ_MSI_LIB 291 help 292 Say Y here if you want PCIe host controller support on Renesas RZ/G3S 293 SoC. 294 295config PCIE_ROCKCHIP 296 bool 297 depends on PCI 298 299config PCIE_ROCKCHIP_HOST 300 tristate "Rockchip PCIe controller (host mode)" 301 depends on ARCH_ROCKCHIP || COMPILE_TEST 302 depends on OF 303 depends on PCI_MSI 304 select MFD_SYSCON 305 select PCIE_ROCKCHIP 306 help 307 Say Y here if you want internal PCI support on Rockchip SoC. 308 There is 1 internal PCIe port available to support GEN2 with 309 4 slots. 310 311config PCIE_ROCKCHIP_EP 312 bool "Rockchip PCIe controller (endpoint mode)" 313 depends on ARCH_ROCKCHIP || COMPILE_TEST 314 depends on OF 315 depends on PCI_ENDPOINT 316 select MFD_SYSCON 317 select PCIE_ROCKCHIP 318 help 319 Say Y here if you want to support Rockchip PCIe controller in 320 endpoint mode on Rockchip SoC. There is 1 internal PCIe port 321 available to support GEN2 with 4 slots. 322 323config PCI_V3_SEMI 324 bool "V3 Semiconductor PCI controller" 325 depends on OF 326 depends on ARM || COMPILE_TEST 327 default ARCH_INTEGRATOR_AP 328 329config PCI_XGENE 330 bool "X-Gene PCIe controller" 331 depends on ARM64 || COMPILE_TEST 332 depends on OF || (ACPI && PCI_QUIRKS) 333 help 334 Say Y here if you want internal PCI support on APM X-Gene SoC. 335 There are 5 internal PCIe ports available. Each port is GEN3 capable 336 and have varied lanes from x1 to x8. 337 338config PCI_XGENE_MSI 339 bool "X-Gene v1 PCIe MSI feature" 340 depends on PCI_XGENE 341 depends on PCI_MSI 342 select IRQ_MSI_LIB 343 default y 344 help 345 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. 346 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. 347 348config PCIE_XILINX 349 bool "Xilinx AXI PCIe controller" 350 depends on OF 351 depends on PCI_MSI 352 select IRQ_MSI_LIB 353 help 354 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe 355 Host Bridge driver. 356 357config PCIE_XILINX_DMA_PL 358 bool "Xilinx DMA PL PCIe host bridge support" 359 depends on ARCH_ZYNQMP || COMPILE_TEST 360 depends on PCI_MSI 361 select PCI_HOST_COMMON 362 select IRQ_MSI_LIB 363 help 364 Say 'Y' here if you want kernel support for the Xilinx PL DMA 365 PCIe host bridge. The controller is a Soft IP which can act as 366 Root Port. If your system provides Xilinx PCIe host controller 367 bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'. 368 369config PCIE_XILINX_NWL 370 bool "Xilinx NWL PCIe controller" 371 depends on ARCH_ZYNQMP || COMPILE_TEST 372 depends on PCI_MSI 373 select IRQ_MSI_LIB 374 help 375 Say 'Y' here if you want kernel support for Xilinx 376 NWL PCIe controller. The controller can act as Root Port 377 or End Point. The current option selection will only 378 support root port enabling. 379 380config PCIE_XILINX_CPM 381 bool "Xilinx Versal CPM PCI controller" 382 depends on ARCH_ZYNQMP || COMPILE_TEST 383 select PCI_HOST_COMMON 384 help 385 Say 'Y' here if you want kernel support for the 386 Xilinx Versal CPM host bridge. 387 388source "drivers/pci/controller/cadence/Kconfig" 389source "drivers/pci/controller/dwc/Kconfig" 390source "drivers/pci/controller/mobiveil/Kconfig" 391source "drivers/pci/controller/plda/Kconfig" 392endmenu 393