u-boot/common/board_info.c
Simon Glass 96dedb0da2 sysinfo: Allow showing model info from sysinfo
Some boards may want to show the SKU ID or other information obtained at
runtime. Allow this to come from sysinfo. The board can then provide a
sysinfo driver to provide it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2021-03-27 16:26:48 +13:00

52 lines
1 KiB
C

// SPDX-License-Identifier: GPL-2.0+
#include <common.h>
#include <dm.h>
#include <init.h>
#include <sysinfo.h>
#include <asm/global_data.h>
#include <linux/libfdt.h>
#include <linux/compiler.h>
DECLARE_GLOBAL_DATA_PTR;
int __weak checkboard(void)
{
return 0;
}
/*
* Check sysinfo for board information. Failing that if the root node of the DTB
* has a "model" property, show it.
*
* Then call checkboard().
*/
int __weak show_board_info(void)
{
if (IS_ENABLED(CONFIG_OF_CONTROL)) {
struct udevice *dev;
const char *model;
char str[80];
int ret = -ENOSYS;
if (IS_ENABLED(CONFIG_SYSINFO)) {
/* This might provide more detail */
ret = uclass_first_device_err(UCLASS_SYSINFO, &dev);
if (!ret)
ret = sysinfo_get_str(dev,
SYSINFO_ID_BOARD_MODEL,
sizeof(str), str);
}
/* Fail back to the main 'model' if available */
if (ret)
model = fdt_getprop(gd->fdt_blob, 0, "model", NULL);
else
model = str;
if (model)
printf("Model: %s\n", model);
}
return checkboard();
}