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