summaryrefslogtreecommitdiff
path: root/board/toradex/common/tdx-common.c
diff options
context:
space:
mode:
authorIgor Opaniuk <igor.opaniuk@toradex.com>2020-04-06 22:22:16 +0300
committerIgor Opaniuk <igor.opaniuk@toradex.com>2020-05-04 21:42:21 +0300
commit4554a0918af7e74c934a3ad707aba10ef31e111a (patch)
tree5b595365e64bad1a7d7d5f1225fd92d39c619ac5 /board/toradex/common/tdx-common.c
parentc4731c7ad61e1d4f022bfae14345956b07af47bd (diff)
toradex: tdx-cfg-block: add support for EEPROM
This introduces support for EEPROM as a storage for the main Toradex config block and additional config blocks on extra EEPROM chips (on carrier board or video adapters). To enable EEPROM as a storage for the main config block: TDX_HAVE_EEPROM=y. For additional EEPROMs please enable this Kconfig symbol: TDX_CFG_BLOCK_EXTRA=y. Information about existing EEPROM chips is provide via Device Tree using aliases. You can also write configuration for the carrier board using create_carrier subcommand for cfgblock. Example: Verdin iMX8MM # cfgblock create_carrier Supported carrier boards: UNKNOWN CARRIER = [0] Verdin Carrier Board = [1] Choose your carrier board (provide ID): 1 Enter carrier board version (e.g. V1.1B): V1.0A Enter carrier board serial number: 10622780 Also with barcode: cVerdin iMX8MM # cfgblock create carrier -y 0156100010622780 Relates-to: ELB-1402 Signed-off-by: Igor Opaniuk <igor.opaniuk@toradex.com>
Diffstat (limited to 'board/toradex/common/tdx-common.c')
-rw-r--r--board/toradex/common/tdx-common.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index b983424fc4..3d825774b7 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -18,6 +18,9 @@
static char tdx_serial_str[9];
static char tdx_board_rev_str[6];
+static char tdx_car_serial_str[9];
+static char tdx_car_rev_str[6];
+
#ifdef CONFIG_REVISION_TAG
u32 get_board_rev(void)
{
@@ -69,6 +72,7 @@ int show_board_info(void)
{
unsigned char ethaddr[6];
char* tdx_module_name;
+ char* tdx_carrier_name;
if (read_tdx_cfg_block()) {
printf("MISSING TORADEX CONFIG BLOCK\n");
@@ -83,6 +87,7 @@ int show_board_info(void)
tdx_module_name = (char *)
toradex_modules[tdx_hw_tag.prodid];
}
+
sprintf(tdx_serial_str, "%08u", tdx_serial);
sprintf(tdx_board_rev_str, "V%1d.%1d%c",
tdx_hw_tag.ver_major,
@@ -95,6 +100,27 @@ int show_board_info(void)
tdx_module_name,
tdx_board_rev_str,
tdx_serial_str);
+#ifdef CONFIG_TDX_CFG_BLOCK_EXTRA
+ if (read_tdx_cfg_block_extra()) {
+ printf("MISSING TORADEX EXTRA CONFIG BLOCKS\n");
+ } else {
+ tdx_carrier_name = (char *)
+ toradex_carriers[tdx_car_hw_tag.prodid];
+
+ sprintf(tdx_car_serial_str, "%08u", tdx_car_serial);
+ sprintf(tdx_car_rev_str, "V%1d.%1d%c",
+ tdx_car_hw_tag.ver_major,
+ tdx_car_hw_tag.ver_minor,
+ (char)tdx_car_hw_tag.ver_assembly +
+ 'A');
+
+ env_set("carrier_serial#", tdx_car_serial_str);
+ printf("Carrier: Toradex %s %s, Serial# %s\n",
+ tdx_carrier_name,
+ tdx_car_rev_str,
+ tdx_car_serial_str);
+ }
+#endif
}
/*