# SPDX-License-Identifier: GPL-2.0-only
#
# FPGA framework configuration
#

menuconfig FPGA
	tristate "FPGA Configuration Framework"
	help
	  Say Y here if you want support for configuring FPGAs from the
	  kernel.  The FPGA framework adds an FPGA manager class and FPGA
	  manager drivers.

if FPGA

config FPGA_MGR_SOCFPGA
	tristate "Altera SOCFPGA FPGA Manager"
	depends on ARCH_INTEL_SOCFPGA || COMPILE_TEST
	help
	  FPGA manager driver support for Altera SOCFPGA.

config FPGA_MGR_SOCFPGA_A10
	tristate "Altera SoCFPGA Arria10"
	depends on ARCH_INTEL_SOCFPGA || COMPILE_TEST
	select REGMAP_MMIO
	help
	  FPGA manager driver support for Altera Arria10 SoCFPGA.

config ALTERA_PR_IP_CORE
	tristate "Altera Partial Reconfiguration IP Core"
	help
	  Core driver support for Altera Partial Reconfiguration IP component

config ALTERA_PR_IP_CORE_PLAT
	tristate "Platform support of Altera Partial Reconfiguration IP Core"
	depends on ALTERA_PR_IP_CORE && OF && HAS_IOMEM
	help
	  Platform driver support for Altera Partial Reconfiguration IP
	  component

config FPGA_MGR_ALTERA_PS_SPI
	tristate "Altera FPGA Passive Serial over SPI"
	depends on SPI
	select BITREVERSE
	help
	  FPGA manager driver support for Altera Arria/Cyclone/Stratix
	  using the passive serial interface over SPI.

config FPGA_MGR_ALTERA_CVP
	tristate "Altera CvP FPGA Manager"
	depends on PCI
	help
	  FPGA manager driver support for Arria-V, Cyclone-V, Stratix-V,
	  Arria 10 and Stratix10 Altera FPGAs using the CvP interface over PCIe.

config FPGA_MGR_ZYNQ_FPGA
	tristate "Xilinx Zynq FPGA"
	depends on ARCH_ZYNQ || COMPILE_TEST
	help
	  FPGA manager driver support for Xilinx Zynq FPGAs.

config FPGA_MGR_STRATIX10_SOC
	tristate "Intel Stratix10 SoC FPGA Manager"
	depends on (ARCH_INTEL_SOCFPGA && INTEL_STRATIX10_SERVICE)
	help
	  FPGA manager driver support for the Intel Stratix10 SoC.

config FPGA_MGR_XILINX_CORE
	tristate

config FPGA_MGR_XILINX_SELECTMAP
	tristate "Xilinx Configuration over SelectMAP"
	depends on HAS_IOMEM
	select FPGA_MGR_XILINX_CORE
	help
	  FPGA manager driver support for Xilinx FPGA configuration
	  over SelectMAP interface.

config FPGA_MGR_XILINX_SPI
	tristate "Xilinx Configuration over Slave Serial (SPI)"
	depends on SPI
	select FPGA_MGR_XILINX_CORE
	help
	  FPGA manager driver support for Xilinx FPGA configuration
	  over slave serial interface.

config FPGA_MGR_ICE40_SPI
	tristate "Lattice iCE40 SPI"
	depends on OF && SPI
	help
	  FPGA manager driver support for Lattice iCE40 FPGAs over SPI.

config FPGA_MGR_MACHXO2_SPI
	tristate "Lattice MachXO2 SPI"
	depends on SPI
	help
	  FPGA manager driver support for Lattice MachXO2 configuration
	  over slave SPI interface.

config FPGA_MGR_TS73XX
	tristate "Technologic Systems TS-73xx SBC FPGA Manager"
	depends on ARCH_EP93XX && MACH_TS72XX
	help
	  FPGA manager driver support for the Altera Cyclone II FPGA
	  present on the TS-73xx SBC boards.

