| # SPDX-License-Identifier: GPL-2.0 | 
 |  | 
 | menu "PCI controller drivers" | 
 | 	depends on PCI | 
 |  | 
 | config PCI_MVEBU | 
 | 	bool "Marvell EBU PCIe controller" | 
 | 	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST | 
 | 	depends on MVEBU_MBUS | 
 | 	depends on ARM | 
 | 	depends on OF | 
 |  | 
 | config PCI_AARDVARK | 
 | 	bool "Aardvark PCIe controller" | 
 | 	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST | 
 | 	depends on OF | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	 Add support for Aardvark 64bit PCIe Host Controller. This | 
 | 	 controller is part of the South Bridge of the Marvel Armada | 
 | 	 3700 SoC. | 
 |  | 
 | menu "Cadence PCIe controllers support" | 
 |  | 
 | config PCIE_CADENCE | 
 | 	bool | 
 |  | 
 | config PCIE_CADENCE_HOST | 
 | 	bool "Cadence PCIe host controller" | 
 | 	depends on OF | 
 | 	depends on PCI | 
 | 	select IRQ_DOMAIN | 
 | 	select PCIE_CADENCE | 
 | 	help | 
 | 	  Say Y here if you want to support the Cadence PCIe controller in host | 
 | 	  mode. This PCIe controller may be embedded into many different vendors | 
 | 	  SoCs. | 
 |  | 
 | config PCIE_CADENCE_EP | 
 | 	bool "Cadence PCIe endpoint controller" | 
 | 	depends on OF | 
 | 	depends on PCI_ENDPOINT | 
 | 	select PCIE_CADENCE | 
 | 	help | 
 | 	  Say Y here if you want to support the Cadence PCIe  controller in | 
 | 	  endpoint mode. This PCIe controller may be embedded into many | 
 | 	  different vendors SoCs. | 
 |  | 
 | endmenu | 
 |  | 
 | config PCIE_XILINX_NWL | 
 | 	bool "NWL PCIe Core" | 
 | 	depends on ARCH_ZYNQMP || COMPILE_TEST | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	 Say 'Y' here if you want kernel support for Xilinx | 
 | 	 NWL PCIe controller. The controller can act as Root Port | 
 | 	 or End Point. The current option selection will only | 
 | 	 support root port enabling. | 
 |  | 
 | config PCI_FTPCI100 | 
 | 	bool "Faraday Technology FTPCI100 PCI controller" | 
 | 	depends on OF | 
 | 	default ARCH_GEMINI | 
 |  | 
 | config PCI_TEGRA | 
 | 	bool "NVIDIA Tegra PCIe controller" | 
 | 	depends on ARCH_TEGRA || COMPILE_TEST | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want support for the PCIe host controller found | 
 | 	  on NVIDIA Tegra SoCs. | 
 |  | 
 | config PCI_RCAR_GEN2 | 
 | 	bool "Renesas R-Car Gen2 Internal PCI controller" | 
 | 	depends on ARCH_RENESAS || COMPILE_TEST | 
 | 	depends on ARM | 
 | 	help | 
 | 	  Say Y here if you want internal PCI support on R-Car Gen2 SoC. | 
 | 	  There are 3 internal PCI controllers available with a single | 
 | 	  built-in EHCI/OHCI host controller present on each one. | 
 |  | 
 | config PCIE_RCAR | 
 | 	bool "Renesas R-Car PCIe controller" | 
 | 	depends on ARCH_RENESAS || COMPILE_TEST | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want PCIe controller support on R-Car SoCs. | 
 |  | 
 | config PCI_HOST_COMMON | 
 | 	bool | 
 | 	select PCI_ECAM | 
 |  | 
 | config PCI_HOST_GENERIC | 
 | 	bool "Generic PCI host controller" | 
 | 	depends on OF | 
 | 	select PCI_HOST_COMMON | 
 | 	select IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want to support a simple generic PCI host | 
 | 	  controller, such as the one emulated by kvmtool. | 
 |  | 
 | config PCIE_XILINX | 
 | 	bool "Xilinx AXI PCIe host bridge support" | 
 | 	depends on OF || COMPILE_TEST | 
 | 	help | 
 | 	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe | 
 | 	  Host Bridge driver. | 
 |  | 
 | config PCI_XGENE | 
 | 	bool "X-Gene PCIe controller" | 
 | 	depends on ARM64 || COMPILE_TEST | 
 | 	depends on OF || (ACPI && PCI_QUIRKS) | 
 | 	help | 
 | 	  Say Y here if you want internal PCI support on APM X-Gene SoC. | 
 | 	  There are 5 internal PCIe ports available. Each port is GEN3 capable | 
 | 	  and have varied lanes from x1 to x8. | 
 |  | 
 | config PCI_XGENE_MSI | 
 | 	bool "X-Gene v1 PCIe MSI feature" | 
 | 	depends on PCI_XGENE | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	default y | 
 | 	help | 
 | 	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. | 
 | 	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. | 
 |  | 
 | config PCI_V3_SEMI | 
 | 	bool "V3 Semiconductor PCI controller" | 
 | 	depends on OF | 
 | 	depends on ARM || COMPILE_TEST | 
 | 	default ARCH_INTEGRATOR_AP | 
 |  | 
 | config PCI_VERSATILE | 
 | 	bool "ARM Versatile PB PCI controller" | 
 | 	depends on ARCH_VERSATILE | 
 |  | 
 | config PCIE_IPROC | 
 | 	tristate | 
 | 	help | 
 | 	  This enables the iProc PCIe core controller support for Broadcom's | 
 | 	  iProc family of SoCs. An appropriate bus interface driver needs | 
 | 	  to be enabled to select this. | 
 |  | 
 | config PCIE_IPROC_PLATFORM | 
 | 	tristate "Broadcom iProc PCIe platform bus driver" | 
 | 	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) | 
 | 	depends on OF | 
 | 	select PCIE_IPROC | 
 | 	default ARCH_BCM_IPROC | 
 | 	help | 
 | 	  Say Y here if you want to use the Broadcom iProc PCIe controller | 
 | 	  through the generic platform bus interface | 
 |  | 
 | config PCIE_IPROC_BCMA | 
 | 	tristate "Broadcom iProc PCIe BCMA bus driver" | 
 | 	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) | 
 | 	select PCIE_IPROC | 
 | 	select BCMA | 
 | 	default ARCH_BCM_5301X | 
 | 	help | 
 | 	  Say Y here if you want to use the Broadcom iProc PCIe controller | 
 | 	  through the BCMA bus interface | 
 |  | 
 | config PCIE_IPROC_MSI | 
 | 	bool "Broadcom iProc PCIe MSI support" | 
 | 	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	default ARCH_BCM_IPROC | 
 | 	help | 
 | 	  Say Y here if you want to enable MSI support for Broadcom's iProc | 
 | 	  PCIe controller | 
 |  | 
 | config PCIE_ALTERA | 
 | 	bool "Altera PCIe controller" | 
 | 	depends on ARM || NIOS2 || COMPILE_TEST | 
 | 	help | 
 | 	  Say Y here if you want to enable PCIe controller support on Altera | 
 | 	  FPGA. | 
 |  | 
 | config PCIE_ALTERA_MSI | 
 | 	bool "Altera PCIe MSI feature" | 
 | 	depends on PCIE_ALTERA | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want PCIe MSI support for the Altera FPGA. | 
 | 	  This MSI driver supports Altera MSI to GIC controller IP. | 
 |  | 
 | config PCI_HOST_THUNDER_PEM | 
 | 	bool "Cavium Thunder PCIe controller to off-chip devices" | 
 | 	depends on ARM64 || COMPILE_TEST | 
 | 	depends on OF || (ACPI && PCI_QUIRKS) | 
 | 	select PCI_HOST_COMMON | 
 | 	help | 
 | 	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. | 
 |  | 
 | config PCI_HOST_THUNDER_ECAM | 
 | 	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" | 
 | 	depends on ARM64 || COMPILE_TEST | 
 | 	depends on OF || (ACPI && PCI_QUIRKS) | 
 | 	select PCI_HOST_COMMON | 
 | 	help | 
 | 	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. | 
 |  | 
 | config PCIE_ROCKCHIP | 
 | 	bool | 
 | 	depends on PCI | 
 |  | 
 | config PCIE_ROCKCHIP_HOST | 
 | 	tristate "Rockchip PCIe host controller" | 
 | 	depends on ARCH_ROCKCHIP || COMPILE_TEST | 
 | 	depends on OF | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	select MFD_SYSCON | 
 | 	select PCIE_ROCKCHIP | 
 | 	help | 
 | 	  Say Y here if you want internal PCI support on Rockchip SoC. | 
 | 	  There is 1 internal PCIe port available to support GEN2 with | 
 | 	  4 slots. | 
 |  | 
 | config PCIE_ROCKCHIP_EP | 
 | 	bool "Rockchip PCIe endpoint controller" | 
 | 	depends on ARCH_ROCKCHIP || COMPILE_TEST | 
 | 	depends on OF | 
 | 	depends on PCI_ENDPOINT | 
 | 	select MFD_SYSCON | 
 | 	select PCIE_ROCKCHIP | 
 | 	help | 
 | 	  Say Y here if you want to support Rockchip PCIe controller in | 
 | 	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port | 
 | 	  available to support GEN2 with 4 slots. | 
 |  | 
 | config PCIE_MEDIATEK | 
 | 	tristate "MediaTek PCIe controller" | 
 | 	depends on ARCH_MEDIATEK || COMPILE_TEST | 
 | 	depends on OF | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want to enable PCIe controller support on | 
 | 	  MediaTek SoCs. | 
 |  | 
 | config PCIE_MEDIATEK_GEN3 | 
 | 	tristate "MediaTek PCIe GEN3 MAC controller" | 
 | 	depends on (ARCH_MEDIATEK || COMPILE_TEST) && !MTK_PCIE_SMT_SUPPORT | 
 | 	depends on OF | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want to enable PCIe GEN3 MAC controller | 
 | 	  support on MediaTek SoCs. | 
 |  | 
 | config PCIE_MOBIVEIL | 
 | 	bool "Mobiveil AXI PCIe controller" | 
 | 	depends on ARCH_ZYNQMP || COMPILE_TEST | 
 | 	depends on OF | 
 | 	depends on PCI_MSI_IRQ_DOMAIN | 
 | 	help | 
 | 	  Say Y here if you want to enable support for the Mobiveil AXI PCIe | 
 | 	  Soft IP. It has up to 8 outbound and inbound windows | 
 | 	  for address translation and it is a PCIe Gen4 IP. | 
 |  | 
 | config PCIE_TANGO_SMP8759 | 
 | 	bool "Tango SMP8759 PCIe controller (DANGEROUS)" | 
 | 	depends on ARCH_TANGO && PCI_MSI && OF | 
 | 	depends on BROKEN | 
 | 	select PCI_HOST_COMMON | 
 | 	help | 
 | 	  Say Y here to enable PCIe controller support for Sigma Designs | 
 | 	  Tango SMP8759-based systems. | 
 |  | 
 | 	  Note: The SMP8759 controller multiplexes PCI config and MMIO | 
 | 	  accesses, and Linux doesn't provide a way to serialize them. | 
 | 	  This can lead to data corruption if drivers perform concurrent | 
 | 	  config and MMIO accesses. | 
 |  | 
 | config VMD | 
 | 	depends on PCI_MSI && X86_64 && SRCU | 
 | 	tristate "Intel Volume Management Device Driver" | 
 | 	---help--- | 
 | 	  Adds support for the Intel Volume Management Device (VMD). VMD is a | 
 | 	  secondary PCI host bridge that allows PCI Express root ports, | 
 | 	  and devices attached to them, to be removed from the default | 
 | 	  PCI domain and placed within the VMD domain. This provides | 
 | 	  more bus resources than are otherwise possible with a | 
 | 	  single domain. If you know your system provides one of these and | 
 | 	  has devices attached to it, say Y; if you are not sure, say N. | 
 |  | 
 | 	  To compile this driver as a module, choose M here: the | 
 | 	  module will be called vmd. | 
 |  | 
 | source "drivers/pci/controller/dwc/Kconfig" | 
 | endmenu |