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"
	default n
	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"
	default n
	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
	default n
	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"
	default n
	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"
        default n
        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"
	default n
	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"
	default n
	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
	default n

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
