summaryrefslogtreecommitdiff
path: root/board/toradex/common/tdx-common.c
diff options
context:
space:
mode:
authorPhilippe Schenker <philippe.schenker@toradex.com>2022-06-03 16:09:14 +0200
committerPhilippe Schenker <philippe.schenker@toradex.com>2022-06-14 10:51:24 +0200
commit32957d21729fe2dc7ab12a42d751d1aa34c80618 (patch)
tree362427cae4e76bb87768444b604c11438713d97c /board/toradex/common/tdx-common.c
parent7eccd74f8ba64849398c6a994a2e6a099f926750 (diff)
toradex: tdx-cfg-block: extend assembly version
i[ backport https://lists.denx.de/pipermail/u-boot/2022-June/486350.html ] There are two decimal digits reserved to encode the module version and revision. This code so far implemented A-Z which used 0-25 of this range. This commit extends the range to make use of all 99 numbers. After capital letters the form with a hashtag and number (e.g. #26) is used. Examples: If the assembly version is between zero and 25 the numbering is as follows, as it also has been before this commit: 0: V0.0A 1: V0.0B ... 25: V0.0Z New numbering of assembly version: If the number is between 26 and 99 the new assembly version name is: 26: V0.0#26 27: V0.0#27 ... 99: V0.0#99 Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com> [ps: backport: replace dectoul() with simple_strtoul()]
Diffstat (limited to 'board/toradex/common/tdx-common.c')
-rw-r--r--board/toradex/common/tdx-common.c25
1 files changed, 20 insertions, 5 deletions
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index 8bf8e49b32..e2f1090bd2 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -24,7 +24,7 @@
#define SERIAL_STR_LEN 8
#define MODULE_VER_STR_LEN 4 // V1.1
-#define MODULE_REV_STR_LEN 1 // [A-Z]
+#define MODULE_REV_STR_LEN 3 // [A-Z] or #[26-99]
#ifdef CONFIG_TDX_CFG_BLOCK
static char tdx_serial_str[SERIAL_STR_LEN + 1];
@@ -83,6 +83,21 @@ void get_board_serial(struct tag_serialnr *serialnr)
}
#endif /* CONFIG_SERIAL_TAG */
+static const char *get_board_assembly(u16 ver_assembly)
+{
+ static char ver_name[MODULE_REV_STR_LEN + 1];
+
+ if (ver_assembly < 26) {
+ ver_name[0] = (char)ver_assembly + 'A';
+ ver_name[1] = '\0';
+ } else {
+ snprintf(ver_name, sizeof(ver_name),
+ "#%u", ver_assembly);
+ }
+
+ return ver_name;
+}
+
int show_board_info(void)
{
unsigned char ethaddr[6];
@@ -96,10 +111,10 @@ int show_board_info(void)
snprintf(tdx_serial_str, sizeof(tdx_serial_str),
"%08u", tdx_serial);
snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str),
- "V%1d.%1d%c",
+ "V%1d.%1d%s",
tdx_hw_tag.ver_major,
tdx_hw_tag.ver_minor,
- (char)tdx_hw_tag.ver_assembly + 'A');
+ get_board_assembly(tdx_hw_tag.ver_assembly));
env_set("serial#", tdx_serial_str);
@@ -118,10 +133,10 @@ int show_board_info(void)
snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
"%08u", tdx_car_serial);
snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str),
- "V%1d.%1d%c",
+ "V%1d.%1d%s",
tdx_car_hw_tag.ver_major,
tdx_car_hw_tag.ver_minor,
- (char)tdx_car_hw_tag.ver_assembly + 'A');
+ get_board_assembly(tdx_car_hw_tag.ver_assembly));
env_set("carrier_serial#", tdx_car_serial_str);
printf("Carrier: Toradex %s %s, Serial# %s\n",