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 ROCKCHIP_PCIE_DMA_OBJ 237 bool "Rockchip PCIe uDMA transfer support" 238 depends on PCIE_ROCKCHIP_HOST || PCIE_DW_ROCKCHIP 239 default n 240 help 241 Say y to enable p2p DMA transfer between PCIe components. 242 243config PCIE_MEDIATEK 244 tristate "MediaTek PCIe controller" 245 depends on ARCH_MEDIATEK || COMPILE_TEST 246 depends on OF 247 depends on PCI_MSI_IRQ_DOMAIN 248 help 249 Say Y here if you want to enable PCIe controller support on 250 MediaTek SoCs. 251 252config PCIE_TANGO_SMP8759 253 bool "Tango SMP8759 PCIe controller (DANGEROUS)" 254 depends on ARCH_TANGO && PCI_MSI && OF 255 depends on BROKEN 256 select PCI_HOST_COMMON 257 help 258 Say Y here to enable PCIe controller support for Sigma Designs 259 Tango SMP8759-based systems. 260 261 Note: The SMP8759 controller multiplexes PCI config and MMIO 262 accesses, and Linux doesn't provide a way to serialize them. 263 This can lead to data corruption if drivers perform concurrent 264 config and MMIO accesses. 265 266config VMD 267 depends on PCI_MSI && X86_64 && SRCU 268 tristate "Intel Volume Management Device Driver" 269 help 270 Adds support for the Intel Volume Management Device (VMD). VMD is a 271 secondary PCI host bridge that allows PCI Express root ports, 272 and devices attached to them, to be removed from the default 273 PCI domain and placed within the VMD domain. This provides 274 more bus resources than are otherwise possible with a 275 single domain. If you know your system provides one of these and 276 has devices attached to it, say Y; if you are not sure, say N. 277 278 To compile this driver as a module, choose M here: the 279 module will be called vmd. 280 281config PCIE_BRCMSTB 282 tristate "Broadcom Brcmstb PCIe host controller" 283 depends on ARCH_BRCMSTB || ARCH_BCM2835 || COMPILE_TEST 284 depends on OF 285 depends on PCI_MSI_IRQ_DOMAIN 286 default ARCH_BRCMSTB 287 help 288 Say Y here to enable PCIe host controller support for 289 Broadcom STB based SoCs, like the Raspberry Pi 4. 290 291config PCI_HYPERV_INTERFACE 292 tristate "Hyper-V PCI Interface" 293 depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64 294 help 295 The Hyper-V PCI Interface is a helper driver allows other drivers to 296 have a common interface with the Hyper-V PCI frontend driver. 297 298config PCI_LOONGSON 299 bool "LOONGSON PCI Controller" 300 depends on MACH_LOONGSON64 || COMPILE_TEST 301 depends on OF 302 depends on PCI_QUIRKS 303 default MACH_LOONGSON64 304 help 305 Say Y here if you want to enable PCI controller support on 306 Loongson systems. 307 308config PCIE_HISI_ERR 309 depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) 310 bool "HiSilicon HIP PCIe controller error handling driver" 311 help 312 Say Y here if you want error handling support 313 for the PCIe controller's errors on HiSilicon HIP SoCs 314 315source "drivers/pci/controller/dwc/Kconfig" 316source "drivers/pci/controller/mobiveil/Kconfig" 317source "drivers/pci/controller/cadence/Kconfig" 318endmenu 319