menuconfig PCI
	bool "PCI support"
	depends on DM
	default y if PPC
	help
	  Enable support for PCI (Peripheral Interconnect Bus), a type of bus
	  used on some devices to allow the CPU to communicate with its
	  peripherals.

	  This subsystem requires driver model.

if PCI

config DM_PCI_COMPAT
	bool "Enable compatible functions for PCI"
	help
	  Enable compatibility functions for PCI so that old code can be used
	  with CONFIG_PCI enabled. This should be used as an interim
	  measure when porting a board to use driver model for PCI. Once the
	  board is fully supported, this option should be disabled.

config PCI_AARDVARK
	bool "Enable Aardvark PCIe driver"
	depends on DM_GPIO
	depends on ARMADA_3700
	help
	  Say Y here if you want to enable PCIe controller support on
	  Armada37x0 SoCs. The PCIe controller on Armada37x0 is based on
	  Aardvark hardware.

config PCI_PNP
	bool "Enable Plug & Play support for PCI"
	default y
	help
	  Enable PCI memory and I/O space resource allocation and assignment.

config PCI_REGION_MULTI_ENTRY
	bool "Enable Multiple entries of region type MEMORY in ranges for PCI"
	help
	  Enable PCI memory regions to be of multiple entry. Multiple entry
	  here refers to allow more than one count of address ranges for MEMORY
	  region type. This helps to add support for SoC's like OcteonTX/TX2
	  where every peripheral is on the PCI bus.

config PCI_MAP_SYSTEM_MEMORY
	bool "Map local system memory from a virtual base address"
	depends on MIPS
	help
	  Say Y if base address of system memory is being used as a virtual address
	  instead of a physical address (e.g. on MIPS). The PCI core will then remap
	  the virtual memory base address to a physical address when adding the PCI
	  region of type PCI_REGION_SYS_MEMORY.
	  This should only be required on MIPS where CONFIG_SYS_SDRAM_BASE is still
	  being used as virtual address.

config PCI_SRIOV
	bool "Enable Single Root I/O Virtualization support for PCI"
	help
	  Say Y here if you want to enable PCI Single Root I/O Virtualization
	  capability support. This helps to enumerate Virtual Function devices
	  if available on a PCI Physical Function device and probe for
	  applicable drivers.

config PCI_ARID
        bool "Enable Alternate Routing-ID support for PCI"
        help
          Say Y here if you want to enable Alternate Routing-ID capability
          support on PCI devices. This helps to skip some devices in BDF
          scan that are not present.

config PCIE_ECAM_GENERIC
	bool "Generic ECAM-based PCI host controller support"
	help
	  Say Y here if you want to enable support for generic ECAM-based
	  PCIe host controllers, such as the one emulated by QEMU.

config PCIE_ECAM_SYNQUACER
	bool "SynQuacer ECAM-based PCI host controller support"
	select PCI_INIT_R
	select PCI_REGION_MULTI_ENTRY
	help
	  Say Y here if you want to enable support for Socionext
	  SynQuacer SoC's ECAM-based PCIe host controllers.
	  Note that this must be configured when boot because Linux driver
	  expects the PCIe RC has been configured in the bootloader.

config PCI_PHYTIUM
	bool "Phytium PCIe support"
	help
	  Say Y here if you want to enable PCIe controller support on
	  Phytium SoCs.

config PCIE_DW_MVEBU
	bool "Enable Armada-8K PCIe driver (DesignWare core)"
	depends on ARMADA_8K
	help
	  Say Y here if you want to enable PCIe controller support on
	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
	  DesignWare hardware.

config PCIE_DW_SIFIVE
	bool "Enable SiFive FU740 PCIe"
	depends on CLK_SIFIVE_PRCI
	depends on RESET_SIFIVE
	depends on SIFIVE_GPIO
	select PCIE_DW_COMMON
	help
	  Say Y here if you want to enable PCIe controller support on
	  FU740.

config PCIE_FSL
	bool "FSL PowerPC PCIe support"
	help
	  Say Y here if you want to enable PCIe controller support on FSL
	  PowerPC MPC85xx, MPC86xx, B series, P series and T series SoCs.
	  This driver does not support SRIO_PCIE_BOOT feature.

