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