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