menu "PCI host controller drivers"
	depends on PCI

config PCI_DRA7XX
	bool "TI DRA7xx PCIe controller"
	select PCIE_DW
	depends on OF && HAS_IOMEM && TI_PIPE3
	depends on BROKEN
	help
	 Enables support for the PCIe controller in the DRA7xx SoC.  There
	 are two instances of PCIe controller in DRA7xx.  This controller can
	 act both as EP and RC.  This reuses the Designware core.

config PCI_MVEBU
	bool "Marvell EBU PCIe controller"
	depends on ARCH_MVEBU || ARCH_DOVE
	depends on ARM
	depends on OF


config PCIE_XILINX_NWL
	bool "NWL PCIe Core"
	depends on ARCH_ZYNQMP
	select PCI_MSI_IRQ_DOMAIN if PCI_MSI
	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_DW_PLAT
	bool "Platform bus based DesignWare PCIe Controller"
	select PCIE_DW
	---help---
	 This selects the DesignWare PCIe controller support. Select this if
	 you have a PCIe controller on Platform bus.

	 If you have a controller with this interface, say Y or M here.

	 If unsure, say N.

config PCIE_DW
	bool

config PCI_EXYNOS
	bool "Samsung Exynos PCIe controller"
	depends on SOC_EXYNOS5440
	select PCIEPORTBUS
	select PCIE_DW

config PCI_IMX6
	bool "Freescale i.MX6 PCIe controller"
	depends on SOC_IMX6Q
	select PCIEPORTBUS
	select PCIE_DW

config PCI_TEGRA
	bool "NVIDIA Tegra PCIe controller"
	depends on ARCH_TEGRA && !ARM64
	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 ARM
	depends on ARCH_RENESAS || COMPILE_TEST
	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 PCI_RCAR_GEN2_PCIE
	bool "Renesas R-Car PCIe controller"
	depends on ARCH_RENESAS || (ARM && COMPILE_TEST)
	help
	  Say Y here if you want PCIe controller support on R-Car Gen2 SoCs.

config PCI_HOST_COMMON
	bool

config PCI_HOST_GENERIC
	bool "Generic PCI host controller"
	depends on (ARM || ARM64) && OF
	select PCI_HOST_COMMON
	help
	  Say Y here if you want to support a simple generic PCI host
	  controller, such as the one emulated by kvmtool.

config PCIE_SPEAR13XX
	bool "STMicroelectronics SPEAr PCIe controller"
	depends on ARCH_SPEAR13XX
	select PCIEPORTBUS
	select PCIE_DW
	help
	  Say Y here if you want PCIe support on SPEAr13XX SoCs.

config PCI_KEYSTONE
	bool "TI Keystone PCIe controller"
	depends on ARCH_KEYSTONE
	select PCIE_DW
	select PCIEPORTBUS
	help
	  Say Y here if you want to enable PCI controller support on Keystone
	  SoCs. The PCI controller on Keystone is based on Designware hardware
	  and therefore the driver re-uses the Designware core functions to
	  implement the driver.

config PCIE_XILINX
	bool "Xilinx AXI PCIe host bridge support"
	depends on ARCH_ZYNQ || MICROBLAZE
	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 ARCH_XGENE
	depends on OF
	select PCIEPORTBUS
	select PCI_MSI_IRQ_DOMAIN if PCI_MSI
	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 && PCI_MSI
	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_LAYERSCAPE
	bool "Freescale Layerscape PCIe controller"
	depends on OF && (ARM || ARCH_LAYERSCAPE)
	select PCIE_DW
	select MFD_SYSCON
	help
	  Say Y here if you want PCIe controller support on Layerscape SoCs.

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
	select PCI_DOMAINS
	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 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
	depends on OF_PCI
	select PCI_DOMAINS
	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 && PCI_MSI
	select 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_HISI
	depends on OF && ARM64
	bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
	select PCIEPORTBUS
	select PCIE_DW
	help
	  Say Y here if you want PCIe controller support on HiSilicon
	  Hip05 and Hip06 SoCs

config PCIE_QCOM
	bool "Qualcomm PCIe controller"
	depends on ARCH_QCOM && OF
	select PCIE_DW
	select PCIEPORTBUS
	help
	  Say Y here to enable PCIe controller support on Qualcomm SoCs. The
	  PCIe controller uses the Designware core plus Qualcomm-specific
	  hardware wrappers.

config PCI_HOST_THUNDER_PEM
	bool "Cavium Thunder PCIe controller to off-chip devices"
	depends on OF && ARM64
	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 OF && ARM64
	select PCI_HOST_COMMON
	help
	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.

endmenu
