# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2016 Toradex, Inc.

menuconfig TDX_CFG_BLOCK
	bool "Enable Toradex config block support"
	select OF_BOARD_SETUP
	select SYSINFO
	help
	  The Toradex config block stored production data on the on-module
	  flash device (NAND, NOR or eMMC). The area is normally preserved by
	  software and contains the serial number (out of which the MAC
	  address is generated) and the exact module type.

# Helper config to determine the correct default location of the cfg block
config TDX_HAVE_MMC
	bool

config TDX_HAVE_NAND
	bool

config TDX_HAVE_NOR
	bool

config TDX_HAVE_EEPROM
	bool

config TDX_HAVE_EEPROM_EXTRA
	bool

if TDX_CFG_BLOCK

config TDX_CFG_BLOCK_IS_IN_MMC
	bool
	depends on TDX_HAVE_MMC
	default y

config TDX_CFG_BLOCK_IS_IN_NAND
	bool
	depends on TDX_HAVE_NAND
	default y

config TDX_CFG_BLOCK_IS_IN_NOR
	bool
	depends on TDX_HAVE_NOR
	default y

config TDX_CFG_BLOCK_IS_IN_EEPROM
	bool
	depends on TDX_HAVE_EEPROM
	default y

config TDX_CFG_BLOCK_DEV
	int "Toradex config block eMMC device ID"
	depends on TDX_CFG_BLOCK_IS_IN_MMC

config TDX_CFG_BLOCK_PART
	int "Toradex config block eMMC partition ID"
	depends on TDX_CFG_BLOCK_IS_IN_MMC

config TDX_CFG_BLOCK_OFFSET
	int "Toradex config block offset"
	help
	  Specify the byte offset of the Toradex config block within the flash
	  device the config block is stored on.

config TDX_CFG_BLOCK_OFFSET2
	int "Toradex config block offset, second instance"
	default 0
	help
	  Specify the byte offset of the 2nd instance of the Toradex config block
	  within the flash device the config block is stored on.
	  Set to 0 on modules which have no 2nd instance.

config TDX_CFG_BLOCK_2ND_ETHADDR
	bool "Set the second Ethernet address"
	help
	  For each serial number two Ethernet addresses are available for dual
	  Ethernet carrier boards. This options enables the code to set the
	  second Ethernet address as environment variable (eth1addr).

config TDX_CFG_BLOCK_EXTRA
	bool "Support for additional EEPROMs (carrier board, display adapter)"
	depends on TDX_HAVE_EEPROM_EXTRA
	help
	  Enables fetching auxilary config blocks from carrier board/display
	  adapter EEPROMs.

config TDX_CFG_BLOCK_USB_GADGET_PID
	bool "Use config block product ID as USB product ID"
	depends on USB_GADGET_DOWNLOAD
	default y
	help
	  Use the Toradex product ID learned from the config block as USB
	  product ID. An offset of 0x4000 is added to the product ID since
	  inside the Toradex vendor ID (0x1b67) the range starting from
	  offset 0x4000 is reserved for Colibri/Apalis modules.

endif