config PCI_MPC85XX
	bool "MPC85XX PowerPC PCI support"
	help
	  Say Y here if you want to enable PCI controller support on FSL
	  PowerPC MPC85xx SoC.

config PCI_RCAR_GEN2
	bool "Renesas RCar Gen2 PCIe driver"
	depends on RCAR_32
	help
	  Say Y here if you want to enable PCIe controller support on
	  Renesas RCar Gen2 SoCs. The PCIe controller on RCar Gen2 is
	  also used to access EHCI USB controller on the SoC.

config PCI_RCAR_GEN3
	bool "Renesas RCar Gen3 PCIe driver"
	depends on RCAR_GEN3
	help
	  Say Y here if you want to enable PCIe controller support on
	  Renesas RCar Gen3 SoCs.

config PCI_SANDBOX
	bool "Sandbox PCI support"
	depends on SANDBOX
	help
	  Support PCI on sandbox, as an emulated bus. This permits testing of
	  PCI feature such as bus scanning, device configuration and device
	  access. The available (emulated) devices are defined statically in
	  the device tree but the normal PCI scan technique is used to find
	  then.

config PCI_TEGRA
	bool "Tegra PCI support"
	depends on ARCH_TEGRA
	depends on (TEGRA186 && POWER_DOMAIN) || (!TEGRA186)
	help
	  Enable support for the PCIe controller found on some generations of
	  Tegra. Tegra20 has 2 root ports with a total of 4 lanes, Tegra30 has
	  3 root ports with a total of 6 lanes and Tegra124 has 2 root ports
	  with a total of 5 lanes. Some boards require this for Ethernet
	  support to work (e.g. beaver, jetson-tk1).

config PCI_OCTEONTX
	bool "OcteonTX PCI support"
	depends on (ARCH_OCTEONTX || ARCH_OCTEONTX2)
	help
	  Enable support for the OcteonTX/TX2 SoC family ECAM/PEM controllers.
	  These controllers provide PCI configuration access to all on-board
	  peripherals so it should only be disabled for testing purposes

config PCIE_OCTEON
	bool "MIPS Octeon PCIe support"
	depends on ARCH_OCTEON
	help
	  Enable support for the MIPS Octeon SoC family PCIe controllers.

config PCI_XILINX
	bool "Xilinx AXI Bridge for PCI Express"
	help
	  Enable support for the Xilinx AXI bridge for PCI express, an IP block
	  which can be used on some generations of Xilinx FPGAs.

config PCIE_LAYERSCAPE
	bool

config PCIE_LAYERSCAPE_RC
	bool "Layerscape PCIe Root Complex mode support"
	select PCIE_LAYERSCAPE
	help
	  Enable Layerscape PCIe Root Complex mode driver support. The Layerscape
	  SoC may have one or several PCIe controllers. Each controller can be
	  configured to Root Complex mode by clearing the corresponding bit of
	  RCW[HOST_AGT_PEX].

config PCI_IOMMU_EXTRA_MAPPINGS
	bool "Support for specifying extra IOMMU mappings for PCI"
	depends on PCIE_LAYERSCAPE_RC
	help
	  Enable support for specifying extra IOMMU mappings for PCI
	  controllers through a special env var called "pci_iommu_extra" or
	  through a device tree property named "pci-iommu-extra" placed in
	  the node describing the PCI controller.
	  The intent is to cover SR-IOV scenarios which need mappings for VFs
	  and PCI hot-plug scenarios. More documentation can be found under:
	    arch/arm/cpu/armv8/fsl-layerscape/doc/README.pci_iommu_extra

config PCIE_LAYERSCAPE_EP
	bool "Layerscape PCIe Endpoint mode support"
	select PCIE_LAYERSCAPE
	select PCI_ENDPOINT
	help
	  Enable Layerscape PCIe Endpoint mode driver support. The Layerscape
	  SoC may have one or several PCIe controllers. Each controller can be
	  configured to Endpoint mode by setting the corresponding bit of
	  RCW[HOST_AGT_PEX].

config PCIE_LAYERSCAPE_GEN4
	bool "Layerscape Gen4 PCIe support"
	help
	  Support PCIe Gen4 on NXP Layerscape SoCs, which may have one or
	  several PCIe controllers. The PCIe controller can work in RC or
	  EP mode according to RCW[HOST_AGT_PEX] setting.

