From d4584502e99695c4e1be9cc073d492b350fd4533 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Mon, 17 Jul 2023 12:53:11 +0200 Subject: 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. Upstream-Status: Submitted [https://lore.kernel.org/all/20230718090734.20357-3-andrejs.cainikovs@toradex.com/] Signed-off-by: Max Krummenacher Signed-off-by: Andrejs Cainikovs --- board/toradex/common/tdx-cfg-block.c | 36 ++++++++++++++++++++++++++++-------- board/toradex/common/tdx-cfg-block.h | 3 ++- board/toradex/common/tdx-common.c | 6 +++--- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c index 5112e21c77..47c23f07b0 100644 --- a/board/toradex/common/tdx-cfg-block.c +++ b/board/toradex/common/tdx-cfg-block.c @@ -140,11 +140,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[] = { @@ -158,6 +164,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; @@ -637,10 +656,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); diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h index 45fa04ca38..7486ffbb54 100644 --- a/board/toradex/common/tdx-cfg-block.h +++ b/board/toradex/common/tdx-cfg-block.h @@ -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); diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index fadbe45541..de94036c47 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -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); -- cgit v1.2.3