mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
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 <marcel.ziswiler@toradex.com> Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> # Verdin iMX8M Plus Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Reviewed-by: Fabio Estevam <festevam@gmail.com>
This commit is contained in:
parent
100121d51b
commit
2abc3bbe0c
16 changed files with 136 additions and 7 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;
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
mmc0 = &usdhc3;
|
||||
mmc1 = &usdhc1;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
|
|
|
@ -19,6 +19,10 @@
|
|||
mmc1 = &usdhc1;
|
||||
mmc2 = &usdhc2;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&wdog1 {
|
||||
|
|
|
@ -9,6 +9,10 @@
|
|||
usb0 = &usbotg1; /* required for ums */
|
||||
display0 = &lcdif;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl_uart1 {
|
||||
|
|
|
@ -11,6 +11,10 @@
|
|||
mmc0 = &usdhc3;
|
||||
mmc1 = &usdhc1;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
};
|
||||
|
||||
&lcdif {
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
bootph-pre-ram;
|
||||
|
|
|
@ -12,6 +12,10 @@
|
|||
eeprom2 = &eeprom_display_adapter;
|
||||
};
|
||||
|
||||
sysinfo {
|
||||
compatible = "toradex,sysinfo";
|
||||
};
|
||||
|
||||
wdt-reboot {
|
||||
compatible = "wdt-reboot";
|
||||
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 {
|
||||
|
|
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue