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