mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
Merge patch series "toradex: fix reset and hardware detection regressions"
Francesco Dolcini <francesco.dolcini@toradex.com> says: This series fixes two regressions affecting multiple Toradex boards (i.MX, TI and TEGRA based) and targets the current master, e.g. v2024.04 release. U-Boot `reset` command is broken on all Tordex i.MX6* based SoMs since v2023.07, this series fixes it enabling the `wdt-reboot` driver. Since v2024.04-rc1 reading the Toradex configuration block is not working properly anymore, the serial number and the hardware version are not read correctly, preventing the board from functioning correctly (wrong mac address, wrong DT, ...). This is fixed by reading the config block in `EVT_SETTINGS_R` and adding a toradex sysinfo driver. In addition to that, we now use a random mac address in case the config block is invalid. Reported-by: Sahaj Sarup <sahaj.sarup@linaro.org> Closes: https://lore.kernel.org/all/CAKZ1LvM45MB8N0CqgU+C7i9=Bjb6kqNTxWo2Tv407HKLWtCMkA@mail.gmail.com/ Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Closes: https://lore.kernel.org/all/e40ed93bd8f371ec56b8fc451dcb458f3ce6dcba.camel@toradex.com/ Reported-by: Francesco Dolcini <francesco@dolcini.it> Closes: https://lore.kernel.org/all/ZY2ZDWAQuTlRjV9H@francesco-nb/
This commit is contained in:
commit
44a15c3f4e
44 changed files with 285 additions and 196 deletions
|
@ -3,6 +3,12 @@
|
|||
* Copyright 2019 Toradex AG
|
||||
*/
|
||||
|
||||
/ {
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&mu {
|
||||
bootph-some-ram;
|
||||
};
|
||||
|
|
|
@ -3,6 +3,12 @@
|
|||
* Copyright 2019 Toradex AG
|
||||
*/
|
||||
|
||||
/ {
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&{/imx8qx-pm} {
|
||||
|
||||
bootph-some-ram;
|
||||
|
|
|
@ -5,13 +5,27 @@
|
|||
|
||||
#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;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
wdt = <&wdog1>;
|
||||
bootph-pre-ram;
|
||||
};
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
|
|
|
@ -5,18 +5,30 @@
|
|||
|
||||
#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;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
wdt = <&wdog1>;
|
||||
bootph-pre-ram;
|
||||
};
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
|
|
|
@ -9,6 +9,16 @@
|
|||
usb0 = &usbotg1; /* required for ums */
|
||||
display0 = &lcdif;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
wdt = <&wdog1>;
|
||||
bootph-pre-ram;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_uart1 {
|
||||
|
@ -54,3 +64,7 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
|
|
@ -5,10 +5,16 @@
|
|||
|
||||
#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;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&lcdif {
|
||||
|
|
|
@ -6,6 +6,16 @@
|
|||
#include "imx8mm-u-boot.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
eeprom0 = &eeprom_module;
|
||||
eeprom1 = &eeprom_carrier_board;
|
||||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
bootph-pre-ram;
|
||||
|
@ -13,12 +23,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&{/aliases} {
|
||||
eeprom0 = &eeprom_module;
|
||||
eeprom1 = &eeprom_carrier_board;
|
||||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
&{/soc@0/bus@30800000/i2c@30a20000/pmic@25} {
|
||||
bootph-pre-ram;
|
||||
};
|
||||
|
|
|
@ -6,6 +6,16 @@
|
|||
#include "imx8mp-u-boot.dtsi"
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
eeprom0 = &eeprom_module;
|
||||
eeprom1 = &eeprom_carrier_board;
|
||||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
bootph-pre-ram;
|
||||
|
@ -13,12 +23,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&{/aliases} {
|
||||
eeprom0 = &eeprom_module;
|
||||
eeprom1 = &eeprom_carrier_board;
|
||||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
&clk {
|
||||
bootph-all;
|
||||
bootph-pre-ram;
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
memory@80000000 {
|
||||
bootph-all;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&main_timer0 {
|
||||
|
|
12
arch/arm/dts/tegra124-apalis-u-boot.dtsi
Normal file
12
arch/arm/dts/tegra124-apalis-u-boot.dtsi
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
12
arch/arm/dts/tegra20-colibri-u-boot.dtsi
Normal file
12
arch/arm/dts/tegra20-colibri-u-boot.dtsi
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
12
arch/arm/dts/tegra30-apalis-u-boot.dtsi
Normal file
12
arch/arm/dts/tegra30-apalis-u-boot.dtsi
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
12
arch/arm/dts/tegra30-colibri-u-boot.dtsi
Normal file
12
arch/arm/dts/tegra30-colibri-u-boot.dtsi
Normal file
|
@ -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";
|
||||
};
|
||||
};
|
|
@ -7,6 +7,10 @@
|
|||
soc {
|
||||
bootph-all;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&aips0 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -3,15 +3,16 @@
|
|||
* Copyright (c) 2016 Toradex, Inc.
|
||||
*/
|
||||
|
||||
#include <dm.h>
|
||||
#include <common.h>
|
||||
#include <env.h>
|
||||
#include <g_dnl.h>
|
||||
#include <init.h>
|
||||
#include <linux/libfdt.h>
|
||||
#include <sysinfo.h>
|
||||
|
||||
#ifdef CONFIG_VIDEO
|
||||
#include <bmp_logo.h>
|
||||
#include <dm.h>
|
||||
#include <splash.h>
|
||||
#include <video.h>
|
||||
#endif
|
||||
|
@ -96,55 +97,70 @@ 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)
|
||||
{
|
||||
if (valid_cfgblock)
|
||||
printf("Serial#: %s\n", tdx_serial_str);
|
||||
|
||||
#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);
|
||||
checkboard();
|
||||
} 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);
|
||||
|
||||
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
|
||||
/* 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
|
||||
|
@ -165,6 +181,47 @@ int tdx_checkboard(void)
|
|||
|
||||
return 0;
|
||||
}
|
||||
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)
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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=4096
|
||||
CONFIG_TFTP_TSIZE=y
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
@ -95,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
|
||||
|
@ -112,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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
@ -68,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
|
||||
|
@ -82,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"
|
||||
|
|
|
@ -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
|
||||
|
@ -79,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
|
||||
|
@ -99,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"
|
||||
|
|
|
@ -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=4096
|
||||
CONFIG_TFTP_TSIZE=y
|
||||
|
|
|
@ -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
|
||||
|
@ -74,6 +76,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
|
||||
|
@ -108,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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -49,6 +49,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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -65,6 +65,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
|
||||
|
|
|
@ -103,6 +103,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
|
||||
|
|
|
@ -88,6 +88,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
|
||||
|
|
|
@ -98,6 +98,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
|
||||
|
|
Loading…
Reference in a new issue