1# SPDX-License-Identifier: GPL-2.0 2 3menu "PCI controller drivers" 4 depends on PCI 5 6config PCI_MVEBU 7 bool "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_TEGRA 41 bool "NVIDIA Tegra PCIe controller" 42 depends on ARCH_TEGRA || COMPILE_TEST 43 depends on PCI_MSI_IRQ_DOMAIN 44 help 45 Say Y here if you want support for the PCIe host controller found 46 on NVIDIA Tegra SoCs. 47 48config PCI_RCAR_GEN2 49 bool "Renesas R-Car Gen2 Internal PCI controller" 50 depends on ARCH_RENESAS || COMPILE_TEST 51 depends on ARM 52 help 53 Say Y here if you want internal PCI support on R-Car Gen2 SoC. 54 There are 3 internal PCI controllers available with a single 55 built-in EHCI/OHCI host controller present on each one. 56 57config PCIE_RCAR_HOST 58 bool "Renesas R-Car PCIe host controller" 59 depends on ARCH_RENESAS || COMPILE_TEST 60 depends on PCI_MSI_IRQ_DOMAIN 61 help 62 Say Y here if you want PCIe controller support on R-Car SoCs in host 63 mode. 64 65config PCIE_RCAR_EP 66 bool "Renesas R-Car PCIe endpoint controller" 67 depends on ARCH_RENESAS || COMPILE_TEST 68 depends on PCI_ENDPOINT 69 help 70 Say Y here if you want PCIe controller support on R-Car SoCs in 71 endpoint mode. 72 73config PCI_HOST_COMMON 74 tristate 75 select PCI_ECAM 76 77config PCI_HOST_GENERIC 78 tristate "Generic PCI host controller" 79 depends on OF 80 select PCI_HOST_COMMON 81 select IRQ_DOMAIN 82 help 83 Say Y here if you want to support a simple generic PCI host 84 controller, such as the one emulated by kvmtool. 85 86config PCIE_XILINX 87 bool "Xilinx AXI PCIe host bridge support" 88 depends on OF || COMPILE_TEST 89 depends on PCI_MSI_IRQ_DOMAIN 90 help 91 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe 92 Host Bridge driver. 93 94config PCIE_XILINX_CPM 95 bool "Xilinx Versal CPM host bridge support" 96 depends on ARCH_ZYNQMP || COMPILE_TEST 97 select PCI_HOST_COMMON 98 help 99 Say 'Y' here if you want kernel support for the 100 Xilinx Versal CPM host bridge. 101 102config PCI_XGENE 103 bool "X-Gene PCIe controller" 104 depends on ARM64 || COMPILE_TEST 105 depends on OF || (ACPI && PCI_QUIRKS) 106 help 107 Say Y here if you want internal PCI support on APM X-Gene SoC. 108 There are 5 internal PCIe ports available. Each port is GEN3 capable 109 and have varied lanes from x1 to x8. 110 111config PCI_XGENE_MSI 112 bool "X-Gene v1 PCIe MSI feature" 113 depends on PCI_XGENE 114 depends on PCI_MSI_IRQ_DOMAIN 115 default y 116 help 117 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. 118 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. 119 120config PCI_V3_SEMI 121 bool "V3 Semiconductor PCI controller" 122 depends on OF 123 depends on ARM || COMPILE_TEST 124 default ARCH_INTEGRATOR_AP 125 126config PCI_VERSATILE 127 bool "ARM Versatile PB PCI controller" 128 depends on ARCH_VERSATILE || COMPILE_TEST 129 130config PCIE_IPROC 131 tristate 132 help 133 This enables the iProc PCIe core controller support for Broadcom's 134 iProc family of SoCs. An appropriate bus interface driver needs 135 to be enabled to select this. 136 137config PCIE_IPROC_PLATFORM 138 tristate "Broadcom iProc PCIe platform bus driver" 139 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) 140 depends on OF 141 select PCIE_IPROC 142 default ARCH_BCM_IPROC 143 help 144 Say Y here if you want to use the Broadcom iProc PCIe controller 145 through the generic platform bus interface 146 147config PCIE_IPROC_BCMA 148 tristate "Broadcom iProc PCIe BCMA bus driver" 149 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) 150 select PCIE_IPROC 151 select BCMA 152 default ARCH_BCM_5301X 153 help 154 Say Y here if you want to use the Broadcom iProc PCIe controller 155 through the BCMA bus interface 156 157config PCIE_IPROC_MSI 158 bool "Broadcom iProc PCIe MSI support" 159 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA 160 depends on PCI_MSI_IRQ_DOMAIN 161 default ARCH_BCM_IPROC 162 help 163 Say Y here if you want to enable MSI support for Broadcom's iProc 164 PCIe controller 165 166config PCIE_ALTERA 167 tristate "Altera PCIe controller" 168 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST 169 help 170 Say Y here if you want to enable PCIe controller support on Altera 171 FPGA. 172 173config PCIE_ALTERA_MSI 174 tristate "Altera PCIe MSI feature" 175 depends on PCIE_ALTERA 176 depends on PCI_MSI_IRQ_DOMAIN 177 help 178 Say Y here if you want PCIe MSI support for the Altera FPGA. 179 This MSI driver supports Altera MSI to GIC controller IP. 180 181config PCI_HOST_THUNDER_PEM 182 bool "Cavium Thunder PCIe controller to off-chip devices" 183 depends on ARM64 || COMPILE_TEST 184 depends on OF || (ACPI && PCI_QUIRKS) 185 select PCI_HOST_COMMON 186 help 187 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. 188 189config PCI_HOST_THUNDER_ECAM 190 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" 191 depends on ARM64 || COMPILE_TEST 192 depends on OF || (ACPI && PCI_QUIRKS) 193 select PCI_HOST_COMMON 194 help 195 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. 196 197config PCIE_ROCKCHIP 198 bool 199 depends on PCI 200 201config PCIE_ROCKCHIP_HOST 202 tristate "Rockchip PCIe host controller" 203 depends on ARCH_ROCKCHIP || COMPILE_TEST 204 depends on OF 205 depends on PCI_MSI_IRQ_DOMAIN 206 select MFD_SYSCON 207 select PCIE_ROCKCHIP 208 help 209 Say Y here if you want internal PCI support on Rockchip SoC. 210 There is 1 internal PCIe port available to support GEN2 with 211 4 slots. 212 213config PCIE_ROCKCHIP_EP 214 bool "Rockchip PCIe endpoint controller" 215 depends on ARCH_ROCKCHIP || COMPILE_TEST 216 depends on OF 217 depends on PCI_ENDPOINT 218 select MFD_SYSCON 219 select PCIE_ROCKCHIP 220 help 221 Say Y here if you want to support Rockchip PCIe controller in 222 endpoint mode on Rockchip SoC. There is 1 internal PCIe port 223 available to support GEN2 with 4 slots. 224 225config PCIE_MEDIATEK 226 tristate "MediaTek PCIe controller" 227 depends on ARCH_MEDIATEK || COMPILE_TEST 228 depends on OF 229 depends on PCI_MSI_IRQ_DOMAIN 230 help 231 Say Y here if you want to enable PCIe controller support on 232 MediaTek SoCs. 233 234config PCIE_MEDIATEK_GEN3 235 tristate "MediaTek Gen3 PCIe controller" 236 depends on ARCH_MEDIATEK || COMPILE_TEST 237 depends on PCI_MSI_IRQ_DOMAIN 238 help 239 Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. 240 This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, 241 and support up to 256 MSI interrupt numbers for 242 multi-function devices. 243 244 Say Y here if you want to enable Gen3 PCIe controller support on 245 MediaTek SoCs. 246 247config VMD 248 depends on PCI_MSI && X86_64 && SRCU 249 tristate "Intel Volume Management Device Driver" 250 help 251 Adds support for the Intel Volume Management Device (VMD). VMD is a 252 secondary PCI host bridge that allows PCI Express root ports, 253 and devices attached to them, to be removed from the default 254 PCI domain and placed within the VMD domain. This provides 255 more bus resources than are otherwise possible with a 256 single domain. If you know your system provides one of these and 257 has devices attached to it, say Y; if you are not sure, say N. 258 259 To compile this driver as a module, choose M here: the 260 module will be called vmd. 261 262config PCIE_BRCMSTB 263 tristate "Broadcom Brcmstb PCIe host controller" 264 depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || COMPILE_TEST 265 depends on OF 266 depends on PCI_MSI_IRQ_DOMAIN 267 default ARCH_BRCMSTB 268 help 269 Say Y here to enable PCIe host controller support for 270 Broadcom STB based SoCs, like the Raspberry Pi 4. 271 272config PCI_HYPERV_INTERFACE 273 tristate "Hyper-V PCI Interface" 274 depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64 275 help 276 The Hyper-V PCI Interface is a helper driver allows other drivers to 277 have a common interface with the Hyper-V PCI frontend driver. 278 279config PCI_LOONGSON 280 bool "LOONGSON PCI Controller" 281 depends on MACH_LOONGSON64 || COMPILE_TEST 282 depends on OF 283 depends on PCI_QUIRKS 284 default MACH_LOONGSON64 285 help 286 Say Y here if you want to enable PCI controller support on 287 Loongson systems. 288 289config PCIE_MICROCHIP_HOST 290 bool "Microchip AXI PCIe host bridge support" 291 depends on PCI_MSI && OF 292 select PCI_MSI_IRQ_DOMAIN 293 select GENERIC_MSI_IRQ_DOMAIN 294 select PCI_HOST_COMMON 295 help 296 Say Y here if you want kernel to support the Microchip AXI PCIe 297 Host Bridge driver. 298 299config PCIE_HISI_ERR 300 depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) 301 bool "HiSilicon HIP PCIe controller error handling driver" 302 help 303 Say Y here if you want error handling support 304 for the PCIe controller's errors on HiSilicon HIP SoCs 305 306source "drivers/pci/controller/dwc/Kconfig" 307source "drivers/pci/controller/mobiveil/Kconfig" 308source "drivers/pci/controller/cadence/Kconfig" 309endmenu 310