# 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
	select PCI_BRIDGE_EMUL

config PCI_AARDVARK
	tristate "Aardvark PCIe controller"
	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
	depends on OF
	depends on PCI_MSI_IRQ_DOMAIN
	select PCI_BRIDGE_EMUL
	help
	 Add support for Aardvark 64bit PCIe Host Controller. This
	 controller is part of the South Bridge of the Marvel Armada
	 3700 SoC.

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_IXP4XX
	bool "Intel IXP4xx PCI controller"
	depends on ARM && OF
	depends on ARCH_IXP4XX || COMPILE_TEST
	default ARCH_IXP4XX
	help
	  Say Y here if you want support for the PCI host controller found
	  in the Intel IXP4xx XScale-based network processor SoC.

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_HOST
	bool "Renesas R-Car PCIe host 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 in host
	  mode.

config PCIE_RCAR_EP
	bool "Renesas R-Car PCIe endpoint controller"
	depends on ARCH_RENESAS || COMPILE_TEST
	depends on PCI_ENDPOINT
	help
	  Say Y here if you want PCIe controller support on R-Car SoCs in
	  endpoint mode.

config PCI_HOST_COMMON
	tristate
	select PCI_ECAM

config PCI_HOST_GENERIC
	tristate "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
	depends on PCI_MSI_IRQ_DOMAIN
	help
	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
	  Host Bridge driver.

config PCIE_XILINX_CPM
	bool "Xilinx Versal CPM host bridge support"
	depends on ARCH_ZYNQMP || COMPILE_TEST
	select PCI_HOST_COMMON
	help
	  Say 'Y' here if you want kernel support for the
	  Xilinx Versal CPM host bridge.

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 || COMPILE_TEST

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
	tristate "Altera PCIe controller"
	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
	help
	  Say Y here if you want to enable PCIe controller support on Altera
	  FPGA.

config PCIE_ALTERA_MSI
	tristate "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 Gen3 PCIe controller"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on PCI_MSI_IRQ_DOMAIN
	help
	  Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
	  This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
	  and support up to 256 MSI interrupt numbers for
	  multi-function devices.

	  Say Y here if you want to enable Gen3 PCIe controller support on
	  MediaTek SoCs.

config VMD
	depends on PCI_MSI && X86_64 && SRCU && !UML
	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.

config PCIE_BRCMSTB
	tristate "Broadcom Brcmstb PCIe host controller"
	depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || \
		   BMIPS_GENERIC || COMPILE_TEST
	depends on OF
	depends on PCI_MSI_IRQ_DOMAIN
	default ARCH_BRCMSTB
	help
	  Say Y here to enable PCIe host controller support for
	  Broadcom STB based SoCs, like the Raspberry Pi 4.

config PCI_HYPERV_INTERFACE
	tristate "Hyper-V PCI Interface"
	depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
	help
	  The Hyper-V PCI Interface is a helper driver allows other drivers to
	  have a common interface with the Hyper-V PCI frontend driver.

config PCI_LOONGSON
	bool "LOONGSON PCI Controller"
	depends on MACH_LOONGSON64 || COMPILE_TEST
	depends on OF
	depends on PCI_QUIRKS
	default MACH_LOONGSON64
	help
	  Say Y here if you want to enable PCI controller support on
	  Loongson systems.

config PCIE_MICROCHIP_HOST
	bool "Microchip AXI PCIe host bridge support"
	depends on PCI_MSI && OF
	select PCI_MSI_IRQ_DOMAIN
	select GENERIC_MSI_IRQ_DOMAIN
	select PCI_HOST_COMMON
	help
	  Say Y here if you want kernel to support the Microchip AXI PCIe
	  Host Bridge driver.

config PCIE_HISI_ERR
	depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
	bool "HiSilicon HIP PCIe controller error handling driver"
	help
	  Say Y here if you want error handling support
	  for the PCIe controller's errors on HiSilicon HIP SoCs

config PCIE_APPLE_MSI_DOORBELL_ADDR
	hex
	default 0xfffff000
	depends on PCIE_APPLE

config PCIE_APPLE
	tristate "Apple PCIe controller"
	depends on ARCH_APPLE || COMPILE_TEST
	depends on OF
	depends on PCI_MSI_IRQ_DOMAIN
	select PCI_HOST_COMMON
	help
	  Say Y here if you want to enable PCIe controller support on Apple
	  system-on-chips, like the Apple M1. This is required for the USB
	  type-A ports, Ethernet, Wi-Fi, and Bluetooth.

	  If unsure, say Y if you have an Apple Silicon system.

config PCIE_MT7621
	bool "MediaTek MT7621 PCIe Controller"
	depends on SOC_MT7621 || (MIPS && COMPILE_TEST)
	select PHY_MT7621_PCI
	default SOC_MT7621
	help
	  This selects a driver for the MediaTek MT7621 PCIe Controller.

source "drivers/pci/controller/dwc/Kconfig"
source "drivers/pci/controller/mobiveil/Kconfig"
source "drivers/pci/controller/cadence/Kconfig"
endmenu
