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