toradex: tdx-cfg-block: rework carrier board name handling

Rework the rather big array of zero length strings with 4 entries of
actual carrier board names to a array of structs which ties a pid4
to its correspondent human readable string.
Provide an accessor to get the string for a given PID4.
Rework the user of the information to use the accessor.

Note that check_pid8_sanity() is used for early samples of Dahlia and
the development board. Yavia isn't affected.

Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
Signed-off-by: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
This commit is contained in:
Max Krummenacher
2023-08-04 13:32:39 -04:00
committed by Tom Rini
parent 94757b47f1
commit 39e521f756
3 changed files with 33 additions and 12 deletions
+28 -8
View File
@@ -142,11 +142,17 @@ const struct toradex_som toradex_modules[] = {
[70] = { "Verdin iMX8M Plus Quad 8GB WB IT", TARGET_IS_ENABLED(VERDIN_IMX8MP) },
};
const char * const toradex_carrier_boards[] = {
[0] = "UNKNOWN CARRIER BOARD",
[155] = "Dahlia",
[156] = "Verdin Development Board",
[173] = "Yavia",
struct pid4list {
int pid4;
char * const name;
};
const struct pid4list toradex_carrier_boards[] = {
/* the code assumes unknown at index 0 */
{0, "UNKNOWN CARRIER BOARD"},
{DAHLIA, "Dahlia"},
{VERDIN_DEVELOPMENT_BOARD, "Verdin Development Board"},
{YAVIA, "Yavia"},
};
const char * const toradex_display_adapters[] = {
@@ -160,6 +166,19 @@ const u32 toradex_ouis[] = {
[1] = 0x8c06cbUL,
};
const char * const get_toradex_carrier_boards(int pid4)
{
int i, index = 0;
for (i = 1; i < ARRAY_SIZE(toradex_carrier_boards); i++) {
if (pid4 == toradex_carrier_boards[i].pid4) {
index = i;
break;
}
}
return toradex_carrier_boards[index].name;
}
static u32 get_serial_from_mac(struct toradex_eth_addr *eth_addr)
{
int i;
@@ -639,10 +658,11 @@ static int get_cfgblock_carrier_interactive(void)
int ret = 0;
printf("Supported carrier boards:\n");
printf("CARRIER BOARD NAME\t\t [ID]\n");
printf("%30s\t[ID]\n", "CARRIER BOARD NAME");
for (int i = 0; i < ARRAY_SIZE(toradex_carrier_boards); i++)
if (toradex_carrier_boards[i])
printf("%s \t\t [%d]\n", toradex_carrier_boards[i], i);
printf("%30s\t[%d]\n",
toradex_carrier_boards[i].name,
toradex_carrier_boards[i].pid4);
sprintf(message, "Choose your carrier board (provide ID): ");
len = cli_readline(message);
+2 -1
View File
@@ -101,6 +101,7 @@ enum {
enum {
DAHLIA = 155,
VERDIN_DEVELOPMENT_BOARD = 156,
YAVIA = 173,
};
enum {
@@ -109,7 +110,6 @@ enum {
};
extern const struct toradex_som toradex_modules[];
extern const char * const toradex_carrier_boards[];
extern bool valid_cfgblock;
extern struct toradex_hw tdx_hw_tag;
extern struct toradex_hw tdx_car_hw_tag;
@@ -119,6 +119,7 @@ extern u32 tdx_car_serial;
int read_tdx_cfg_block(void);
int read_tdx_cfg_block_carrier(void);
const char * const get_toradex_carrier_boards(int pid4);
int try_migrate_tdx_cfg_block_carrier(void);
+3 -3
View File
@@ -31,7 +31,7 @@ static char tdx_board_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
#ifdef CONFIG_TDX_CFG_BLOCK_EXTRA
static char tdx_car_serial_str[SERIAL_STR_LEN + 1];
static char tdx_car_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
static char *tdx_carrier_board_name;
static const char *tdx_carrier_board_name;
#endif
#if defined(CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG)
@@ -125,8 +125,8 @@ int show_board_info(void)
printf("MISSING TORADEX CARRIER CONFIG BLOCKS\n");
try_migrate_tdx_cfg_block_carrier();
} else {
tdx_carrier_board_name = (char *)
toradex_carrier_boards[tdx_car_hw_tag.prodid];
tdx_carrier_board_name =
get_toradex_carrier_boards(tdx_car_hw_tag.prodid);
snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
"%08u", tdx_car_serial);