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