# 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
	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

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_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).

endif
