menuconfig SYSINFO
	bool "Device System Information"
	help
	  Support methods to query hardware configurations from internal
	  mechanisms (e.g. reading GPIO values, determining the presence of
	  devices on busses, etc.). This enables the usage of U-Boot with
	  modular board architectures.

if SYSINFO

config SPL_SYSINFO
	depends on SPL_DM
	bool "Enable board driver support in SPL"

config SYSINFO_GAZERBEAM
	bool "Enable sysinfo driver for the Gazerbeam board"
	help
	  Support querying device information for the gdsys Gazerbeam board.

config SYSINFO_RCAR3
	bool "Enable sysinfo driver for the Renesas R-Car Gen3"
	depends on RCAR_GEN3 && I2C_EEPROM
	default y if RCAR_GEN3
	help
	  Support querying SoC version information for Renesas R-Car Gen3.

config SYSINFO_SANDBOX
	bool "Enable sysinfo driver for the Sandbox board"
	help
	  Support querying device information for the Sandbox boards.

config SYSINFO_SMBIOS
	bool "Provide a default sysinfo driver for SMBIOS information"
	help
	  Some boards want to specify the manufacturer or product name but do
	  not need to have their own sysinfo driver. This includes a default
	  one which provides a way to specify this SMBIOS information in the
	  devicetree, without needing any board-specific functionality.

config SYSINFO_GPIO
	bool "Enable gpio sysinfo driver"
	help
	  Support querying gpios to determine board revision. This uses gpios to
	  form a ternary number (when they are pulled-up, -down, or floating).
	  This ternary number is then mapped to a board revision name using
	  device tree properties.

endif
