# SPDX-License-Identifier: GPL-2.0-only
#
# FMC (ANSI-VITA 57.1) bus support
#

menuconfig FMC
	tristate "FMC support"
	help

	  FMC (FPGA Mezzanine Carrier) is a mechanical and electrical
	  standard for mezzanine cards that plug into a carrier board.
	  This kernel subsystem supports the matching between carrier
	  and mezzanine based on identifiers stored in the internal I2C
	  EEPROM, as well as having carrier-independent drivers.

	  The framework was born outside of the kernel and at this time
	  the off-tree code base is more complete.  Code and documentation
	  is at git://ohwr.org/fmc-projects/fmc-bus.git .

if FMC

config FMC_FAKEDEV
	tristate "FMC fake device (software testing)"
	help
	  This is a fake carrier, bringing a default EEPROM content
	  that can be rewritten at run time and usef for matching
	  mezzanines.

config FMC_TRIVIAL
	tristate "FMC trivial mezzanine driver (software testing)"
	help
	  This is a fake mezzanine driver, to show how FMC works and test it.
	  The driver also handles interrupts (we used it with a real carrier
	  before the mezzanines were produced)

config FMC_WRITE_EEPROM
	tristate "FMC mezzanine driver to write I2C EEPROM"
	help
	  This driver matches every mezzanine device and can write the
	  internal EEPROM of the PCB, using the firmware loader to get
	  its binary and the function carrier->reprogram to actually do it.
	  It is useful when the mezzanines are produced.

config FMC_CHARDEV
	tristate "FMC mezzanine driver that registers a char device"
	help
	  This driver matches every mezzanine device and allows user
	  space to read and write registers using a char device. It
	  can be used to write user-space drivers, or just get
	  acquainted with a mezzanine before writing its specific driver.

endif # FMC
