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