提交 96dedb0d 编写于 作者: S Simon Glass

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: NSimon Glass <sjg@chromium.org>
Reviewed-by: NBin Meng <bmeng.cn@gmail.com>
上级 c119528a
// 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;
}
/*
* If the root node of the DTB has a "model" property, show it.
* 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)
{
#ifdef CONFIG_OF_CONTROL
DECLARE_GLOBAL_DATA_PTR;
const char *model;
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);
}
model = fdt_getprop(gd->fdt_blob, 0, "model", NULL);
/* 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);
#endif
if (model)
printf("Model: %s\n", model);
}
return checkboard();
}
......@@ -37,9 +37,13 @@ struct udevice;
enum sysinfo_id {
SYSINFO_ID_NONE,
/* For SMBIOS tables */
SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
/* For show_board_info() */
SYSINFO_ID_BOARD_MODEL,
/* First value available for downstream/board used */
SYSINFO_ID_USER = 0x1000,
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册