smbios: Don't fill out firmware version on ChromeOS
authorStefan Reinauer <reinauer@chromium.org>
Tue, 3 Apr 2012 23:02:54 +0000 (16:02 -0700)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Thu, 5 Apr 2012 20:47:22 +0000 (22:47 +0200)
In ChromeOS we potentially have different payloads with
different versions. Since the user land tools get information
on which one of them is loaded, leave the string in smbios
empty so we can fill it out in the payload.
Also fill out system version number and serial number with
some constant values.

Change-Id: Id1fed5a54b511c730975fa83347452f1274b8504
Signed-off-by: Stefan Reinauer <reinauer@google.com>
Reviewed-on: http://review.coreboot.org/867
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Tested-by: build bot (Jenkins)
src/arch/x86/boot/smbios.c

index 2bd00c49d4aa778a1979d6c7f8786bb716247815..f39bf04b3b719fd17261ad1a3864e12805a76a4e 100644 (file)
@@ -29,6 +29,9 @@
 #include <cpu/x86/name.h>
 #include <cbfs_core.h>
 #include <arch/byteorder.h>
 #include <cpu/x86/name.h>
 #include <cbfs_core.h>
 #include <arch/byteorder.h>
+#if CONFIG_CHROMEOS
+#include <vendorcode/google/chromeos/gnvs.h>
+#endif
 
 static u8 smbios_checksum(u8 *p, u32 length)
 {
 
 static u8 smbios_checksum(u8 *p, u32 length)
 {
@@ -126,8 +129,18 @@ static int smbios_write_type0(unsigned long *current, int handle)
        t->length = len - 2;
 
        t->vendor = smbios_add_string(t->eos, "coreboot");
        t->length = len - 2;
 
        t->vendor = smbios_add_string(t->eos, "coreboot");
+#if !CONFIG_CHROMEOS
        t->bios_release_date = smbios_add_string(t->eos, COREBOOT_DMI_DATE);
        t->bios_version = smbios_add_string(t->eos, COREBOOT_VERSION);
        t->bios_release_date = smbios_add_string(t->eos, COREBOOT_DMI_DATE);
        t->bios_version = smbios_add_string(t->eos, COREBOOT_VERSION);
+#else
+#define SPACES \
+       "                                                                  "
+       t->bios_release_date = smbios_add_string(t->eos, COREBOOT_DMI_DATE);
+       u32 version_offset = (u32)smbios_string_table_len(t->eos);
+       t->bios_version = smbios_add_string(t->eos, SPACES);
+       /* SMBIOS offsets start at 1 rather than 0 */
+       vboot_data->vbt10 = (u32)t->eos + (version_offset - 1);
+#endif
 
        if ((hdr = get_cbfs_header()) != (struct cbfs_header *)0xffffffff)
                t->bios_rom_size = (ntohl(hdr->romsize) / 65535) - 1;
 
        if ((hdr = get_cbfs_header()) != (struct cbfs_header *)0xffffffff)
                t->bios_rom_size = (ntohl(hdr->romsize) / 65535) - 1;
@@ -160,6 +173,8 @@ static int smbios_write_type1(unsigned long *current, int handle)
        t->length = len - 2;
        t->manufacturer = smbios_add_string(t->eos, CONFIG_MAINBOARD_VENDOR);
        t->product_name = smbios_add_string(t->eos, CONFIG_MAINBOARD_PART_NUMBER);
        t->length = len - 2;
        t->manufacturer = smbios_add_string(t->eos, CONFIG_MAINBOARD_VENDOR);
        t->product_name = smbios_add_string(t->eos, CONFIG_MAINBOARD_PART_NUMBER);
+       t->serial_number = smbios_add_string(t->eos, "123456789");
+       t->version = smbios_add_string(t->eos, "1.0");
        len = t->length + smbios_string_table_len(t->eos);
        *current += len;
        return len;
        len = t->length + smbios_string_table_len(t->eos);
        *current += len;
        return len;