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