]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
lib: smbios: Detect system properties via SYSINFO IDs
authorMichal Simek <michal.simek@amd.com>
Fri, 26 Apr 2024 13:38:13 +0000 (15:38 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 20 Jun 2024 17:41:43 +0000 (11:41 -0600)
Code is pretty much supports only DT properties and completely ignore
information coming from sysinfo driver.
Code is calling smbios_add_prop() which calls with
smbios_add_prop_si(SYSINFO_ID_NONE). But SYSINFO_ID_NONE can't
differentiate different entries from sysinfo driver.
That's why introduce separate SYSINFO macros which can be used in sysinfo
driver and passed to smbios structure.

Signed-off-by: Michal Simek <michal.simek@amd.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
include/sysinfo.h
lib/smbios.c

index 524c7d6b223f9eef98982e3601c59187e6548dbf..8a77ef448565110fe591acfb3038a9804fb56496 100644 (file)
@@ -43,8 +43,17 @@ enum sysinfo_id {
        SYSINFO_ID_NONE,
 
        /* For SMBIOS tables */
+       SYSINFO_ID_SMBIOS_SYSTEM_MANUFACTURER,
+       SYSINFO_ID_SMBIOS_SYSTEM_PRODUCT,
        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_SERIAL,
+       SYSINFO_ID_SMBIOS_BASEBOARD_ASSET_TAG,
 
        /* For show_board_info() */
        SYSINFO_ID_BOARD_MODEL,
index c6c3b62ae646c343a0c29e7f029323c8612da028..fb6eaf1d5ca1a544295c0c1c756cb387c7584d1c 100644 (file)
@@ -383,8 +383,12 @@ static int smbios_write_type1(ulong *current, int handle,
        memset(t, 0, sizeof(struct smbios_type1));
        fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle);
        smbios_set_eos(ctx, t->eos);
-       t->manufacturer = smbios_add_prop(ctx, "manufacturer", NULL);
-       t->product_name = smbios_add_prop(ctx, "product", NULL);
+       t->manufacturer = smbios_add_prop_si(ctx, "manufacturer",
+                                            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",
                                        SYSINFO_ID_SMBIOS_SYSTEM_VERSION,
                                        NULL);
@@ -392,11 +396,15 @@ static int smbios_write_type1(ulong *current, int handle,
                t->serial_number = smbios_add_prop(ctx, NULL, serial_str);
                strncpy((char *)t->uuid, serial_str, sizeof(t->uuid));
        } 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->sku_number = smbios_add_prop(ctx, "sku", NULL);
-       t->family = smbios_add_prop(ctx, "family", NULL);
+       t->sku_number = smbios_add_prop_si(ctx, "sku",
+                                          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);
        *current += len;
@@ -415,12 +423,22 @@ static int smbios_write_type2(ulong *current, int handle,
        memset(t, 0, sizeof(struct smbios_type2));
        fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle);
        smbios_set_eos(ctx, t->eos);
-       t->manufacturer = smbios_add_prop(ctx, "manufacturer", NULL);
-       t->product_name = smbios_add_prop(ctx, "product", NULL);
+       t->manufacturer = smbios_add_prop_si(ctx, "manufacturer",
+                                            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",
                                        SYSINFO_ID_SMBIOS_BASEBOARD_VERSION,
                                        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->board_type = SMBIOS_BOARD_MOTHERBOARD;
        t->chassis_handle = handle + 1;