menuconfig PCI
	bool "PCI support"
	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.

if PCI

config DM_PCI
	bool "Enable driver model for PCI"
	depends on DM
	help
	  Use driver model for PCI. Driver model is the new method for
	  orgnising devices in U-Boot. For PCI, driver model keeps track of
	  available PCI devices, allows scanning of PCI buses and provides
	  device configuration support.

config DM_PCI_COMPAT
	bool "Enable compatible functions for PCI"
	depends on DM_PCI
	help
	  Enable compatibility functions for PCI so that old code can be used
	  with CONFIG_DM_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_PCI
	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"
	depends on PCI || DM_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"
	depends on PCI || DM_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_SRIOV
	bool "Enable Single Root I/O Virtualization support for PCI"
	depends on PCI || DM_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"
        depends on PCI || DM_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
	depends on DM_PCI
	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 PCI_PHYTIUM
	bool "Phytium PCIe support"
	depends on DM_PCI
	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 DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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 DM_PCI
	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 DM_PCI
	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 && DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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"
	depends on DM_PCI
	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 DM_PCI
	select MISC
	help
	  Say Y here if you want to enable PCIe controller support on
	  Armada XP/38x SoCs.

config PCIE_DW_COMMON
	bool
	select DM_PCI

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 DM_PCI
	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 DM_PCI
	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 DM_PCI
	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.
endif
