]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
toradex: tdx-cfg-block: rework carrier board name handling
authorMax Krummenacher <max.krummenacher@toradex.com>
Tue, 18 Jul 2023 09:07:33 +0000 (11:07 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 4 Aug 2023 17:32:39 +0000 (13:32 -0400)
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>
board/toradex/common/tdx-cfg-block.c
board/toradex/common/tdx-cfg-block.h
board/toradex/common/tdx-common.c

index 0cf5c353c8a786f6013574e1cb5df6847a999bd3..98a2d44ed3e8ad16c4eabbcda39d19f4548d74fb 100644 (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);
index 45fa04ca38ae182d5f9402c855ff499f61a71ef7..7486ffbb54168348ae8ad9976df82062f4ca07bc 100644 (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);
 
index 071961f3d93730854691b1fed24040b81f668f97..d1449143977ba03399b99e4fab32f4bb6dc98d26 100644 (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);