config FSL_PCIE_COMPAT
	string "PCIe compatible of Kernel DT"
	depends on PCIE_LAYERSCAPE_RC || PCIE_LAYERSCAPE_GEN4
	default "fsl,ls1012a-pcie" if ARCH_LS1012A
	default "fsl,ls1028a-pcie" if ARCH_LS1028A
	default "fsl,ls1043a-pcie" if ARCH_LS1043A
	default "fsl,ls1046a-pcie" if ARCH_LS1046A
	default "fsl,ls2080a-pcie" if ARCH_LS2080A
	default "fsl,ls1088a-pcie" if ARCH_LS1088A
	default "fsl,lx2160a-pcie" if ARCH_LX2160A
	default "fsl,ls2088a-pcie" if ARCH_LX2162A
	default "fsl,ls1021a-pcie" if ARCH_LS1021A
	help
	  This compatible is used to find pci controller node in Kernel DT
	  to complete fixup.

config FSL_PCIE_EP_COMPAT
	string "PCIe EP compatible of Kernel DT"
	depends on PCIE_LAYERSCAPE_RC || PCIE_LAYERSCAPE_GEN4
	default "fsl,lx2160a-pcie-ep" if ARCH_LX2160A
	default "fsl,ls-pcie-ep"
	help
	  This compatible is used to find pci controller ep node in Kernel DT
	  to complete fixup.

config PCIE_INTEL_FPGA
	bool "Intel FPGA PCIe support"
	help
	  Say Y here if you want to enable PCIe controller support on Intel
	  FPGA, example Stratix 10.

config PCIE_IPROC
	bool "Iproc PCIe support"
	help
	  Broadcom iProc PCIe controller driver.
	  Say Y here if you want to enable Broadcom iProc PCIe controller,

config PCI_MVEBU
	bool "Enable Armada XP/38x PCIe driver"
	depends on ARCH_MVEBU
	select MISC
	help
	  Say Y here if you want to enable PCIe controller support on
	  Armada XP/38x SoCs.

config PCIE_DW_COMMON
	bool

config PCI_KEYSTONE
	bool "TI Keystone PCIe controller"
	select PCIE_DW_COMMON
	help
	  Say Y here if you want to enable PCI controller support on AM654 SoC.

config PCIE_MEDIATEK
	bool "MediaTek PCIe Gen2 controller"
	depends on ARCH_MEDIATEK
	help
	  Say Y here if you want to enable Gen2 PCIe controller,
	  which could be found on MT7623 SoC family.

config PCIE_DW_MESON
	bool "Amlogic Meson DesignWare based PCIe controller"
	depends on ARCH_MESON
	select PCIE_DW_COMMON
	help
	  Say Y here if you want to enable DW PCIe controller support on
	  Amlogic SoCs.

config PCIE_ROCKCHIP
	bool "Enable Rockchip PCIe driver"
	depends on ARCH_ROCKCHIP
	select PHY_ROCKCHIP_PCIE
	default y if ROCKCHIP_RK3399
	help
	  Say Y here if you want to enable PCIe controller support on
	  Rockchip SoCs.

config PCIE_DW_ROCKCHIP
	bool "Rockchip DesignWare based PCIe controller"
	depends on ARCH_ROCKCHIP
	select PCIE_DW_COMMON
	select PHY_ROCKCHIP_SNPS_PCIE3
	help
	  Say Y here if you want to enable DW PCIe controller support on
	  Rockchip SoCs.

config PCI_BRCMSTB
	bool "Broadcom STB PCIe controller"
	depends on ARCH_BCM283X
	help
	  Say Y here if you want to enable support for PCIe controller
	  on Broadcom set-top-box (STB) SoCs.
	  This driver currently supports only BCM2711 SoC and RC mode
	  of the controller.

config PCIE_UNIPHIER
	bool "Socionext UniPhier PCIe driver"
	depends on ARCH_UNIPHIER
	select PHY_UNIPHIER_PCIE
	help
	  Say Y here if you want to enable PCIe controller support on
	  UniPhier SoCs.

endif
