From 18f7a36452663dedd9b6f6e6377bc68890b5604c Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Thu, 14 Jul 2022 12:29:04 +0200 Subject: u-boot: apply patches not currently in v2022.07 Apply patches needed for Toradex SoM which were applied after v2022.07 or are still in flight. xxxxxxxxxxx toradex: tdx-cfg-block: add 0068 i.mx 8m mini sku 1cf4e79f577 toradex: tdx-cfg-block: add new toradex oui range 7e27ce16c5d toradex: tdx-cfg-block: extend assembly version 494ef10c3bf toradex: tdx-cfg-block: use defines for string length 39ff0624bc5 toradex: tdx-cfg-block: use only snprintf Related-to: ELB-4601 Signed-off-by: Max Krummenacher --- ...1-toradex-tdx-cfg-block-use-only-snprintf.patch | 71 ++++++++ ...x-cfg-block-use-defines-for-string-length.patch | 45 +++++ ...dex-tdx-cfg-block-extend-assembly-version.patch | 181 +++++++++++++++++++++ ...x-tdx-cfg-block-add-new-toradex-oui-range.patch | 129 +++++++++++++++ ...x-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch | 95 +++++++++++ recipes-bsp/u-boot/u-boot_%.bbappend | 13 ++ 6 files changed, 534 insertions(+) create mode 100644 recipes-bsp/u-boot/u-boot/0001-toradex-tdx-cfg-block-use-only-snprintf.patch create mode 100644 recipes-bsp/u-boot/u-boot/0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch create mode 100644 recipes-bsp/u-boot/u-boot/0003-toradex-tdx-cfg-block-extend-assembly-version.patch create mode 100644 recipes-bsp/u-boot/u-boot/0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch create mode 100644 recipes-bsp/u-boot/u-boot/0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch (limited to 'recipes-bsp') diff --git a/recipes-bsp/u-boot/u-boot/0001-toradex-tdx-cfg-block-use-only-snprintf.patch b/recipes-bsp/u-boot/u-boot/0001-toradex-tdx-cfg-block-use-only-snprintf.patch new file mode 100644 index 0000000..bd03630 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0001-toradex-tdx-cfg-block-use-only-snprintf.patch @@ -0,0 +1,71 @@ +From e97bff4bdac99b0ba5251275551741f4039b23e0 Mon Sep 17 00:00:00 2001 +From: Philippe Schenker +Date: Mon, 13 Jun 2022 19:35:21 +0200 +Subject: [PATCH 1/5] toradex: tdx-cfg-block: use only snprintf + +Prevent memory issues that could appear with sprintf. Replace all +sprintf occurences with snprintf. + +Upstream-Status: Backport [39ff0624bc5ad287fced0f60be9b977d07b1813a] +Signed-off-by: Philippe Schenker +Reviewed-by: Francesco Dolcini +Acked-by: Marcel Ziswiler +--- + board/toradex/common/tdx-common.c | 27 +++++++++++++++------------ + 1 file changed, 15 insertions(+), 12 deletions(-) + +diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c +index 9db4553e0f7..2207818447a 100644 +--- a/board/toradex/common/tdx-common.c ++++ b/board/toradex/common/tdx-common.c +@@ -89,11 +89,13 @@ int show_board_info(void) + tdx_eth_addr.nic = htonl(tdx_serial << 8); + checkboard(); + } else { +- sprintf(tdx_serial_str, "%08u", tdx_serial); +- sprintf(tdx_board_rev_str, "V%1d.%1d%c", +- tdx_hw_tag.ver_major, +- tdx_hw_tag.ver_minor, +- (char)tdx_hw_tag.ver_assembly + 'A'); ++ 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", ++ tdx_hw_tag.ver_major, ++ tdx_hw_tag.ver_minor, ++ (char)tdx_hw_tag.ver_assembly + 'A'); + + env_set("serial#", tdx_serial_str); + +@@ -109,12 +111,13 @@ int show_board_info(void) + tdx_carrier_board_name = (char *) + toradex_carrier_boards[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'); ++ 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", ++ 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", +@@ -170,7 +173,7 @@ int ft_common_board_setup(void *blob, struct bd_info *bd) + if (tdx_hw_tag.ver_major) { + char prod_id[5]; + +- sprintf(prod_id, "%04u", tdx_hw_tag.prodid); ++ snprintf(prod_id, sizeof(prod_id), "%04u", tdx_hw_tag.prodid); + fdt_setprop(blob, 0, "toradex,product-id", prod_id, 5); + + fdt_setprop(blob, 0, "toradex,board-rev", tdx_board_rev_str, +-- +2.20.1 + diff --git a/recipes-bsp/u-boot/u-boot/0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch b/recipes-bsp/u-boot/u-boot/0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch new file mode 100644 index 0000000..4a6fd83 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch @@ -0,0 +1,45 @@ +From 44c266438be85e0431a490a60a4ab3f174ecca77 Mon Sep 17 00:00:00 2001 +From: Philippe Schenker +Date: Mon, 13 Jun 2022 19:35:22 +0200 +Subject: [PATCH 2/5] toradex: tdx-cfg-block: use defines for string length + +With those defines the length can be reused and is in one place +extendable. + +Upstream-Status: Backport [494ef10c3bf7859e7d21d9e1d608dc0b634451c2] +Signed-off-by: Philippe Schenker +Reviewed-by: Francesco Dolcini +Acked-by: Marcel Ziswiler +--- + board/toradex/common/tdx-common.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c +index 2207818447a..94e603c14f4 100644 +--- a/board/toradex/common/tdx-common.c ++++ b/board/toradex/common/tdx-common.c +@@ -22,13 +22,17 @@ + + #define TORADEX_OUI 0x00142dUL + ++#define SERIAL_STR_LEN 8 ++#define MODULE_VER_STR_LEN 4 // V1.1 ++#define MODULE_REV_STR_LEN 1 // [A-Z] ++ + #ifdef CONFIG_TDX_CFG_BLOCK +-static char tdx_serial_str[9]; +-static char tdx_board_rev_str[6]; ++static char tdx_serial_str[SERIAL_STR_LEN + 1]; ++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[9]; +-static char tdx_car_rev_str[6]; ++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; + #endif + +-- +2.20.1 + diff --git a/recipes-bsp/u-boot/u-boot/0003-toradex-tdx-cfg-block-extend-assembly-version.patch b/recipes-bsp/u-boot/u-boot/0003-toradex-tdx-cfg-block-extend-assembly-version.patch new file mode 100644 index 0000000..a92a535 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0003-toradex-tdx-cfg-block-extend-assembly-version.patch @@ -0,0 +1,181 @@ +From a7021f904505da69155257612c8cb011be735290 Mon Sep 17 00:00:00 2001 +From: Philippe Schenker +Date: Mon, 13 Jun 2022 19:35:23 +0200 +Subject: [PATCH 3/5] toradex: tdx-cfg-block: extend assembly version + +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 + +Upstream-Status: Backport [7e27ce16c5d289e5b9712a179e798ea4eb831816] +Signed-off-by: Philippe Schenker +Reviewed-by: Francesco Dolcini +Acked-by: Marcel Ziswiler +--- + board/toradex/common/tdx-cfg-block.c | 32 ++++++++++++++++++++++++---- + board/toradex/common/tdx-common.c | 25 +++++++++++++++++----- + 2 files changed, 48 insertions(+), 9 deletions(-) + +diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c +index 6c8cf4592d1..678d4e07c21 100644 +--- a/board/toradex/common/tdx-cfg-block.c ++++ b/board/toradex/common/tdx-cfg-block.c +@@ -354,6 +354,18 @@ out: + return ret; + } + ++static int parse_assembly_string(char *string_to_parse, u16 *assembly) ++{ ++ if (string_to_parse[3] >= 'A' && string_to_parse[3] <= 'Z') ++ *assembly = string_to_parse[3] - 'A'; ++ else if (string_to_parse[3] == '#') ++ *assembly = dectoul(&string_to_parse[4], NULL); ++ else ++ return -EINVAL; ++ ++ return 0; ++} ++ + static int get_cfgblock_interactive(void) + { + char message[CONFIG_SYS_CBSIZE]; +@@ -362,6 +374,7 @@ static int get_cfgblock_interactive(void) + char wb = 'n'; + char mem8g = 'n'; + int len = 0; ++ int ret = 0; + + /* Unknown module by default */ + tdx_hw_tag.prodid = 0; +@@ -545,13 +558,18 @@ static int get_cfgblock_interactive(void) + } + + while (len < 4) { +- sprintf(message, "Enter the module version (e.g. V1.1B): V"); ++ sprintf(message, "Enter the module version (e.g. V1.1B or V1.1#26): V"); + len = cli_readline(message); + } + + tdx_hw_tag.ver_major = console_buffer[0] - '0'; + tdx_hw_tag.ver_minor = console_buffer[2] - '0'; +- tdx_hw_tag.ver_assembly = console_buffer[3] - 'A'; ++ ++ ret = parse_assembly_string(console_buffer, &tdx_hw_tag.ver_assembly); ++ if (ret) { ++ printf("Parsing module version failed\n"); ++ return ret; ++ } + + while (len < 8) { + sprintf(message, "Enter module serial number: "); +@@ -754,6 +772,7 @@ static int get_cfgblock_carrier_interactive(void) + { + char message[CONFIG_SYS_CBSIZE]; + int len; ++ int ret = 0; + + printf("Supported carrier boards:\n"); + printf("CARRIER BOARD NAME\t\t [ID]\n"); +@@ -767,13 +786,18 @@ static int get_cfgblock_carrier_interactive(void) + tdx_car_hw_tag.prodid = dectoul(console_buffer, NULL); + + do { +- sprintf(message, "Enter carrier board version (e.g. V1.1B): V"); ++ sprintf(message, "Enter carrier board version (e.g. V1.1B or V1.1#26): V"); + len = cli_readline(message); + } while (len < 4); + + tdx_car_hw_tag.ver_major = console_buffer[0] - '0'; + tdx_car_hw_tag.ver_minor = console_buffer[2] - '0'; +- tdx_car_hw_tag.ver_assembly = console_buffer[3] - 'A'; ++ ++ ret = parse_assembly_string(console_buffer, &tdx_car_hw_tag.ver_assembly); ++ if (ret) { ++ printf("Parsing module version failed\n"); ++ return ret; ++ } + + while (len < 8) { + sprintf(message, "Enter carrier board serial number: "); +diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c +index 94e603c14f4..5ad5d00a0d9 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", +-- +2.20.1 + diff --git a/recipes-bsp/u-boot/u-boot/0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch b/recipes-bsp/u-boot/u-boot/0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch new file mode 100644 index 0000000..a7f0ba3 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch @@ -0,0 +1,129 @@ +From 7a969112a87c8c6037f07e952213e8696af41c35 Mon Sep 17 00:00:00 2001 +From: Philippe Schenker +Date: Mon, 20 Jun 2022 16:57:45 +0200 +Subject: [PATCH 4/5] toradex: tdx-cfg-block: add new toradex oui range + +Add new Toradex MAC OUI (8c:06:cb), to the config block. With this change +we extend the possible serial-numbers as follows: + +For serial-numbers 00000000-16777215 OUI 00:14:2d is taken +For serial-numbers 16777216-33554431 OUI 8c:06:cb is taken + +Lower 24-bit of the serial number are used in the NIC part of the +MAC address, the complete serial number can be calculated using the OUI. + +Upstream-Status: Backport [1cf4e79f5776e9cc451b7f4affec7e47db9533f9] +Signed-off-by: Philippe Schenker +Reviewed-by: Francesco Dolcini +Reviewed-by: Fabio Estevam +Acked-by: Marcel Ziswiler +--- + board/toradex/common/tdx-cfg-block.c | 42 +++++++++++++++++++++++++--- + board/toradex/common/tdx-cfg-block.h | 2 ++ + board/toradex/common/tdx-common.c | 5 +--- + 3 files changed, 41 insertions(+), 8 deletions(-) + +diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c +index 678d4e07c21..9305709a3c0 100644 +--- a/board/toradex/common/tdx-cfg-block.c ++++ b/board/toradex/common/tdx-cfg-block.c +@@ -159,6 +159,42 @@ const char * const toradex_display_adapters[] = { + [159] = "Verdin DSI to LVDS Adapter", + }; + ++const u32 toradex_ouis[] = { ++ [0] = 0x00142dUL, ++ [1] = 0x8c06cbUL, ++}; ++ ++static u32 get_serial_from_mac(struct toradex_eth_addr *eth_addr) ++{ ++ int i; ++ u32 oui = ntohl(eth_addr->oui) >> 8; ++ u32 nic = ntohl(eth_addr->nic) >> 8; ++ ++ for (i = 0; i < ARRAY_SIZE(toradex_ouis); i++) { ++ if (toradex_ouis[i] == oui) ++ break; ++ } ++ ++ return (u32)((i << 24) + nic); ++} ++ ++void get_mac_from_serial(u32 tdx_serial, struct toradex_eth_addr *eth_addr) ++{ ++ u8 oui_index = tdx_serial >> 24; ++ u32 nic = tdx_serial & GENMASK(23, 0); ++ u32 oui; ++ ++ if (oui_index >= ARRAY_SIZE(toradex_ouis)) { ++ puts("Can't find OUI for this serial#\n"); ++ oui_index = 0; ++ } ++ ++ oui = toradex_ouis[oui_index]; ++ ++ eth_addr->oui = htonl(oui << 8); ++ eth_addr->nic = htonl(nic << 8); ++} ++ + #ifdef CONFIG_TDX_CFG_BLOCK_IS_IN_MMC + static int tdx_cfg_block_mmc_storage(u8 *config_block, int write) + { +@@ -331,8 +367,7 @@ int read_tdx_cfg_block(void) + memcpy(&tdx_eth_addr, config_block + offset, + 6); + +- /* NIC part of MAC address is serial number */ +- tdx_serial = ntohl(tdx_eth_addr.nic) >> 8; ++ tdx_serial = get_serial_from_mac(&tdx_eth_addr); + break; + case TAG_HW: + memcpy(&tdx_hw_tag, config_block + offset, 8); +@@ -974,8 +1009,7 @@ static int do_cfgblock_create(struct cmd_tbl *cmdtp, int flag, int argc, + } + + /* Convert serial number to MAC address (the storage format) */ +- tdx_eth_addr.oui = htonl(0x00142dUL << 8); +- tdx_eth_addr.nic = htonl(tdx_serial << 8); ++ get_mac_from_serial(tdx_serial, &tdx_eth_addr); + + /* Valid Tag */ + write_tag(config_block, &offset, TAG_VALID, NULL, 0); +diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h +index 43e662e41da..17906984863 100644 +--- a/board/toradex/common/tdx-cfg-block.h ++++ b/board/toradex/common/tdx-cfg-block.h +@@ -114,4 +114,6 @@ int read_tdx_cfg_block_carrier(void); + + int try_migrate_tdx_cfg_block_carrier(void); + ++void get_mac_from_serial(u32 tdx_serial, struct toradex_eth_addr *eth_addr); ++ + #endif /* _TDX_CFG_BLOCK_H */ +diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c +index 5ad5d00a0d9..3798bf95378 100644 +--- a/board/toradex/common/tdx-common.c ++++ b/board/toradex/common/tdx-common.c +@@ -20,8 +20,6 @@ + #include + #include "tdx-common.h" + +-#define TORADEX_OUI 0x00142dUL +- + #define SERIAL_STR_LEN 8 + #define MODULE_VER_STR_LEN 4 // V1.1 + #define MODULE_REV_STR_LEN 3 // [A-Z] or #[26-99] +@@ -104,8 +102,7 @@ int show_board_info(void) + + if (read_tdx_cfg_block()) { + printf("MISSING TORADEX CONFIG BLOCK\n"); +- tdx_eth_addr.oui = htonl(TORADEX_OUI << 8); +- tdx_eth_addr.nic = htonl(tdx_serial << 8); ++ get_mac_from_serial(tdx_serial, &tdx_eth_addr); + checkboard(); + } else { + snprintf(tdx_serial_str, sizeof(tdx_serial_str), +-- +2.20.1 + diff --git a/recipes-bsp/u-boot/u-boot/0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch b/recipes-bsp/u-boot/u-boot/0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch new file mode 100644 index 0000000..ff6ad15 --- /dev/null +++ b/recipes-bsp/u-boot/u-boot/0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch @@ -0,0 +1,95 @@ +From 1ec0e02d1641050b3143ff72bb3f0ae833113106 Mon Sep 17 00:00:00 2001 +From: Philippe Schenker +Date: Mon, 20 Jun 2022 19:49:24 +0200 +Subject: [PATCH 5/5] toradex: tdx-cfg-block: add 0068 i.mx 8m mini sku + +Add new i.MX 8M Mini SKU to ConfigBlock handling. + +0068: Verdin iMX8M Mini Quad 2GB WB IT No CAN + +This SKU is identical to 0055 but without CAN. Mention this in the name +so those modules can be distinguished. + +Upstream-Status: Submitted [https://lore.kernel.org/u-boot/20220706121505.448579-1-dev@pschenker.ch/] +Signed-off-by: Philippe Schenker +Reviewed-by: Francesco Dolcini +--- + board/toradex/common/tdx-cfg-block.c | 13 ++++++++++++- + board/toradex/common/tdx-cfg-block.h | 1 + + board/toradex/verdin-imx8mm/verdin-imx8mm.c | 3 ++- + 3 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c +index 9305709a3c0..53302925dc2 100644 +--- a/board/toradex/common/tdx-cfg-block.c ++++ b/board/toradex/common/tdx-cfg-block.c +@@ -145,6 +145,7 @@ const char * const toradex_modules[] = { + [65] = "Verdin iMX8M Plus QuadLite 1GB IT", + [66] = "Verdin iMX8M Plus Quad 8GB Wi-Fi / BT", + [67] = "Apalis iMX8 QuadMax 8GB Wi-Fi / BT IT", ++ [68] = "Verdin iMX8M Mini Quad 2GB WB IT No CAN", + }; + + const char * const toradex_carrier_boards[] = { +@@ -408,6 +409,7 @@ static int get_cfgblock_interactive(void) + char it = 'n'; + char wb = 'n'; + char mem8g = 'n'; ++ char can = 'y'; + int len = 0; + int ret = 0; + +@@ -435,6 +437,13 @@ static int get_cfgblock_interactive(void) + mem8g = console_buffer[0]; + } + #endif ++#if defined(CONFIG_TARGET_VERDIN_IMX8MM) ++ if (is_cpu_type(MXC_CPU_IMX8MM) && (wb == 'y' || wb == 'Y')) { ++ sprintf(message, "Does your module have CAN? [y/N] "); ++ len = cli_readline(message); ++ can = console_buffer[0]; ++ } ++#endif + #endif + + soc = env_get("soc"); +@@ -522,7 +531,9 @@ static int get_cfgblock_interactive(void) + else + tdx_hw_tag.prodid = VERDIN_IMX8MMDL; + } else if (is_cpu_type(MXC_CPU_IMX8MM)) { +- if (wb == 'y' || wb == 'Y') ++ if (can == 'n' || can == 'N') ++ tdx_hw_tag.prodid = VERDIN_IMX8MMQ_WIFI_BT_IT_NO_CAN; ++ else if (wb == 'y' || wb == 'Y') + tdx_hw_tag.prodid = VERDIN_IMX8MMQ_WIFI_BT_IT; + else + tdx_hw_tag.prodid = VERDIN_IMX8MMQ_IT; +diff --git a/board/toradex/common/tdx-cfg-block.h b/board/toradex/common/tdx-cfg-block.h +index 17906984863..79cd09c78d0 100644 +--- a/board/toradex/common/tdx-cfg-block.h ++++ b/board/toradex/common/tdx-cfg-block.h +@@ -88,6 +88,7 @@ enum { + VERDIN_IMX8MPQL_IT, /* 65 */ + VERDIN_IMX8MPQ_8GB_WIFI_BT, + APALIS_IMX8QM_8GB_WIFI_BT_IT, ++ VERDIN_IMX8MMQ_WIFI_BT_IT_NO_CAN, + }; + + enum { +diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c +index c51c99b5156..7597cd81f94 100644 +--- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c ++++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c +@@ -83,7 +83,8 @@ static void select_dt_from_module_version(void) + * device tree. + */ + is_wifi = (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_WIFI_BT_IT) || +- (tdx_hw_tag.prodid == VERDIN_IMX8MMDL_WIFI_BT_IT); ++ (tdx_hw_tag.prodid == VERDIN_IMX8MMDL_WIFI_BT_IT) || ++ (tdx_hw_tag.prodid == VERDIN_IMX8MMQ_WIFI_BT_IT_NO_CAN); + } + + switch (get_pcb_revision()) { +-- +2.20.1 + diff --git a/recipes-bsp/u-boot/u-boot_%.bbappend b/recipes-bsp/u-boot/u-boot_%.bbappend index 2a37fd2..d8128fb 100644 --- a/recipes-bsp/u-boot/u-boot_%.bbappend +++ b/recipes-bsp/u-boot/u-boot_%.bbappend @@ -7,6 +7,19 @@ LIC_FILES_CHKSUM = "file://Licenses/README;md5=2ca5f2c35c8cc335f0a19756634782f1" PV = "2022.07" SRCREV = "e092e3250270a1016c877da7bdd9384f14b1321e" SRCREV:use-head-next = "${AUTOREV}" +# patches which are not (yet) in the used stable version +TDX_PATCHES = " \ + file://0001-toradex-tdx-cfg-block-use-only-snprintf.patch \ + file://0002-toradex-tdx-cfg-block-use-defines-for-string-length.patch \ + file://0003-toradex-tdx-cfg-block-extend-assembly-version.patch \ + file://0004-toradex-tdx-cfg-block-add-new-toradex-oui-range.patch \ + file://0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch \ +" +# patches which are not (yet) in the latest master +TDX_PATCHES:use-head-next = " \ + file://0005-toradex-tdx-cfg-block-add-0068-i.mx-8m-mini-sku.patch \ +" +SRC_URI:append = " ${TDX_PATCHES}" SRC_URI:append:use-nxp-bsp:colibri-imx7 = " \ file://0001-colibri_imx7-boot-linux-kernel-in-secure-mode.patch \ " -- cgit v1.2.3