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