aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmanuele Ghidoli <emanuele.ghidoli@toradex.com>2024-02-20 19:29:24 +0100
committerTom Rini <trini@konsulko.com>2024-02-21 10:30:18 -0500
commit79c5c2258159725547f9591d250a38682d08eda1 (patch)
treee633a6ba3ba0cb97a2634fe5bca27262c66cfacc
parent6f8d290b226950329eeb16ff8dea844ceac79dbb (diff)
downloadu-boot-79c5c2258159725547f9591d250a38682d08eda1.zip
u-boot-79c5c2258159725547f9591d250a38682d08eda1.tar.gz
u-boot-79c5c2258159725547f9591d250a38682d08eda1.tar.bz2
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. Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
-rw-r--r--arch/arm/dts/fsl-imx8qm-apalis-u-boot.dtsi6
-rw-r--r--arch/arm/dts/fsl-imx8qxp-colibri-u-boot.dtsi6
-rw-r--r--arch/arm/dts/imx6dl-colibri-eval-v3-u-boot.dtsi4
-rw-r--r--arch/arm/dts/imx6q-apalis-eval-u-boot.dtsi4
-rw-r--r--arch/arm/dts/imx6ull-colibri-eval-v3-u-boot.dtsi4
-rw-r--r--arch/arm/dts/imx7d-colibri-eval-v3-u-boot.dtsi4
-rw-r--r--arch/arm/dts/imx8mm-verdin-wifi-dev-u-boot.dtsi4
-rw-r--r--arch/arm/dts/imx8mp-verdin-wifi-dev-u-boot.dtsi4
-rw-r--r--arch/arm/dts/k3-am625-verdin-wifi-dev-u-boot.dtsi4
-rw-r--r--arch/arm/dts/tegra124-apalis-u-boot.dtsi12
-rw-r--r--arch/arm/dts/tegra20-colibri-u-boot.dtsi12
-rw-r--r--arch/arm/dts/tegra30-apalis-u-boot.dtsi12
-rw-r--r--arch/arm/dts/tegra30-colibri-u-boot.dtsi12
-rw-r--r--arch/arm/dts/vf610-colibri-eval-v3-u-boot.dtsi4
-rw-r--r--board/toradex/common/Kconfig1
-rw-r--r--board/toradex/common/tdx-common.c50
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 c54a59e..d73be74 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 6ab6b1f..60c4cd6 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 0eea4d1..5a91d0a 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 3c6e503..5941263 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 6823b42..7318142 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 b2c12a4..6814276 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 515f195..38db560 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 67f1d45..03f211d 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 02f34c9..28b697b 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 0000000..a3614d2
--- /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 0000000..d4a669a
--- /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 0000000..37cbfbc
--- /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 0000000..37cbfbc
--- /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 572d408..8c3b86c 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 1f6a5e4..b85893a 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 6084436..1f3253f 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)
{