# SPDX-License-Identifier: GPL-2.0

menu "PCI controller drivers"
	depends on PCI

config PCI_HOST_COMMON
	tristate
	select PCI_ECAM

config PCI_AARDVARK
	tristate "Aardvark PCIe controller"
	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
	depends on OF
	depends on PCI_MSI
	select PCI_BRIDGE_EMUL
	select IRQ_MSI_LIB
	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_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
	select IRQ_MSI_LIB
	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 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
	select PCI_HOST_COMMON
	select IRQ_MSI_LIB
	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 PCI_VERSATILE
	bool "ARM Versatile PB PCI controller"
	depends on ARCH_VERSATILE || COMPILE_TEST

config PCIE_ASPEED
	bool "ASPEED PCIe controller"
	depends on ARCH_ASPEED || COMPILE_TEST
	depends on OF
	depends on PCI_MSI
	select IRQ_MSI_LIB
	help
	  Enable this option to support the PCIe controller found on ASPEED
	  SoCs.

	  This driver provides initialization and management for PCIe
	  Root Complex functionality, including INTx and MSI support.

	  Select Y if your platform uses an ASPEED SoC and requires PCIe
	  connectivity.

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

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 BCMA PCIe controller"
	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
	select IRQ_MSI_LIB
	default ARCH_BCM_IPROC
	help
	  Say Y here if you want to enable MSI support for Broadcom's iProc
	  PCIe controller

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 PCI_FTPCI100
	bool "Faraday Technology FTPCI100 PCI controller"
	depends on OF
	default ARCH_GEMINI

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_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 PCI_IXP4XX
	bool "Intel IXP4xx PCI controller"
	depends on 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 VMD
	depends on PCI_MSI && X86_64 && !UML
	tristate "Intel Volume Management Device Driver"
	select IRQ_MSI_LIB
	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 PCI_LOONGSON
	bool "LOONGSON PCIe controller"
	depends on MACH_LOONGSON64 || COMPILE_TEST
	depends on OF || ACPI
	depends on PCI_QUIRKS
	default MACH_LOONGSON64
	help
	  Say Y here if you want to enable PCI controller support on
	  Loongson systems.

config PCI_MVEBU
	tristate "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
	help
	 Add support for Marvell EBU PCIe controller. This PCIe controller
	 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
	 Armada XP, Armada 375, Armada 38x and Armada 39x.

config PCIE_MEDIATEK
	tristate "MediaTek PCIe controller"
	depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
	depends on OF
	depends on PCI_MSI
	select IRQ_MSI_LIB
	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_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
	depends on PCI_MSI
	select IRQ_MSI_LIB
	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 PCIE_MT7621
	tristate "MediaTek MT7621 PCIe controller"
	depends on SOC_MT7621 || COMPILE_TEST
	select PHY_MT7621_PCI
	default SOC_MT7621
	help
	  This selects a driver for the MediaTek MT7621 PCIe Controller.

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

config PCI_TEGRA
	tristate "NVIDIA Tegra PCIe controller"
	depends on ARCH_TEGRA || COMPILE_TEST
	depends on PCI_MSI
	select IRQ_MSI_LIB
	help
	  Say Y here if you want support for the PCIe host controller found
	  on NVIDIA Tegra SoCs.

config PCIE_RCAR_HOST
	bool "Renesas R-Car PCIe controller (host mode)"
	depends on ARCH_RENESAS || COMPILE_TEST
	depends on OF
	depends on PCI_MSI
	select IRQ_MSI_LIB
	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 controller (endpoint mode)"
	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_RCAR_GEN2
	bool "Renesas R-Car Gen2 Internal PCI controller"
	depends on (ARCH_RENESAS && ARM) || COMPILE_TEST
	help
	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
	  Each internal PCI controller contains a single built-in EHCI/OHCI
	  host controller.

config PCIE_RENESAS_RZG3S_HOST
	bool "Renesas RZ/G3S PCIe host controller"
	depends on ARCH_RENESAS || COMPILE_TEST
	select MFD_SYSCON
	select IRQ_MSI_LIB
	help
	  Say Y here if you want PCIe host controller support on Renesas RZ/G3S
	  SoC.

config PCIE_ROCKCHIP
	bool
	depends on PCI

config PCIE_ROCKCHIP_HOST
	tristate "Rockchip PCIe controller (host mode)"
	depends on ARCH_ROCKCHIP || COMPILE_TEST
	depends on OF
	depends on PCI_MSI
	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 controller (endpoint mode)"
	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 PCI_V3_SEMI
	bool "V3 Semiconductor PCI controller"
	depends on OF
	depends on ARM || COMPILE_TEST
	default ARCH_INTEGRATOR_AP

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
	select IRQ_MSI_LIB
	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 PCIE_XILINX
	bool "Xilinx AXI PCIe controller"
	depends on OF
	depends on PCI_MSI
	select IRQ_MSI_LIB
	help
	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
	  Host Bridge driver.

config PCIE_XILINX_DMA_PL
	bool "Xilinx DMA PL PCIe host bridge support"
	depends on ARCH_ZYNQMP || COMPILE_TEST
	depends on PCI_MSI
	select PCI_HOST_COMMON
	select IRQ_MSI_LIB
	help
	  Say 'Y' here if you want kernel support for the Xilinx PL DMA
	  PCIe host bridge. The controller is a Soft IP which can act as
	  Root Port. If your system provides Xilinx PCIe host controller
	  bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'.

config PCIE_XILINX_NWL
	bool "Xilinx NWL PCIe controller"
	depends on ARCH_ZYNQMP || COMPILE_TEST
	depends on PCI_MSI
	select IRQ_MSI_LIB
	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 PCIE_XILINX_CPM
	bool "Xilinx Versal CPM PCI controller"
	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.

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