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 help 17 Add support for Aardvark 64bit PCIe Host Controller. This 18 controller is part of the South Bridge of the Marvel Armada 19 3700 SoC. 20 21config PCIE_ALTERA 22 tristate "Altera PCIe controller" 23 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST 24 help 25 Say Y here if you want to enable PCIe controller support on Altera 26 FPGA. 27 28config PCIE_ALTERA_MSI 29 tristate "Altera PCIe MSI feature" 30 depends on PCIE_ALTERA 31 depends on PCI_MSI 32 help 33 Say Y here if you want PCIe MSI support for the Altera FPGA. 34 This MSI driver supports Altera MSI to GIC controller IP. 35 36config PCIE_APPLE_MSI_DOORBELL_ADDR 37 hex 38 default 0xfffff000 39 depends on PCIE_APPLE 40 41config PCIE_APPLE 42 tristate "Apple PCIe controller" 43 depends on ARCH_APPLE || COMPILE_TEST 44 depends on OF 45 depends on PCI_MSI 46 select PCI_HOST_COMMON 47 select IRQ_MSI_LIB 48 help 49 Say Y here if you want to enable PCIe controller support on Apple 50 system-on-chips, like the Apple M1. This is required for the USB 51 type-A ports, Ethernet, Wi-Fi, and Bluetooth. 52 53 If unsure, say Y if you have an Apple Silicon system. 54 55config PCI_VERSATILE 56 bool "ARM Versatile PB PCI controller" 57 depends on ARCH_VERSATILE || COMPILE_TEST 58 59config PCIE_BRCMSTB 60 tristate "Broadcom Brcmstb PCIe controller" 61 depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \ 62 BMIPS_GENERIC || COMPILE_TEST 63 depends on OF 64 depends on PCI_MSI 65 default ARCH_BRCMSTB || BMIPS_GENERIC 66 help 67 Say Y here to enable PCIe host controller support for 68 Broadcom STB based SoCs, like the Raspberry Pi 4. 69 70config PCIE_IPROC 71 tristate 72 help 73 This enables the iProc PCIe core controller support for Broadcom's 74 iProc family of SoCs. An appropriate bus interface driver needs 75 to be enabled to select this. 76 77config PCIE_IPROC_PLATFORM 78 tristate "Broadcom iProc PCIe platform bus driver" 79 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) 80 depends on OF 81 select PCIE_IPROC 82 default ARCH_BCM_IPROC 83 help 84 Say Y here if you want to use the Broadcom iProc PCIe controller 85 through the generic platform bus interface 86 87config PCIE_IPROC_BCMA 88 tristate "Broadcom iProc BCMA PCIe controller" 89 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) 90 select PCIE_IPROC 91 select BCMA 92 default ARCH_BCM_5301X 93 help 94 Say Y here if you want to use the Broadcom iProc PCIe controller 95 through the BCMA bus interface 96 97config PCIE_IPROC_MSI 98 bool "Broadcom iProc PCIe MSI support" 99 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA 100 depends on PCI_MSI 101 default ARCH_BCM_IPROC 102 help 103 Say Y here if you want to enable MSI support for Broadcom's iProc 104 PCIe controller 105 106config PCI_HOST_THUNDER_PEM 107 bool "Cavium Thunder PCIe controller to off-chip devices" 108 depends on ARM64 || COMPILE_TEST 109 depends on OF || (ACPI && PCI_QUIRKS) 110 select PCI_HOST_COMMON 111 help 112 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. 113 114config PCI_HOST_THUNDER_ECAM 115 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" 116 depends on ARM64 || COMPILE_TEST 117 depends on OF || (ACPI && PCI_QUIRKS) 118 select PCI_HOST_COMMON 119 help 120 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. 121 122config PCI_FTPCI100 123 bool "Faraday Technology FTPCI100 PCI controller" 124 depends on OF 125 default ARCH_GEMINI 126 127config PCI_HOST_GENERIC 128 tristate "Generic PCI host controller" 129 depends on OF 130 select PCI_HOST_COMMON 131 select IRQ_DOMAIN 132 help 133 Say Y here if you want to support a simple generic PCI host 134 controller, such as the one emulated by kvmtool. 135 136config PCIE_HISI_ERR 137 depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) 138 bool "HiSilicon HIP PCIe controller error handling driver" 139 help 140 Say Y here if you want error handling support 141 for the PCIe controller's errors on HiSilicon HIP SoCs 142 143config PCI_IXP4XX 144 bool "Intel IXP4xx PCI controller" 145 depends on ARM && OF 146 depends on ARCH_IXP4XX || COMPILE_TEST 147 default ARCH_IXP4XX 148 help 149 Say Y here if you want support for the PCI host controller found 150 in the Intel IXP4xx XScale-based network processor SoC. 151 152config VMD 153 depends on PCI_MSI && X86_64 && !UML 154 tristate "Intel Volume Management Device Driver" 155 help 156 Adds support for the Intel Volume Management Device (VMD). VMD is a 157 secondary PCI host bridge that allows PCI Express root ports, 158 and devices attached to them, to be removed from the default 159 PCI domain and placed within the VMD domain. This provides 160 more bus resources than are otherwise possible with a 161 single domain. If you know your system provides one of these and 162 has devices attached to it, say Y; if you are not sure, say N. 163 164 To compile this driver as a module, choose M here: the 165 module will be called vmd. 166 167config PCI_LOONGSON 168 bool "LOONGSON PCIe controller" 169 depends on MACH_LOONGSON64 || COMPILE_TEST 170 depends on OF || ACPI 171 depends on PCI_QUIRKS 172 default MACH_LOONGSON64 173 help 174 Say Y here if you want to enable PCI controller support on 175 Loongson systems. 176 177config PCI_MVEBU 178 tristate "Marvell EBU PCIe controller" 179 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST 180 depends on MVEBU_MBUS 181 depends on ARM 182 depends on OF 183 select PCI_BRIDGE_EMUL 184 help 185 Add support for Marvell EBU PCIe controller. This PCIe controller 186 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370, 187 Armada XP, Armada 375, Armada 38x and Armada 39x. 188 189config PCIE_MEDIATEK 190 tristate "MediaTek PCIe controller" 191 depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST 192 depends on OF 193 depends on PCI_MSI 194 help 195 Say Y here if you want to enable PCIe controller support on 196 MediaTek SoCs. 197 198config PCIE_MEDIATEK_GEN3 199 tristate "MediaTek Gen3 PCIe controller" 200 depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST 201 depends on PCI_MSI 202 help 203 Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. 204 This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, 205 and support up to 256 MSI interrupt numbers for 206 multi-function devices. 207 208 Say Y here if you want to enable Gen3 PCIe controller support on 209 MediaTek SoCs. 210 211config PCIE_MT7621 212 tristate "MediaTek MT7621 PCIe controller" 213 depends on SOC_MT7621 || COMPILE_TEST 214 select PHY_MT7621_PCI 215 default SOC_MT7621 216 help 217 This selects a driver for the MediaTek MT7621 PCIe Controller. 218 219config PCI_HYPERV_INTERFACE 220 tristate "Microsoft Hyper-V PCI Interface" 221 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI 222 help 223 The Hyper-V PCI Interface is a helper driver that allows other 224 drivers to have a common interface with the Hyper-V PCI frontend 225 driver. 226 227config PCI_TEGRA 228 bool "NVIDIA Tegra PCIe controller" 229 depends on ARCH_TEGRA || COMPILE_TEST 230 depends on PCI_MSI 231 select IRQ_MSI_LIB 232 help 233 Say Y here if you want support for the PCIe host controller found 234 on NVIDIA Tegra SoCs. 235 236config PCIE_RCAR_HOST 237 bool "Renesas R-Car PCIe controller (host mode)" 238 depends on ARCH_RENESAS || COMPILE_TEST 239 depends on PCI_MSI 240 help 241 Say Y here if you want PCIe controller support on R-Car SoCs in host 242 mode. 243 244config PCIE_RCAR_EP 245 bool "Renesas R-Car PCIe controller (endpoint mode)" 246 depends on ARCH_RENESAS || COMPILE_TEST 247 depends on PCI_ENDPOINT 248 help 249 Say Y here if you want PCIe controller support on R-Car SoCs in 250 endpoint mode. 251 252config PCI_RCAR_GEN2 253 bool "Renesas R-Car Gen2 Internal PCI controller" 254 depends on ARCH_RENESAS || COMPILE_TEST 255 depends on ARM 256 help 257 Say Y here if you want internal PCI support on R-Car Gen2 SoC. 258 There are 3 internal PCI controllers available with a single 259 built-in EHCI/OHCI host controller present on each one. 260 261config PCIE_ROCKCHIP 262 bool 263 depends on PCI 264 265config PCIE_ROCKCHIP_HOST 266 tristate "Rockchip PCIe controller (host mode)" 267 depends on ARCH_ROCKCHIP || COMPILE_TEST 268 depends on OF 269 depends on PCI_MSI 270 select MFD_SYSCON 271 select PCIE_ROCKCHIP 272 help 273 Say Y here if you want internal PCI support on Rockchip SoC. 274 There is 1 internal PCIe port available to support GEN2 with 275 4 slots. 276 277config PCIE_ROCKCHIP_EP 278 bool "Rockchip PCIe controller (endpoint mode)" 279 depends on ARCH_ROCKCHIP || COMPILE_TEST 280 depends on OF 281 depends on PCI_ENDPOINT 282 select MFD_SYSCON 283 select PCIE_ROCKCHIP 284 help 285 Say Y here if you want to support Rockchip PCIe controller in 286 endpoint mode on Rockchip SoC. There is 1 internal PCIe port 287 available to support GEN2 with 4 slots. 288 289config PCI_V3_SEMI 290 bool "V3 Semiconductor PCI controller" 291 depends on OF 292 depends on ARM || COMPILE_TEST 293 default ARCH_INTEGRATOR_AP 294 295config PCI_XGENE 296 bool "X-Gene PCIe controller" 297 depends on ARM64 || COMPILE_TEST 298 depends on OF || (ACPI && PCI_QUIRKS) 299 help 300 Say Y here if you want internal PCI support on APM X-Gene SoC. 301 There are 5 internal PCIe ports available. Each port is GEN3 capable 302 and have varied lanes from x1 to x8. 303 304config PCI_XGENE_MSI 305 bool "X-Gene v1 PCIe MSI feature" 306 depends on PCI_XGENE 307 depends on PCI_MSI 308 select IRQ_MSI_LIB 309 default y 310 help 311 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. 312 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. 313 314config PCIE_XILINX 315 bool "Xilinx AXI PCIe controller" 316 depends on OF 317 depends on PCI_MSI 318 help 319 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe 320 Host Bridge driver. 321 322config PCIE_XILINX_DMA_PL 323 bool "Xilinx DMA PL PCIe host bridge support" 324 depends on ARCH_ZYNQMP || COMPILE_TEST 325 depends on PCI_MSI 326 select PCI_HOST_COMMON 327 help 328 Say 'Y' here if you want kernel support for the Xilinx PL DMA 329 PCIe host bridge. The controller is a Soft IP which can act as 330 Root Port. If your system provides Xilinx PCIe host controller 331 bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'. 332 333config PCIE_XILINX_NWL 334 bool "Xilinx NWL PCIe controller" 335 depends on ARCH_ZYNQMP || COMPILE_TEST 336 depends on PCI_MSI 337 help 338 Say 'Y' here if you want kernel support for Xilinx 339 NWL PCIe controller. The controller can act as Root Port 340 or End Point. The current option selection will only 341 support root port enabling. 342 343config PCIE_XILINX_CPM 344 bool "Xilinx Versal CPM PCI controller" 345 depends on ARCH_ZYNQMP || COMPILE_TEST 346 select PCI_HOST_COMMON 347 help 348 Say 'Y' here if you want kernel support for the 349 Xilinx Versal CPM host bridge. 350 351source "drivers/pci/controller/cadence/Kconfig" 352source "drivers/pci/controller/dwc/Kconfig" 353source "drivers/pci/controller/mobiveil/Kconfig" 354source "drivers/pci/controller/plda/Kconfig" 355endmenu 356