mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-09-20 21:31:32 +02:00
Merge patch series "lib: smbios: Extend driver with using sysinfo driver"
Michal Simek <michal.simek@amd.com> says: Hi, currently only DT way is supported and it is added directly to lib/smbios.c but I think DT and env is only one way how information can be found that's why this series is improving handling with using sysinfo driver which can be platform specific. At the end of day DT should be taken from smbios.c and put to sysinfo DT driver instead of implementing it directly in this generic file.
This commit is contained in:
commit
643b55bff0
@ -27,6 +27,7 @@ CONFIG_BOARD_EARLY_INIT_F=y
|
|||||||
CONFIG_BOARD_EARLY_INIT_R=y
|
CONFIG_BOARD_EARLY_INIT_R=y
|
||||||
CONFIG_CLOCKS=y
|
CONFIG_CLOCKS=y
|
||||||
CONFIG_SYS_PROMPT="Versal NET> "
|
CONFIG_SYS_PROMPT="Versal NET> "
|
||||||
|
CONFIG_CMD_SMBIOS=y
|
||||||
CONFIG_CMD_BOOTMENU=y
|
CONFIG_CMD_BOOTMENU=y
|
||||||
CONFIG_CMD_GREPENV=y
|
CONFIG_CMD_GREPENV=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
@ -28,6 +28,7 @@ CONFIG_SYS_PBSIZE=2073
|
|||||||
CONFIG_BOARD_EARLY_INIT_R=y
|
CONFIG_BOARD_EARLY_INIT_R=y
|
||||||
CONFIG_CLOCKS=y
|
CONFIG_CLOCKS=y
|
||||||
CONFIG_SYS_PROMPT="Versal> "
|
CONFIG_SYS_PROMPT="Versal> "
|
||||||
|
CONFIG_CMD_SMBIOS=y
|
||||||
CONFIG_CMD_BOOTMENU=y
|
CONFIG_CMD_BOOTMENU=y
|
||||||
CONFIG_CMD_GREPENV=y
|
CONFIG_CMD_GREPENV=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
@ -54,6 +54,7 @@ CONFIG_SPL_SPI_LOAD=y
|
|||||||
CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
|
CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000
|
||||||
CONFIG_SPL_ATF=y
|
CONFIG_SPL_ATF=y
|
||||||
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
|
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
|
||||||
|
CONFIG_CMD_SMBIOS=y
|
||||||
CONFIG_CMD_BOOTMENU=y
|
CONFIG_CMD_BOOTMENU=y
|
||||||
CONFIG_CMD_GREPENV=y
|
CONFIG_CMD_GREPENV=y
|
||||||
CONFIG_CMD_NVEDIT_EFI=y
|
CONFIG_CMD_NVEDIT_EFI=y
|
||||||
|
@ -52,6 +52,7 @@ CONFIG_SPL_SPI_LOAD=y
|
|||||||
CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000
|
CONFIG_SYS_SPI_U_BOOT_OFFS=0x100000
|
||||||
CONFIG_SPL_ATF=y
|
CONFIG_SPL_ATF=y
|
||||||
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
|
CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
|
||||||
|
CONFIG_CMD_SMBIOS=y
|
||||||
CONFIG_CMD_BOOTMENU=y
|
CONFIG_CMD_BOOTMENU=y
|
||||||
CONFIG_CMD_THOR_DOWNLOAD=y
|
CONFIG_CMD_THOR_DOWNLOAD=y
|
||||||
CONFIG_THOR_RESET_OFF=y
|
CONFIG_THOR_RESET_OFF=y
|
||||||
|
@ -43,8 +43,17 @@ enum sysinfo_id {
|
|||||||
SYSINFO_ID_NONE,
|
SYSINFO_ID_NONE,
|
||||||
|
|
||||||
/* For SMBIOS tables */
|
/* For SMBIOS tables */
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_MANUFACTURER,
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_PRODUCT,
|
||||||
SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
|
SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_SERIAL,
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_SKU,
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_FAMILY,
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_MANUFACTURER,
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_PRODUCT,
|
||||||
SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
|
SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_SERIAL,
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_ASSET_TAG,
|
||||||
|
|
||||||
/* For show_board_info() */
|
/* For show_board_info() */
|
||||||
SYSINFO_ID_BOARD_MODEL,
|
SYSINFO_ID_BOARD_MODEL,
|
||||||
|
42
lib/smbios.c
42
lib/smbios.c
@ -383,8 +383,12 @@ static int smbios_write_type1(ulong *current, int handle,
|
|||||||
memset(t, 0, sizeof(struct smbios_type1));
|
memset(t, 0, sizeof(struct smbios_type1));
|
||||||
fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle);
|
fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle);
|
||||||
smbios_set_eos(ctx, t->eos);
|
smbios_set_eos(ctx, t->eos);
|
||||||
t->manufacturer = smbios_add_prop(ctx, "manufacturer", NULL);
|
t->manufacturer = smbios_add_prop_si(ctx, "manufacturer",
|
||||||
t->product_name = smbios_add_prop(ctx, "product", NULL);
|
SYSINFO_ID_SMBIOS_SYSTEM_MANUFACTURER,
|
||||||
|
NULL);
|
||||||
|
t->product_name = smbios_add_prop_si(ctx, "product",
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_PRODUCT,
|
||||||
|
NULL);
|
||||||
t->version = smbios_add_prop_si(ctx, "version",
|
t->version = smbios_add_prop_si(ctx, "version",
|
||||||
SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
|
SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
|
||||||
NULL);
|
NULL);
|
||||||
@ -392,11 +396,15 @@ static int smbios_write_type1(ulong *current, int handle,
|
|||||||
t->serial_number = smbios_add_prop(ctx, NULL, serial_str);
|
t->serial_number = smbios_add_prop(ctx, NULL, serial_str);
|
||||||
strncpy((char *)t->uuid, serial_str, sizeof(t->uuid));
|
strncpy((char *)t->uuid, serial_str, sizeof(t->uuid));
|
||||||
} else {
|
} else {
|
||||||
t->serial_number = smbios_add_prop(ctx, "serial", NULL);
|
t->serial_number = smbios_add_prop_si(ctx, "serial",
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_SERIAL,
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
t->wakeup_type = SMBIOS_WAKEUP_TYPE_UNKNOWN;
|
t->wakeup_type = SMBIOS_WAKEUP_TYPE_UNKNOWN;
|
||||||
t->sku_number = smbios_add_prop(ctx, "sku", NULL);
|
t->sku_number = smbios_add_prop_si(ctx, "sku",
|
||||||
t->family = smbios_add_prop(ctx, "family", NULL);
|
SYSINFO_ID_SMBIOS_SYSTEM_SKU, NULL);
|
||||||
|
t->family = smbios_add_prop_si(ctx, "family",
|
||||||
|
SYSINFO_ID_SMBIOS_SYSTEM_FAMILY, NULL);
|
||||||
|
|
||||||
len = t->length + smbios_string_table_len(ctx);
|
len = t->length + smbios_string_table_len(ctx);
|
||||||
*current += len;
|
*current += len;
|
||||||
@ -415,12 +423,22 @@ static int smbios_write_type2(ulong *current, int handle,
|
|||||||
memset(t, 0, sizeof(struct smbios_type2));
|
memset(t, 0, sizeof(struct smbios_type2));
|
||||||
fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle);
|
fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle);
|
||||||
smbios_set_eos(ctx, t->eos);
|
smbios_set_eos(ctx, t->eos);
|
||||||
t->manufacturer = smbios_add_prop(ctx, "manufacturer", NULL);
|
t->manufacturer = smbios_add_prop_si(ctx, "manufacturer",
|
||||||
t->product_name = smbios_add_prop(ctx, "product", NULL);
|
SYSINFO_ID_SMBIOS_BASEBOARD_MANUFACTURER,
|
||||||
|
NULL);
|
||||||
|
t->product_name = smbios_add_prop_si(ctx, "product",
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_PRODUCT,
|
||||||
|
NULL);
|
||||||
t->version = smbios_add_prop_si(ctx, "version",
|
t->version = smbios_add_prop_si(ctx, "version",
|
||||||
SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
|
SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
|
||||||
NULL);
|
NULL);
|
||||||
t->asset_tag_number = smbios_add_prop(ctx, "asset-tag", NULL);
|
|
||||||
|
t->serial_number = smbios_add_prop_si(ctx, "serial",
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_SERIAL,
|
||||||
|
NULL);
|
||||||
|
t->asset_tag_number = smbios_add_prop_si(ctx, "asset-tag",
|
||||||
|
SYSINFO_ID_SMBIOS_BASEBOARD_ASSET_TAG,
|
||||||
|
NULL);
|
||||||
t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING;
|
t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING;
|
||||||
t->board_type = SMBIOS_BOARD_MOTHERBOARD;
|
t->board_type = SMBIOS_BOARD_MOTHERBOARD;
|
||||||
t->chassis_handle = handle + 1;
|
t->chassis_handle = handle + 1;
|
||||||
@ -573,8 +591,14 @@ ulong write_smbios_table(ulong addr)
|
|||||||
ctx.node = ofnode_null();
|
ctx.node = ofnode_null();
|
||||||
if (IS_ENABLED(CONFIG_OF_CONTROL) && CONFIG_IS_ENABLED(SYSINFO)) {
|
if (IS_ENABLED(CONFIG_OF_CONTROL) && CONFIG_IS_ENABLED(SYSINFO)) {
|
||||||
uclass_first_device(UCLASS_SYSINFO, &ctx.dev);
|
uclass_first_device(UCLASS_SYSINFO, &ctx.dev);
|
||||||
if (ctx.dev)
|
if (ctx.dev) {
|
||||||
|
int ret;
|
||||||
|
|
||||||
parent_node = dev_read_subnode(ctx.dev, "smbios");
|
parent_node = dev_read_subnode(ctx.dev, "smbios");
|
||||||
|
ret = sysinfo_detect(ctx.dev);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
ctx.dev = NULL;
|
ctx.dev = NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user