0001 # SPDX-License-Identifier: GPL-2.0
0002
0003 menu "PCI controller drivers"
0004 depends on PCI
0005
0006 config PCI_MVEBU
0007 tristate "Marvell EBU PCIe controller"
0008 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
0009 depends on MVEBU_MBUS
0010 depends on ARM
0011 depends on OF
0012 select PCI_BRIDGE_EMUL
0013 help
0014 Add support for Marvell EBU PCIe controller. This PCIe controller
0015 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
0016 Armada XP, Armada 375, Armada 38x and Armada 39x.
0017
0018 config PCI_AARDVARK
0019 tristate "Aardvark PCIe controller"
0020 depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
0021 depends on OF
0022 depends on PCI_MSI_IRQ_DOMAIN
0023 select PCI_BRIDGE_EMUL
0024 help
0025 Add support for Aardvark 64bit PCIe Host Controller. This
0026 controller is part of the South Bridge of the Marvel Armada
0027 3700 SoC.
0028
0029 config PCIE_XILINX_NWL
0030 bool "NWL PCIe Core"
0031 depends on ARCH_ZYNQMP || COMPILE_TEST
0032 depends on PCI_MSI_IRQ_DOMAIN
0033 help
0034 Say 'Y' here if you want kernel support for Xilinx
0035 NWL PCIe controller. The controller can act as Root Port
0036 or End Point. The current option selection will only
0037 support root port enabling.
0038
0039 config PCI_FTPCI100
0040 bool "Faraday Technology FTPCI100 PCI controller"
0041 depends on OF
0042 default ARCH_GEMINI
0043
0044 config PCI_IXP4XX
0045 bool "Intel IXP4xx PCI controller"
0046 depends on ARM && OF
0047 depends on ARCH_IXP4XX || COMPILE_TEST
0048 default ARCH_IXP4XX
0049 help
0050 Say Y here if you want support for the PCI host controller found
0051 in the Intel IXP4xx XScale-based network processor SoC.
0052
0053 config PCI_TEGRA
0054 bool "NVIDIA Tegra PCIe controller"
0055 depends on ARCH_TEGRA || COMPILE_TEST
0056 depends on PCI_MSI_IRQ_DOMAIN
0057 help
0058 Say Y here if you want support for the PCIe host controller found
0059 on NVIDIA Tegra SoCs.
0060
0061 config PCI_RCAR_GEN2
0062 bool "Renesas R-Car Gen2 Internal PCI controller"
0063 depends on ARCH_RENESAS || COMPILE_TEST
0064 depends on ARM
0065 help
0066 Say Y here if you want internal PCI support on R-Car Gen2 SoC.
0067 There are 3 internal PCI controllers available with a single
0068 built-in EHCI/OHCI host controller present on each one.
0069
0070 config PCIE_RCAR_HOST
0071 bool "Renesas R-Car PCIe host controller"
0072 depends on ARCH_RENESAS || COMPILE_TEST
0073 depends on PCI_MSI_IRQ_DOMAIN
0074 help
0075 Say Y here if you want PCIe controller support on R-Car SoCs in host
0076 mode.
0077
0078 config PCIE_RCAR_EP
0079 bool "Renesas R-Car PCIe endpoint controller"
0080 depends on ARCH_RENESAS || COMPILE_TEST
0081 depends on PCI_ENDPOINT
0082 help
0083 Say Y here if you want PCIe controller support on R-Car SoCs in
0084 endpoint mode.
0085
0086 config PCI_HOST_COMMON
0087 tristate
0088 select PCI_ECAM
0089
0090 config PCI_HOST_GENERIC
0091 tristate "Generic PCI host controller"
0092 depends on OF
0093 select PCI_HOST_COMMON
0094 select IRQ_DOMAIN
0095 help
0096 Say Y here if you want to support a simple generic PCI host
0097 controller, such as the one emulated by kvmtool.
0098
0099 config PCIE_XILINX
0100 bool "Xilinx AXI PCIe host bridge support"
0101 depends on OF || COMPILE_TEST
0102 depends on PCI_MSI_IRQ_DOMAIN
0103 help
0104 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
0105 Host Bridge driver.
0106
0107 config PCIE_XILINX_CPM
0108 bool "Xilinx Versal CPM host bridge support"
0109 depends on ARCH_ZYNQMP || COMPILE_TEST
0110 select PCI_HOST_COMMON
0111 help
0112 Say 'Y' here if you want kernel support for the
0113 Xilinx Versal CPM host bridge.
0114
0115 config PCI_XGENE
0116 bool "X-Gene PCIe controller"
0117 depends on ARM64 || COMPILE_TEST
0118 depends on OF || (ACPI && PCI_QUIRKS)
0119 help
0120 Say Y here if you want internal PCI support on APM X-Gene SoC.
0121 There are 5 internal PCIe ports available. Each port is GEN3 capable
0122 and have varied lanes from x1 to x8.
0123
0124 config PCI_XGENE_MSI
0125 bool "X-Gene v1 PCIe MSI feature"
0126 depends on PCI_XGENE
0127 depends on PCI_MSI_IRQ_DOMAIN
0128 default y
0129 help
0130 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
0131 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
0132
0133 config PCI_V3_SEMI
0134 bool "V3 Semiconductor PCI controller"
0135 depends on OF
0136 depends on ARM || COMPILE_TEST
0137 default ARCH_INTEGRATOR_AP
0138
0139 config PCI_VERSATILE
0140 bool "ARM Versatile PB PCI controller"
0141 depends on ARCH_VERSATILE || COMPILE_TEST
0142
0143 config PCIE_IPROC
0144 tristate
0145 help
0146 This enables the iProc PCIe core controller support for Broadcom's
0147 iProc family of SoCs. An appropriate bus interface driver needs
0148 to be enabled to select this.
0149
0150 config PCIE_IPROC_PLATFORM
0151 tristate "Broadcom iProc PCIe platform bus driver"
0152 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
0153 depends on OF
0154 select PCIE_IPROC
0155 default ARCH_BCM_IPROC
0156 help
0157 Say Y here if you want to use the Broadcom iProc PCIe controller
0158 through the generic platform bus interface
0159
0160 config PCIE_IPROC_BCMA
0161 tristate "Broadcom iProc PCIe BCMA bus driver"
0162 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
0163 select PCIE_IPROC
0164 select BCMA
0165 default ARCH_BCM_5301X
0166 help
0167 Say Y here if you want to use the Broadcom iProc PCIe controller
0168 through the BCMA bus interface
0169
0170 config PCIE_IPROC_MSI
0171 bool "Broadcom iProc PCIe MSI support"
0172 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
0173 depends on PCI_MSI_IRQ_DOMAIN
0174 default ARCH_BCM_IPROC
0175 help
0176 Say Y here if you want to enable MSI support for Broadcom's iProc
0177 PCIe controller
0178
0179 config PCIE_ALTERA
0180 tristate "Altera PCIe controller"
0181 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
0182 help
0183 Say Y here if you want to enable PCIe controller support on Altera
0184 FPGA.
0185
0186 config PCIE_ALTERA_MSI
0187 tristate "Altera PCIe MSI feature"
0188 depends on PCIE_ALTERA
0189 depends on PCI_MSI_IRQ_DOMAIN
0190 help
0191 Say Y here if you want PCIe MSI support for the Altera FPGA.
0192 This MSI driver supports Altera MSI to GIC controller IP.
0193
0194 config PCI_HOST_THUNDER_PEM
0195 bool "Cavium Thunder PCIe controller to off-chip devices"
0196 depends on ARM64 || COMPILE_TEST
0197 depends on OF || (ACPI && PCI_QUIRKS)
0198 select PCI_HOST_COMMON
0199 help
0200 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
0201
0202 config PCI_HOST_THUNDER_ECAM
0203 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
0204 depends on ARM64 || COMPILE_TEST
0205 depends on OF || (ACPI && PCI_QUIRKS)
0206 select PCI_HOST_COMMON
0207 help
0208 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
0209
0210 config PCIE_ROCKCHIP
0211 bool
0212 depends on PCI
0213
0214 config PCIE_ROCKCHIP_HOST
0215 tristate "Rockchip PCIe host controller"
0216 depends on ARCH_ROCKCHIP || COMPILE_TEST
0217 depends on OF
0218 depends on PCI_MSI_IRQ_DOMAIN
0219 select MFD_SYSCON
0220 select PCIE_ROCKCHIP
0221 help
0222 Say Y here if you want internal PCI support on Rockchip SoC.
0223 There is 1 internal PCIe port available to support GEN2 with
0224 4 slots.
0225
0226 config PCIE_ROCKCHIP_EP
0227 bool "Rockchip PCIe endpoint controller"
0228 depends on ARCH_ROCKCHIP || COMPILE_TEST
0229 depends on OF
0230 depends on PCI_ENDPOINT
0231 select MFD_SYSCON
0232 select PCIE_ROCKCHIP
0233 help
0234 Say Y here if you want to support Rockchip PCIe controller in
0235 endpoint mode on Rockchip SoC. There is 1 internal PCIe port
0236 available to support GEN2 with 4 slots.
0237
0238 config PCIE_MEDIATEK
0239 tristate "MediaTek PCIe controller"
0240 depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
0241 depends on OF
0242 depends on PCI_MSI_IRQ_DOMAIN
0243 help
0244 Say Y here if you want to enable PCIe controller support on
0245 MediaTek SoCs.
0246
0247 config PCIE_MEDIATEK_GEN3
0248 tristate "MediaTek Gen3 PCIe controller"
0249 depends on ARCH_MEDIATEK || COMPILE_TEST
0250 depends on PCI_MSI_IRQ_DOMAIN
0251 help
0252 Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
0253 This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
0254 and support up to 256 MSI interrupt numbers for
0255 multi-function devices.
0256
0257 Say Y here if you want to enable Gen3 PCIe controller support on
0258 MediaTek SoCs.
0259
0260 config VMD
0261 depends on PCI_MSI && X86_64 && SRCU && !UML
0262 tristate "Intel Volume Management Device Driver"
0263 help
0264 Adds support for the Intel Volume Management Device (VMD). VMD is a
0265 secondary PCI host bridge that allows PCI Express root ports,
0266 and devices attached to them, to be removed from the default
0267 PCI domain and placed within the VMD domain. This provides
0268 more bus resources than are otherwise possible with a
0269 single domain. If you know your system provides one of these and
0270 has devices attached to it, say Y; if you are not sure, say N.
0271
0272 To compile this driver as a module, choose M here: the
0273 module will be called vmd.
0274
0275 config PCIE_BRCMSTB
0276 tristate "Broadcom Brcmstb PCIe host controller"
0277 depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || \
0278 BMIPS_GENERIC || COMPILE_TEST
0279 depends on OF
0280 depends on PCI_MSI_IRQ_DOMAIN
0281 default ARCH_BRCMSTB || BMIPS_GENERIC
0282 help
0283 Say Y here to enable PCIe host controller support for
0284 Broadcom STB based SoCs, like the Raspberry Pi 4.
0285
0286 config PCI_HYPERV_INTERFACE
0287 tristate "Hyper-V PCI Interface"
0288 depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN
0289 help
0290 The Hyper-V PCI Interface is a helper driver allows other drivers to
0291 have a common interface with the Hyper-V PCI frontend driver.
0292
0293 config PCI_LOONGSON
0294 bool "LOONGSON PCI Controller"
0295 depends on MACH_LOONGSON64 || COMPILE_TEST
0296 depends on OF || ACPI
0297 depends on PCI_QUIRKS
0298 default MACH_LOONGSON64
0299 help
0300 Say Y here if you want to enable PCI controller support on
0301 Loongson systems.
0302
0303 config PCIE_MICROCHIP_HOST
0304 bool "Microchip AXI PCIe host bridge support"
0305 depends on PCI_MSI && OF
0306 select PCI_MSI_IRQ_DOMAIN
0307 select GENERIC_MSI_IRQ_DOMAIN
0308 select PCI_HOST_COMMON
0309 help
0310 Say Y here if you want kernel to support the Microchip AXI PCIe
0311 Host Bridge driver.
0312
0313 config PCIE_HISI_ERR
0314 depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
0315 bool "HiSilicon HIP PCIe controller error handling driver"
0316 help
0317 Say Y here if you want error handling support
0318 for the PCIe controller's errors on HiSilicon HIP SoCs
0319
0320 config PCIE_APPLE_MSI_DOORBELL_ADDR
0321 hex
0322 default 0xfffff000
0323 depends on PCIE_APPLE
0324
0325 config PCIE_APPLE
0326 tristate "Apple PCIe controller"
0327 depends on ARCH_APPLE || COMPILE_TEST
0328 depends on OF
0329 depends on PCI_MSI_IRQ_DOMAIN
0330 select PCI_HOST_COMMON
0331 help
0332 Say Y here if you want to enable PCIe controller support on Apple
0333 system-on-chips, like the Apple M1. This is required for the USB
0334 type-A ports, Ethernet, Wi-Fi, and Bluetooth.
0335
0336 If unsure, say Y if you have an Apple Silicon system.
0337
0338 config PCIE_MT7621
0339 tristate "MediaTek MT7621 PCIe Controller"
0340 depends on SOC_MT7621 || COMPILE_TEST
0341 select PHY_MT7621_PCI
0342 default SOC_MT7621
0343 help
0344 This selects a driver for the MediaTek MT7621 PCIe Controller.
0345
0346 source "drivers/pci/controller/dwc/Kconfig"
0347 source "drivers/pci/controller/mobiveil/Kconfig"
0348 source "drivers/pci/controller/cadence/Kconfig"
0349 endmenu