config FPGA_BRIDGE
	tristate "FPGA Bridge Framework"
	help
	  Say Y here if you want to support bridges connected between host
	  processors and FPGAs or between FPGAs.

config SOCFPGA_FPGA_BRIDGE
	tristate "Altera SoCFPGA FPGA Bridges"
	depends on ARCH_INTEL_SOCFPGA && FPGA_BRIDGE
	help
	  Say Y to enable drivers for FPGA bridges for Altera SOCFPGA
	  devices.

config ALTERA_FREEZE_BRIDGE
	tristate "Altera FPGA Freeze Bridge"
	depends on FPGA_BRIDGE && HAS_IOMEM
	help
	  Say Y to enable drivers for Altera FPGA Freeze bridges.  A
	  freeze bridge is a bridge that exists in the FPGA fabric to
	  isolate one region of the FPGA from the busses while that
	  region is being reprogrammed.

config XILINX_PR_DECOUPLER
	tristate "Xilinx LogiCORE PR Decoupler"
	depends on FPGA_BRIDGE
	depends on HAS_IOMEM
	help
	  Say Y to enable drivers for Xilinx LogiCORE PR Decoupler
	  or Xilinx Dynamic Function eXchange AIX Shutdown Manager.
	  The PR Decoupler exists in the FPGA fabric to isolate one
	  region of the FPGA from the busses while that region is
	  being reprogrammed during partial reconfig.
	  The Dynamic Function eXchange AXI shutdown manager prevents
	  AXI traffic from passing through the bridge. The controller
	  safely handles AXI4MM and AXI4-Lite interfaces on a
	  Reconfigurable Partition when it is undergoing dynamic
	  reconfiguration, preventing the system deadlock that can
	  occur if AXI transactions are interrupted by DFX.

config FPGA_REGION
	tristate "FPGA Region"
	depends on FPGA_BRIDGE
	help
	  FPGA Region common code.  An FPGA Region controls an FPGA Manager
	  and the FPGA Bridges associated with either a reconfigurable
	  region of an FPGA or a whole FPGA.

config OF_FPGA_REGION
	tristate "FPGA Region Device Tree Overlay Support"
	depends on OF && FPGA_REGION
	help
	  Support for loading FPGA images by applying a Device Tree
	  overlay.

config FPGA_DFL
	tristate "FPGA Device Feature List (DFL) support"
	select FPGA_BRIDGE
	select FPGA_REGION
	depends on HAS_IOMEM
	help
	  Device Feature List (DFL) defines a feature list structure that
	  creates a linked list of feature headers within the MMIO space
	  to provide an extensible way of adding features for FPGA.
	  Driver can walk through the feature headers to enumerate feature
	  devices (e.g. FPGA Management Engine, Port and Accelerator
	  Function Unit) and their private features for target FPGA devices.

	  Select this option to enable common support for Field-Programmable
	  Gate Array (FPGA) solutions which implement Device Feature List.
	  It provides enumeration APIs and feature device infrastructure.

config FPGA_DFL_FME
	tristate "FPGA DFL FME Driver"
	depends on FPGA_DFL && HWMON && PERF_EVENTS
	help
	  The FPGA Management Engine (FME) is a feature device implemented
	  under Device Feature List (DFL) framework. Select this option to
	  enable the platform device driver for FME which implements all
	  FPGA platform level management features. There shall be one FME
	  per DFL based FPGA device.

config FPGA_DFL_FME_MGR
	tristate "FPGA DFL FME Manager Driver"
	depends on FPGA_DFL_FME && HAS_IOMEM
	help
	  Say Y to enable FPGA Manager driver for FPGA Management Engine.

config FPGA_DFL_FME_BRIDGE
	tristate "FPGA DFL FME Bridge Driver"
	depends on FPGA_DFL_FME && HAS_IOMEM
	help
	  Say Y to enable FPGA Bridge driver for FPGA Management Engine.

