From 32b64893fb669f2c47697fe1f0862a192dd4b7e0 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:37 +0100 Subject: [PATCH 1/7] toradex: Fix recursive call to checkboard Since checkboard() is used instead of show_board_info(), in case toradex config block is missing or malformed, checkboard is recursively called. It prints a long list of "MISSING TORADEX CONFIG BLOCK" till the stack is full. Fixes: edb0ecd18708 ("toradex: Use checkboard() instead of show_board_info()") Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- board/toradex/common/tdx-common.c | 1 - 1 file changed, 1 deletion(-) diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index ed8f0a6a47..ddc4a175da 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -103,7 +103,6 @@ int tdx_checkboard(void) if (read_tdx_cfg_block()) { printf("MISSING TORADEX CONFIG BLOCK\n"); get_mac_from_serial(tdx_serial, &tdx_eth_addr); - checkboard(); } else { snprintf(tdx_serial_str, sizeof(tdx_serial_str), "%08u", tdx_serial); From 28138dea7b3b3ab2175d76a5fbac2ba61967c967 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:38 +0100 Subject: [PATCH 2/7] toradex: Remove not necessary model prints from checkboard() Sysinfo prints the model obtained from device tree, checkboard() take info from hardware and tdx_checkboard() use the model retrieved by toradex config block. Remove the print from checkboard() function because the model obtained from toradex config block is the most complete. If toradex config block is missing the model info from device tree is enough. Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- board/toradex/apalis-imx8/apalis-imx8.c | 10 --------- board/toradex/apalis-tk1/apalis-tk1.c | 7 ------- board/toradex/apalis_imx6/apalis_imx6.c | 21 ------------------- board/toradex/apalis_t30/apalis_t30.c | 8 ------- .../toradex/colibri-imx6ull/colibri-imx6ull.c | 7 ------- board/toradex/colibri-imx8x/colibri-imx8x.c | 10 --------- board/toradex/colibri_imx6/colibri_imx6.c | 20 ------------------ board/toradex/colibri_imx7/colibri_imx7.c | 8 ------- board/toradex/colibri_t20/colibri_t20.c | 10 --------- board/toradex/colibri_t30/colibri_t30.c | 7 ------- board/toradex/colibri_vf/colibri_vf.c | 10 --------- board/toradex/common/tdx-common.c | 9 +++++++- board/toradex/common/tdx-common.h | 1 - 13 files changed, 8 insertions(+), 120 deletions(-) diff --git a/board/toradex/apalis-imx8/apalis-imx8.c b/board/toradex/apalis-imx8/apalis-imx8.c index b351ce64ab..2483a63c67 100644 --- a/board/toradex/apalis-imx8/apalis-imx8.c +++ b/board/toradex/apalis-imx8/apalis-imx8.c @@ -208,16 +208,6 @@ void board_preboot_os(void) gpio_direction_output(BKL1_GPIO, 0); } -int checkboard(void) -{ - puts("Model: Toradex Apalis iMX8\n"); - - build_info(); - print_bootinfo(); - - return tdx_checkboard(); -} - static enum pcb_rev_t get_pcb_revision(void) { unsigned int pcb_vers = 0; diff --git a/board/toradex/apalis-tk1/apalis-tk1.c b/board/toradex/apalis-tk1/apalis-tk1.c index 79a1c92da0..ee87d9f414 100644 --- a/board/toradex/apalis-tk1/apalis-tk1.c +++ b/board/toradex/apalis-tk1/apalis-tk1.c @@ -91,13 +91,6 @@ int arch_misc_init(void) return 0; } -int checkboard(void) -{ - puts("Model: Toradex Apalis TK1 2GB\n"); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/apalis_imx6/apalis_imx6.c b/board/toradex/apalis_imx6/apalis_imx6.c index 164fcc41f5..0da245374a 100644 --- a/board/toradex/apalis_imx6/apalis_imx6.c +++ b/board/toradex/apalis_imx6/apalis_imx6.c @@ -716,27 +716,6 @@ int board_late_init(void) } #endif /* CONFIG_BOARD_LATE_INIT */ -int checkboard(void) -{ - char it[] = " IT"; - int minc, maxc; - - switch (get_cpu_temp_grade(&minc, &maxc)) { - case TEMP_AUTOMOTIVE: - case TEMP_INDUSTRIAL: - break; - case TEMP_EXTCOMMERCIAL: - default: - it[0] = 0; - }; - printf("Model: Toradex Apalis iMX6 %s %s%s\n", - is_cpu_type(MXC_CPU_MX6D) ? "Dual" : "Quad", - (gd->ram_size == 0x80000000) ? "2GB" : - (gd->ram_size == 0x40000000) ? "1GB" : "512MB", it); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/apalis_t30/apalis_t30.c b/board/toradex/apalis_t30/apalis_t30.c index b9a2af33f1..b10beb4479 100644 --- a/board/toradex/apalis_t30/apalis_t30.c +++ b/board/toradex/apalis_t30/apalis_t30.c @@ -45,14 +45,6 @@ int arch_misc_init(void) return 0; } -int checkboard(void) -{ - printf("Model: Toradex Apalis T30 %dGB\n", - (gd->ram_size == 0x40000000) ? 1 : 2); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri-imx6ull/colibri-imx6ull.c b/board/toradex/colibri-imx6ull/colibri-imx6ull.c index a775f54eb3..9b9fb342c9 100644 --- a/board/toradex/colibri-imx6ull/colibri-imx6ull.c +++ b/board/toradex/colibri-imx6ull/colibri-imx6ull.c @@ -205,13 +205,6 @@ int board_late_init(void) return 0; } -int checkboard(void) -{ - printf("Model: Toradex Colibri iMX6ULL\n"); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri-imx8x/colibri-imx8x.c b/board/toradex/colibri-imx8x/colibri-imx8x.c index d8cc72f323..2c673a4a6b 100644 --- a/board/toradex/colibri-imx8x/colibri-imx8x.c +++ b/board/toradex/colibri-imx8x/colibri-imx8x.c @@ -114,16 +114,6 @@ int board_phy_config(struct phy_device *phydev) } #endif -int checkboard(void) -{ - puts("Model: Toradex Colibri iMX8X\n"); - - build_info(); - print_bootinfo(); - - return tdx_checkboard(); -} - static void select_dt_from_module_version(void) { /* diff --git a/board/toradex/colibri_imx6/colibri_imx6.c b/board/toradex/colibri_imx6/colibri_imx6.c index 784ca7f65f..ce19a9c797 100644 --- a/board/toradex/colibri_imx6/colibri_imx6.c +++ b/board/toradex/colibri_imx6/colibri_imx6.c @@ -636,26 +636,6 @@ int board_late_init(void) } #endif /* CONFIG_BOARD_LATE_INIT */ -int checkboard(void) -{ - char it[] = " IT"; - int minc, maxc; - - switch (get_cpu_temp_grade(&minc, &maxc)) { - case TEMP_AUTOMOTIVE: - case TEMP_INDUSTRIAL: - break; - case TEMP_EXTCOMMERCIAL: - default: - it[0] = 0; - }; - printf("Model: Toradex Colibri iMX6 %s %sMB%s\n", - is_cpu_type(MXC_CPU_MX6DL) ? "DualLite" : "Solo", - (gd->ram_size == 0x20000000) ? "512" : "256", it); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri_imx7/colibri_imx7.c b/board/toradex/colibri_imx7/colibri_imx7.c index 2e5b02f726..c37c5e0af6 100644 --- a/board/toradex/colibri_imx7/colibri_imx7.c +++ b/board/toradex/colibri_imx7/colibri_imx7.c @@ -273,14 +273,6 @@ void reset_cpu(void) } #endif -int checkboard(void) -{ - printf("Model: Toradex Colibri iMX7%c\n", - is_cpu_type(MXC_CPU_MX7D) ? 'D' : 'S'); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c index 5861cf7dc9..97e33d00f0 100644 --- a/board/toradex/colibri_t20/colibri_t20.c +++ b/board/toradex/colibri_t20/colibri_t20.c @@ -70,16 +70,6 @@ int arch_misc_init(void) return 0; } -int checkboard(void) -{ - printf("Model: Toradex Colibri T20 %dMB V%s\n", - (gd->ram_size == 0x10000000) ? 256 : 512, - (get_nand_dev_by_index(0)->erasesize >> 10 == 512) ? - ((gd->ram_size == 0x10000000) ? "1.1B" : "1.1C") : "1.2A"); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri_t30/colibri_t30.c b/board/toradex/colibri_t30/colibri_t30.c index 8cef098c8e..0da247de98 100644 --- a/board/toradex/colibri_t30/colibri_t30.c +++ b/board/toradex/colibri_t30/colibri_t30.c @@ -28,13 +28,6 @@ int arch_misc_init(void) return 0; } -int checkboard(void) -{ - puts("Model: Toradex Colibri T30 1GB\n"); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/colibri_vf/colibri_vf.c b/board/toradex/colibri_vf/colibri_vf.c index af9f2d379c..3592000880 100644 --- a/board/toradex/colibri_vf/colibri_vf.c +++ b/board/toradex/colibri_vf/colibri_vf.c @@ -366,16 +366,6 @@ int board_init(void) return 0; } -int checkboard(void) -{ - if (is_colibri_vf61()) - puts("Model: Toradex Colibri VF61\n"); - else - puts("Model: Toradex Colibri VF50\n"); - - return tdx_checkboard(); -} - #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) int ft_board_setup(void *blob, struct bd_info *bd) { diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index ddc4a175da..cdf645b141 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -96,7 +96,12 @@ static const char *get_board_assembly(u16 ver_assembly) return ver_name; } -int tdx_checkboard(void) +__weak int print_bootinfo(void) +{ + return 0; +} + +int checkboard(void) { unsigned char ethaddr[6]; @@ -144,6 +149,8 @@ int tdx_checkboard(void) #endif } + print_bootinfo(); + /* * Check if environment contains a valid MAC address, * set the one from config block if not diff --git a/board/toradex/common/tdx-common.h b/board/toradex/common/tdx-common.h index 44234dc49c..d446e9f1d5 100644 --- a/board/toradex/common/tdx-common.h +++ b/board/toradex/common/tdx-common.h @@ -11,6 +11,5 @@ int ft_common_board_setup(void *blob, struct bd_info *bd); u32 get_board_revision(void); -int tdx_checkboard(void); #endif /* _TDX_COMMON_H */ From 118b17b84fc77890379a45d772d9ead38e016fc5 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:39 +0100 Subject: [PATCH 3/7] toradex: common: Use SETTINGS_R event to read toradex config block Use SETTINGS_R event to read toradex config block and checkboard() to print board info. Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- board/toradex/common/tdx-common.c | 94 ++++++++++++++++++------------- 1 file changed, 55 insertions(+), 39 deletions(-) diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index cdf645b141..6084436b48 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -103,54 +103,69 @@ __weak int print_bootinfo(void) int checkboard(void) { - unsigned char ethaddr[6]; - - if (read_tdx_cfg_block()) { - printf("MISSING TORADEX CONFIG BLOCK\n"); - get_mac_from_serial(tdx_serial, &tdx_eth_addr); - } else { - snprintf(tdx_serial_str, sizeof(tdx_serial_str), - "%08u", tdx_serial); - snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str), - "V%1d.%1d%s", - tdx_hw_tag.ver_major, - tdx_hw_tag.ver_minor, - get_board_assembly(tdx_hw_tag.ver_assembly)); - - env_set("serial#", tdx_serial_str); - + if (valid_cfgblock) { printf("Model: Toradex %04d %s %s\n", tdx_hw_tag.prodid, toradex_modules[tdx_hw_tag.prodid].name, tdx_board_rev_str); printf("Serial#: %s\n", tdx_serial_str); -#ifdef CONFIG_TDX_CFG_BLOCK_EXTRA - if (read_tdx_cfg_block_carrier()) { - printf("MISSING TORADEX CARRIER CONFIG BLOCKS\n"); - try_migrate_tdx_cfg_block_carrier(); - } else { - 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); - snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str), - "V%1d.%1d%s", - tdx_car_hw_tag.ver_major, - tdx_car_hw_tag.ver_minor, - 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", - tdx_carrier_board_name, - tdx_car_rev_str, - tdx_car_serial_str); - } -#endif } +#ifdef CONFIG_TDX_CFG_BLOCK_EXTRA + if (tdx_carrier_board_name) + printf("Carrier: Toradex %s %s, Serial# %s\n", + tdx_carrier_board_name, + tdx_car_rev_str, + tdx_car_serial_str); +#endif + print_bootinfo(); + return 0; +} + +static int settings_r(void) +{ + unsigned char ethaddr[6]; + + if (read_tdx_cfg_block()) { + printf("MISSING TORADEX CONFIG BLOCK\n"); + get_mac_from_serial(tdx_serial, &tdx_eth_addr); + + /* Board can run even if config block is not present */ + return 0; + } + + snprintf(tdx_serial_str, sizeof(tdx_serial_str), + "%08u", tdx_serial); + snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str), + "V%1d.%1d%s", + tdx_hw_tag.ver_major, + tdx_hw_tag.ver_minor, + get_board_assembly(tdx_hw_tag.ver_assembly)); + + env_set("serial#", tdx_serial_str); + +#ifdef CONFIG_TDX_CFG_BLOCK_EXTRA + if (read_tdx_cfg_block_carrier()) { + printf("MISSING TORADEX CARRIER CONFIG BLOCKS\n"); + try_migrate_tdx_cfg_block_carrier(); + } else { + 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); + snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str), + "V%1d.%1d%s", + tdx_car_hw_tag.ver_major, + tdx_car_hw_tag.ver_minor, + get_board_assembly(tdx_car_hw_tag.ver_assembly)); + + env_set("carrier_serial#", tdx_car_serial_str); + } +#endif + /* * Check if environment contains a valid MAC address, * set the one from config block if not @@ -171,6 +186,7 @@ int checkboard(void) return 0; } +EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r); #ifdef CONFIG_TDX_CFG_BLOCK_USB_GADGET_PID int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) From 100121d51b32567d9401cbf4764cf12d4fdfd248 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:40 +0100 Subject: [PATCH 4/7] arm: dts: Refactor device trees using "&{/aliases}" syntax Use the common syntax to define aliases. Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- .../dts/imx6dl-colibri-eval-v3-u-boot.dtsi | 18 ++++++++----- arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi | 26 ++++++++++--------- .../arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi | 10 ++++--- .../dts/imx8mm-verdin-wifi-dev-u-boot.dtsi | 12 ++++----- .../dts/imx8mp-verdin-wifi-dev-u-boot.dtsi | 12 ++++----- 5 files changed, 43 insertions(+), 35 deletions(-) diff --git a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi index 31f3a48dd9..0eea4d1862 100644 --- a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi @@ -5,13 +5,17 @@ #include "imx6qdl-u-boot.dtsi" -&{/aliases} { - /* U-Boot won't find PMIC otherwise */ - i2c0 = &i2c3; - i2c1 = &i2c2; - /* SDHCI instance order: eMMC, 4-bit SD/MMC (U-Boot won't find ConfigBlock otherwise) */ - mmc0 = &usdhc3; - mmc1 = &usdhc1; +/ { + aliases { + /* U-Boot won't find PMIC otherwise */ + i2c0 = &i2c3; + i2c1 = &i2c2; + /* SDHCI instance order: eMMC, 4-bit SD/MMC + * (U-Boot won't find ConfigBlock otherwise) + */ + mmc0 = &usdhc3; + mmc1 = &usdhc1; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi index 3d19796cb6..3c6e503d04 100644 --- a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi +++ b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi @@ -5,18 +5,20 @@ #include "imx6qdl-u-boot.dtsi" -&{/aliases} { - /* U-Boot won't find PMIC otherwise */ - i2c0 = &i2c1; - i2c1 = &i2c2; - i2c2 = &i2c3; - /* - * SDHCI instance order: eMMC, 8-bit SD/MMC, 4-bit SD - * (U-Boot won't find ConfigBlock otherwise) - */ - mmc0 = &usdhc3; - mmc1 = &usdhc1; - mmc2 = &usdhc2; +/ { + aliases { + /* U-Boot won't find PMIC otherwise */ + i2c0 = &i2c1; + i2c1 = &i2c2; + i2c2 = &i2c3; + /* + * SDHCI instance order: eMMC, 8-bit SD/MMC, 4-bit SD + * (U-Boot won't find ConfigBlock otherwise) + */ + mmc0 = &usdhc3; + mmc1 = &usdhc1; + mmc2 = &usdhc2; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi index 57ca28edb7..b2c12a413d 100644 --- a/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi @@ -5,10 +5,12 @@ #include "imx7s-u-boot.dtsi" -&{/aliases} { - /* SDHCI instance order: eMMC, SD/MMC */ - mmc0 = &usdhc3; - mmc1 = &usdhc1; +/ { + aliases { + /* SDHCI instance order: eMMC, SD/MMC */ + mmc0 = &usdhc3; + mmc1 = &usdhc1; + }; }; &lcdif { diff --git a/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi index 8efa4ddc73..515f195ab7 100644 --- a/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi @@ -6,6 +6,12 @@ #include "imx8mm-u-boot.dtsi" / { + aliases { + eeprom0 = &eeprom_module; + eeprom1 = &eeprom_carrier_board; + eeprom2 = &eeprom_display_adapter; + }; + wdt-reboot { compatible = "wdt-reboot"; bootph-pre-ram; @@ -13,12 +19,6 @@ }; }; -&{/aliases} { - eeprom0 = &eeprom_module; - eeprom1 = &eeprom_carrier_board; - eeprom2 = &eeprom_display_adapter; -}; - &{/soc@0/bus@30800000/i2c@30a20000/pmic@25} { bootph-pre-ram; }; diff --git a/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi index 2a1aa1935a..67f1d45ce2 100644 --- a/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi +++ b/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi @@ -6,6 +6,12 @@ #include "imx8mp-u-boot.dtsi" / { + aliases { + eeprom0 = &eeprom_module; + eeprom1 = &eeprom_carrier_board; + eeprom2 = &eeprom_display_adapter; + }; + wdt-reboot { compatible = "wdt-reboot"; bootph-pre-ram; @@ -13,12 +19,6 @@ }; }; -&{/aliases} { - eeprom0 = &eeprom_module; - eeprom1 = &eeprom_carrier_board; - eeprom2 = &eeprom_display_adapter; -}; - &clk { bootph-all; bootph-pre-ram; From 2abc3bbe0cefee8f150af851a6625a6cb32dad63 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:41 +0100 Subject: [PATCH 5/7] toradex: common: Add sysinfo driver This commit introduces support for the Toradex sysinfo driver in U-Boot, which uses information from Toradex config block to print correct board model. In case the Toradex config block is not present sysinfo prints the model of the board provided by device tree removing per board specific prints. Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi | 6 +++ arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi | 6 +++ .../dts/imx6dl-colibri-eval-v3-u-boot.dtsi | 4 ++ arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi | 4 ++ .../dts/imx6ull-colibri-eval-v3-u-boot.dtsi | 4 ++ .../arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi | 4 ++ .../dts/imx8mm-verdin-wifi-dev-u-boot.dtsi | 4 ++ .../dts/imx8mp-verdin-wifi-dev-u-boot.dtsi | 4 ++ .../dts/k3-am625-verdin-wifi-dev-u-boot.dtsi | 4 ++ arch/arm/dts/tegra124-apalis-u-boot.dtsi | 12 +++++ arch/arm/dts/tegra20-colibri-u-boot.dtsi | 12 +++++ arch/arm/dts/tegra30-apalis-u-boot.dtsi | 12 +++++ arch/arm/dts/tegra30-colibri-u-boot.dtsi | 12 +++++ .../arm/dts/vf610-colibri-eval-v3-u-boot.dtsi | 4 ++ board/toradex/common/Kconfig | 1 + board/toradex/common/tdx-common.c | 50 ++++++++++++++++--- 16 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 arch/arm/dts/tegra124-apalis-u-boot.dtsi create mode 100644 arch/arm/dts/tegra20-colibri-u-boot.dtsi create mode 100644 arch/arm/dts/tegra30-apalis-u-boot.dtsi create mode 100644 arch/arm/dts/tegra30-colibri-u-boot.dtsi diff --git a/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi b/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi index c54a59e89c..d73be74d21 100644 --- a/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi +++ b/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi @@ -3,6 +3,12 @@ * Copyright 2019 Toradex AG */ +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; + &mu { bootph-some-ram; }; diff --git a/arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi b/arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi index 6ab6b1f9ee..60c4cd6fc0 100644 --- a/arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi +++ b/arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi @@ -3,6 +3,12 @@ * Copyright 2019 Toradex AG */ +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; + &{/imx8qx-pm} { bootph-some-ram; diff --git a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi index 0eea4d1862..5a91d0aca2 100644 --- a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi @@ -16,6 +16,10 @@ mmc0 = &usdhc3; mmc1 = &usdhc1; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi index 3c6e503d04..5941263542 100644 --- a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi +++ b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi @@ -19,6 +19,10 @@ mmc1 = &usdhc1; mmc2 = &usdhc2; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi index 6823b42d45..731814216e 100644 --- a/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi @@ -9,6 +9,10 @@ usb0 = &usbotg1; /* required for ums */ display0 = &lcdif; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &pinctrl_uart1 { diff --git a/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi index b2c12a413d..68142769d3 100644 --- a/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi @@ -11,6 +11,10 @@ mmc0 = &usdhc3; mmc1 = &usdhc1; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &lcdif { diff --git a/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi index 515f195ab7..38db56059d 100644 --- a/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi @@ -12,6 +12,10 @@ eeprom2 = &eeprom_display_adapter; }; + sysinfo { + compatible = "toradex,sysinfo"; + }; + wdt-reboot { compatible = "wdt-reboot"; bootph-pre-ram; diff --git a/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi index 67f1d45ce2..03f211d5f7 100644 --- a/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi +++ b/arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi @@ -12,6 +12,10 @@ eeprom2 = &eeprom_display_adapter; }; + sysinfo { + compatible = "toradex,sysinfo"; + }; + wdt-reboot { compatible = "wdt-reboot"; bootph-pre-ram; diff --git a/arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi b/arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi index 02f34c90c6..28b697b67a 100644 --- a/arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi +++ b/arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi @@ -19,6 +19,10 @@ memory@80000000 { bootph-all; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &main_timer0 { diff --git a/arch/arm/dts/tegra124-apalis-u-boot.dtsi b/arch/arm/dts/tegra124-apalis-u-boot.dtsi new file mode 100644 index 0000000000..a3614d2794 --- /dev/null +++ b/arch/arm/dts/tegra124-apalis-u-boot.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright 2023 Toradex + */ + +#include "tegra124-u-boot.dtsi" + +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; diff --git a/arch/arm/dts/tegra20-colibri-u-boot.dtsi b/arch/arm/dts/tegra20-colibri-u-boot.dtsi new file mode 100644 index 0000000000..d4a669a288 --- /dev/null +++ b/arch/arm/dts/tegra20-colibri-u-boot.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright 2023 Toradex + */ + +#include "tegra20-u-boot.dtsi" + +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; diff --git a/arch/arm/dts/tegra30-apalis-u-boot.dtsi b/arch/arm/dts/tegra30-apalis-u-boot.dtsi new file mode 100644 index 0000000000..37cbfbcc35 --- /dev/null +++ b/arch/arm/dts/tegra30-apalis-u-boot.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright 2023 Toradex + */ + +#include "tegra30-u-boot.dtsi" + +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; diff --git a/arch/arm/dts/tegra30-colibri-u-boot.dtsi b/arch/arm/dts/tegra30-colibri-u-boot.dtsi new file mode 100644 index 0000000000..37cbfbcc35 --- /dev/null +++ b/arch/arm/dts/tegra30-colibri-u-boot.dtsi @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright 2023 Toradex + */ + +#include "tegra30-u-boot.dtsi" + +/ { + sysinfo { + compatible = "toradex,sysinfo"; + }; +}; diff --git a/arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi index 572d40877e..8c3b86c201 100644 --- a/arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi @@ -7,6 +7,10 @@ soc { bootph-all; }; + + sysinfo { + compatible = "toradex,sysinfo"; + }; }; &aips0 { diff --git a/board/toradex/common/Kconfig b/board/toradex/common/Kconfig index 1f6a5e4db5..b85893ab44 100644 --- a/board/toradex/common/Kconfig +++ b/board/toradex/common/Kconfig @@ -4,6 +4,7 @@ menuconfig TDX_CFG_BLOCK bool "Enable Toradex config block support" select OF_BOARD_SETUP + select SYSINFO help The Toradex config block stored production data on the on-module flash device (NAND, NOR or eMMC). The area is normally preserved by diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index 6084436b48..1f3253f422 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -3,15 +3,16 @@ * Copyright (c) 2016 Toradex, Inc. */ +#include #include #include #include #include #include +#include #ifdef CONFIG_VIDEO #include -#include #include #include #endif @@ -103,13 +104,8 @@ __weak int print_bootinfo(void) int checkboard(void) { - if (valid_cfgblock) { - printf("Model: Toradex %04d %s %s\n", - tdx_hw_tag.prodid, - toradex_modules[tdx_hw_tag.prodid].name, - tdx_board_rev_str); + if (valid_cfgblock) printf("Serial#: %s\n", tdx_serial_str); - } #ifdef CONFIG_TDX_CFG_BLOCK_EXTRA if (tdx_carrier_board_name) @@ -188,6 +184,46 @@ static int settings_r(void) } EVENT_SPY_SIMPLE(EVT_SETTINGS_R, settings_r); +static int tdx_detect(struct udevice *dev) +{ + return valid_cfgblock ? 0 : -EINVAL; +} + +static int tdx_get_str(struct udevice *dev, int id, size_t size, char *val) +{ + int ret = -ENOTSUPP; + + switch (id) { + case SYSINFO_ID_BOARD_MODEL: + snprintf(val, size, + "Toradex %04d %s %s", + tdx_hw_tag.prodid, + toradex_modules[tdx_hw_tag.prodid].name, + tdx_board_rev_str); + + ret = 0; + } + + return ret; +} + +static const struct udevice_id sysinfo_tdx_ids[] = { + { .compatible = "toradex,sysinfo" }, + { /* sentinel */ } +}; + +static const struct sysinfo_ops sysinfo_tdx_ops = { + .detect = tdx_detect, + .get_str = tdx_get_str, +}; + +U_BOOT_DRIVER(sysinfo_toradex) = { + .name = "sysinfo_toradex", + .id = UCLASS_SYSINFO, + .of_match = sysinfo_tdx_ids, + .ops = &sysinfo_tdx_ops, +}; + #ifdef CONFIG_TDX_CFG_BLOCK_USB_GADGET_PID int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) { From f271276fb0907a0bed99a8121b9e9f1f0eabdca8 Mon Sep 17 00:00:00 2001 From: Emanuele Ghidoli Date: Fri, 23 Feb 2024 10:11:42 +0100 Subject: [PATCH 6/7] toradex: common: Use random mac address if toradex config block is missing Set CONFIG_NET_RANDOM_ETHADDR=y, which sets random eth address in case there is no toradex config block programmed. In case of missing toradex config block the generated mac address was always the same, linked to serial number 0. Use random generated mac address instead. Acked-by: Marcel Ziswiler Tested-by: Marcel Ziswiler # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- board/toradex/common/tdx-common.c | 1 - configs/apalis-imx8_defconfig | 1 + configs/apalis-tk1_defconfig | 1 + configs/apalis_imx6_defconfig | 1 + configs/apalis_t30_defconfig | 1 + configs/colibri-imx6ull-emmc_defconfig | 1 + configs/colibri-imx6ull_defconfig | 1 + configs/colibri-imx8x_defconfig | 1 + configs/colibri_imx6_defconfig | 1 + configs/colibri_imx7_defconfig | 1 + configs/colibri_imx7_emmc_defconfig | 1 + configs/colibri_t20_defconfig | 1 + configs/colibri_t30_defconfig | 1 + configs/colibri_vf_defconfig | 1 + configs/verdin-am62_a53_defconfig | 1 + configs/verdin-imx8mm_defconfig | 1 + configs/verdin-imx8mp_defconfig | 1 + 17 files changed, 16 insertions(+), 1 deletion(-) diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c index 1f3253f422..9f09788137 100644 --- a/board/toradex/common/tdx-common.c +++ b/board/toradex/common/tdx-common.c @@ -126,7 +126,6 @@ static int settings_r(void) if (read_tdx_cfg_block()) { printf("MISSING TORADEX CONFIG BLOCK\n"); - get_mac_from_serial(tdx_serial, &tdx_eth_addr); /* Board can run even if config block is not present */ return 0; diff --git a/configs/apalis-imx8_defconfig b/configs/apalis-imx8_defconfig index 982098d814..da3b0e2548 100644 --- a/configs/apalis-imx8_defconfig +++ b/configs/apalis-imx8_defconfig @@ -52,6 +52,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_TFTP_TSIZE=y diff --git a/configs/apalis-tk1_defconfig b/configs/apalis-tk1_defconfig index 6ed3898b60..20c9c06cde 100644 --- a/configs/apalis-tk1_defconfig +++ b/configs/apalis-tk1_defconfig @@ -52,6 +52,7 @@ CONFIG_ENV_OVERWRITE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_TFTP_TSIZE=y diff --git a/configs/apalis_imx6_defconfig b/configs/apalis_imx6_defconfig index 05ff6fa115..4925506070 100644 --- a/configs/apalis_imx6_defconfig +++ b/configs/apalis_imx6_defconfig @@ -75,6 +75,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_USE_IPADDR=y diff --git a/configs/apalis_t30_defconfig b/configs/apalis_t30_defconfig index 0a27509a97..03a1f2c239 100644 --- a/configs/apalis_t30_defconfig +++ b/configs/apalis_t30_defconfig @@ -45,6 +45,7 @@ CONFIG_OF_LIVE=y CONFIG_ENV_OVERWRITE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri-imx6ull-emmc_defconfig b/configs/colibri-imx6ull-emmc_defconfig index 285fed9e4f..2b04855770 100644 --- a/configs/colibri-imx6ull-emmc_defconfig +++ b/configs/colibri-imx6ull-emmc_defconfig @@ -51,6 +51,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri-imx6ull_defconfig b/configs/colibri-imx6ull_defconfig index a8a633063d..959930cf2e 100644 --- a/configs/colibri-imx6ull_defconfig +++ b/configs/colibri-imx6ull_defconfig @@ -60,6 +60,7 @@ CONFIG_ENV_RANGE=0x80000 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri-imx8x_defconfig b/configs/colibri-imx8x_defconfig index aa18d28d3e..88928b0e4b 100644 --- a/configs/colibri-imx8x_defconfig +++ b/configs/colibri-imx8x_defconfig @@ -52,6 +52,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri_imx6_defconfig b/configs/colibri_imx6_defconfig index 70cb79531e..55c71a000d 100644 --- a/configs/colibri_imx6_defconfig +++ b/configs/colibri_imx6_defconfig @@ -74,6 +74,7 @@ CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_USE_IPADDR=y diff --git a/configs/colibri_imx7_defconfig b/configs/colibri_imx7_defconfig index d5c8604f70..58eb431785 100644 --- a/configs/colibri_imx7_defconfig +++ b/configs/colibri_imx7_defconfig @@ -60,6 +60,7 @@ CONFIG_ENV_IS_IN_NAND=y CONFIG_ENV_RANGE=0x80000 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_USE_IPADDR=y diff --git a/configs/colibri_imx7_emmc_defconfig b/configs/colibri_imx7_emmc_defconfig index ae8406f70d..3382371d40 100644 --- a/configs/colibri_imx7_emmc_defconfig +++ b/configs/colibri_imx7_emmc_defconfig @@ -51,6 +51,7 @@ CONFIG_ENV_OVERWRITE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_USE_IPADDR=y diff --git a/configs/colibri_t20_defconfig b/configs/colibri_t20_defconfig index 3c506ffb68..3405e02ad3 100644 --- a/configs/colibri_t20_defconfig +++ b/configs/colibri_t20_defconfig @@ -50,6 +50,7 @@ CONFIG_OF_LIVE=y CONFIG_ENV_OVERWRITE=y CONFIG_ENV_IS_IN_NAND=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=1536 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri_t30_defconfig b/configs/colibri_t30_defconfig index c7012031c0..394d656a12 100644 --- a/configs/colibri_t30_defconfig +++ b/configs/colibri_t30_defconfig @@ -43,6 +43,7 @@ CONFIG_OF_LIVE=y CONFIG_ENV_OVERWRITE=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_MMC_ENV_PART=1 +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=16352 CONFIG_TFTP_TSIZE=y diff --git a/configs/colibri_vf_defconfig b/configs/colibri_vf_defconfig index 3d1319cf81..891637dee7 100644 --- a/configs/colibri_vf_defconfig +++ b/configs/colibri_vf_defconfig @@ -66,6 +66,7 @@ CONFIG_ENV_RANGE=0x80000 CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_USE_IPADDR=y CONFIG_IPADDR="192.168.10.2" CONFIG_USE_NETMASK=y diff --git a/configs/verdin-am62_a53_defconfig b/configs/verdin-am62_a53_defconfig index 956e3a1ad7..63e75474ca 100644 --- a/configs/verdin-am62_a53_defconfig +++ b/configs/verdin-am62_a53_defconfig @@ -104,6 +104,7 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_USE_ETHPRIME=y CONFIG_ETHPRIME="eth0" CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_SPL_DM=y diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig index 0c88982f75..4e00fb4008 100644 --- a/configs/verdin-imx8mm_defconfig +++ b/configs/verdin-imx8mm_defconfig @@ -90,6 +90,7 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_USE_ETHPRIME=y CONFIG_ETHPRIME="eth0" CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_SPL_DM=y diff --git a/configs/verdin-imx8mp_defconfig b/configs/verdin-imx8mp_defconfig index 22b8a334df..a95edff961 100644 --- a/configs/verdin-imx8mp_defconfig +++ b/configs/verdin-imx8mp_defconfig @@ -99,6 +99,7 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_USE_ETHPRIME=y CONFIG_ETHPRIME="eth0" CONFIG_VERSION_VARIABLE=y +CONFIG_NET_RANDOM_ETHADDR=y CONFIG_IP_DEFRAG=y CONFIG_TFTP_BLOCKSIZE=4096 CONFIG_SPL_DM=y From be23b1331fb35b7d5a095ef2c0b522c1f241eee9 Mon Sep 17 00:00:00 2001 From: Parth Pancholi Date: Fri, 23 Feb 2024 10:11:43 +0100 Subject: [PATCH 7/7] toradex: imx6*: fix reset using wdt-reboot driver commit 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()") introduced a regression that 'reset' command unable to reset imx6 and imx6ull based Toradex's modules in the u-boot. This change enables a watchdog-based sysreset driver for Toradex's colibri-imx6, colibri-imx6ull (with nand and emmc) and apalis-imx6 which solves the reset command regression on these modules. Acked-by: Marcel Ziswiler Fixes: 68dcbdd594d4 ("ARM: imx: Add weak default reset_cpu()") Signed-off-by: Parth Pancholi Signed-off-by: Francesco Dolcini Reviewed-by: Fabio Estevam --- arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi | 6 ++++++ arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi | 6 ++++++ arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi | 10 ++++++++++ configs/apalis_imx6_defconfig | 3 +++ configs/colibri-imx6ull-emmc_defconfig | 3 +++ configs/colibri-imx6ull_defconfig | 3 +++ configs/colibri_imx6_defconfig | 3 +++ 7 files changed, 34 insertions(+) diff --git a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi index 5a91d0aca2..44baaa8032 100644 --- a/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi @@ -20,6 +20,12 @@ sysinfo { compatible = "toradex,sysinfo"; }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdog1>; + bootph-pre-ram; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi index 5941263542..103605ac93 100644 --- a/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi +++ b/arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi @@ -23,6 +23,12 @@ sysinfo { compatible = "toradex,sysinfo"; }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdog1>; + bootph-pre-ram; + }; }; &wdog1 { diff --git a/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi b/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi index 731814216e..8494b1a2c6 100644 --- a/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi +++ b/arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi @@ -13,6 +13,12 @@ sysinfo { compatible = "toradex,sysinfo"; }; + + wdt-reboot { + compatible = "wdt-reboot"; + wdt = <&wdog1>; + bootph-pre-ram; + }; }; &pinctrl_uart1 { @@ -58,3 +64,7 @@ }; }; }; + +&wdog1 { + bootph-pre-ram; +}; diff --git a/configs/apalis_imx6_defconfig b/configs/apalis_imx6_defconfig index 4925506070..fae3dc3224 100644 --- a/configs/apalis_imx6_defconfig +++ b/configs/apalis_imx6_defconfig @@ -96,6 +96,8 @@ CONFIG_DM_I2C=y CONFIG_SPL_SYS_I2C_LEGACY=y CONFIG_SYS_I2C_MXC=y CONFIG_SYS_MXC_I2C3_SPEED=400000 +CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_FSL_USDHC=y CONFIG_PHYLIB=y @@ -113,6 +115,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_SCSI=y CONFIG_MXC_UART=y CONFIG_IMX_THERMAL=y +CONFIG_IMX_WATCHDOG=y CONFIG_USB=y CONFIG_SPL_USB_HOST=y CONFIG_USB_MAX_CONTROLLER_COUNT=2 diff --git a/configs/colibri-imx6ull-emmc_defconfig b/configs/colibri-imx6ull-emmc_defconfig index 2b04855770..c4ecdc03e2 100644 --- a/configs/colibri-imx6ull-emmc_defconfig +++ b/configs/colibri-imx6ull-emmc_defconfig @@ -69,6 +69,8 @@ CONFIG_FASTBOOT_BUF_ADDR=0x81100000 CONFIG_FASTBOOT_UUU_SUPPORT=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_MXC=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y CONFIG_SUPPORT_EMMC_BOOT=y CONFIG_FSL_USDHC=y CONFIG_PHYLIB=y @@ -83,6 +85,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_SERIAL=y CONFIG_MXC_UART=y CONFIG_IMX_THERMAL=y +CONFIG_IMX_WATCHDOG=y CONFIG_USB=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Toradex" diff --git a/configs/colibri-imx6ull_defconfig b/configs/colibri-imx6ull_defconfig index 959930cf2e..9c68d96b2f 100644 --- a/configs/colibri-imx6ull_defconfig +++ b/configs/colibri-imx6ull_defconfig @@ -80,6 +80,8 @@ CONFIG_FASTBOOT_BUF_ADDR=0x81100000 CONFIG_FASTBOOT_UUU_SUPPORT=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_MXC=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y CONFIG_FSL_USDHC=y CONFIG_MTD=y CONFIG_DM_MTD=y @@ -100,6 +102,7 @@ CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_SERIAL=y CONFIG_MXC_UART=y CONFIG_IMX_THERMAL=y +CONFIG_IMX_WATCHDOG=y CONFIG_USB=y CONFIG_USB_GADGET=y CONFIG_USB_GADGET_MANUFACTURER="Toradex" diff --git a/configs/colibri_imx6_defconfig b/configs/colibri_imx6_defconfig index 55c71a000d..74c5401198 100644 --- a/configs/colibri_imx6_defconfig +++ b/configs/colibri_imx6_defconfig @@ -22,6 +22,8 @@ CONFIG_SYS_MONITOR_LEN=409600 CONFIG_SPL_MMC=y CONFIG_SPL_SERIAL=y CONFIG_SPL=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_WATCHDOG=y CONFIG_CMD_HDMIDETECT=y CONFIG_SYS_LOAD_ADDR=0x14200000 CONFIG_SYS_MEMTEST_START=0x10000000 @@ -109,6 +111,7 @@ CONFIG_DM_REGULATOR_PFUZE100=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_MXC_UART=y CONFIG_IMX_THERMAL=y +CONFIG_IMX_WATCHDOG=y CONFIG_USB=y CONFIG_SPL_USB_HOST=y CONFIG_USB_MAX_CONTROLLER_COUNT=2