diff options
-rw-r--r-- | arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi | 6 | ||||
-rw-r--r-- | arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi | 6 | ||||
-rw-r--r-- | arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi | 4 | ||||
-rw-r--r-- | arch/arm/dts/tegra124-apalis-u-boot.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/dts/tegra20-colibri-u-boot.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/dts/tegra30-apalis-u-boot.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/dts/tegra30-colibri-u-boot.dtsi | 12 | ||||
-rw-r--r-- | arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi | 4 | ||||
-rw-r--r-- | board/toradex/common/Kconfig | 1 | ||||
-rw-r--r-- | board/toradex/common/tdx-common.c | 50 |
16 files changed, 136 insertions, 7 deletions
diff --git a/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi b/arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi index c54a59e89c5..d73be74d211 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 6ab6b1f9ee6..60c4cd6fc01 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 0eea4d1862a..5a91d0aca20 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 3c6e503d043..59412635420 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 6823b42d451..731814216e1 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 b2c12a413da..68142769d36 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 515f195ab75..38db56059d6 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 67f1d45ce26..03f211d5f7d 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 02f34c90c6d..28b697b67ae 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 00000000000..a3614d27943 --- /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 00000000000..d4a669a288d --- /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 00000000000..37cbfbcc350 --- /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 00000000000..37cbfbcc350 --- /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 572d40877ef..8c3b86c201f 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 1f6a5e4db56..b85893ab44e 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 6084436b48b..1f3253f4222 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 <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 @@ -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) { |