config FPGA_DFL_FME_REGION
	tristate "FPGA DFL FME Region Driver"
	depends on FPGA_DFL_FME && HAS_IOMEM
	help
	  Say Y to enable FPGA Region driver for FPGA Management Engine.

config FPGA_DFL_AFU
	tristate "FPGA DFL AFU Driver"
	depends on FPGA_DFL
	help
	  This is the driver for FPGA Accelerated Function Unit (AFU) which
	  implements AFU and Port management features. A User AFU connects
	  to the FPGA infrastructure via a Port. There may be more than one
	  Port/AFU per DFL based FPGA device.

config FPGA_DFL_NIOS_INTEL_PAC_N3000
	tristate "FPGA DFL NIOS Driver for Intel PAC N3000"
	depends on FPGA_DFL
	select REGMAP
	help
	  This is the driver for the N3000 Nios private feature on Intel
	  PAC (Programmable Acceleration Card) N3000. It communicates
	  with the embedded Nios processor to configure the retimers on
	  the card. It also instantiates the SPI master (spi-altera) for
	  the card's BMC (Board Management Controller).

config FPGA_DFL_PCI
	tristate "FPGA DFL PCIe Device Driver"
	depends on PCI && FPGA_DFL
	help
	  Select this option to enable PCIe driver for PCIe-based
	  Field-Programmable Gate Array (FPGA) solutions which implement
	  the Device Feature List (DFL). This driver provides interfaces
	  for userspace applications to configure, enumerate, open and access
	  FPGA accelerators on the FPGA DFL devices, enables system level
	  management functions such as FPGA partial reconfiguration, power
	  management and virtualization with DFL framework and DFL feature
	  device drivers.

	  To compile this as a module, choose M here.

config FPGA_MGR_ZYNQMP_FPGA
	tristate "Xilinx ZynqMP FPGA"
	depends on ZYNQMP_FIRMWARE || (!ZYNQMP_FIRMWARE && COMPILE_TEST)
	help
	  FPGA manager driver support for Xilinx ZynqMP FPGAs.
	  This driver uses the processor configuration port(PCAP)
	  to configure the programmable logic(PL) through PS
	  on ZynqMP SoC.

config FPGA_MGR_VERSAL_FPGA
	tristate "Xilinx Versal FPGA"
	depends on ARCH_ZYNQMP || COMPILE_TEST
	help
	  Select this option to enable FPGA manager driver support for
	  Xilinx Versal SoC. This driver uses the firmware interface to
	  configure the programmable logic(PL).

	  To compile this as a module, choose M here.

config FPGA_M10_BMC_SEC_UPDATE
	tristate "Intel MAX10 BMC Secure Update driver"
	depends on MFD_INTEL_M10_BMC_CORE
	select FW_LOADER
	select FW_UPLOAD
	help
	  Secure update support for the Intel MAX10 board management
	  controller.

	  This is a subdriver of the Intel MAX10 board management controller
	  (BMC) and provides support for secure updates for the BMC image,
	  the FPGA image, the Root Entry Hashes, etc.

config FPGA_MGR_MICROCHIP_SPI
	tristate "Microchip Polarfire SPI FPGA manager"
	depends on SPI
	help
	  FPGA manager driver support for Microchip Polarfire FPGAs
	  programming over slave SPI interface with .dat formatted
	  bitstream image.

config FPGA_MGR_LATTICE_SYSCONFIG
	tristate

config FPGA_MGR_LATTICE_SYSCONFIG_SPI
	tristate "Lattice sysCONFIG SPI FPGA manager"
	depends on SPI
	select FPGA_MGR_LATTICE_SYSCONFIG
	help
	  FPGA manager driver support for Lattice FPGAs programming over slave
	  SPI sysCONFIG interface.

source "drivers/fpga/tests/Kconfig"

endif # FPGA
