[coreboot] Patch set updated for coreboot: 35fe369 Extend smbios api to allow runtime change of mainboard serial and version

Christian Gmeiner (christian.gmeiner@gmail.com) gerrit at coreboot.org
Wed Jul 25 13:36:03 CEST 2012


Christian Gmeiner (christian.gmeiner at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1232

-gerrit

commit 35fe369b90b5faa5e5f6f259d29dd7fb63bdbbd2
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Wed Jul 25 13:42:40 2012 +0200

    Extend smbios api to allow runtime change of mainboard serial and version
    
    This patch extends the current smbios api to allow changing mainboard
    serial and version during coreboot runtime. This is helpful if you
    have an EEPROM etc. to access these informations and want to add
    some quirks for broken hardware revision for the linux kernel.
    This could be done via DMI_MATCH marco.
    
    Change-Id: I1924a56073084e965a23e47873d9f8542070423c
    Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
---
 src/arch/x86/boot/smbios.c |   14 ++++++++++++--
 src/include/smbios.h       |    3 +++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/arch/x86/boot/smbios.c b/src/arch/x86/boot/smbios.c
index 9c61e28..8877f60 100644
--- a/src/arch/x86/boot/smbios.c
+++ b/src/arch/x86/boot/smbios.c
@@ -163,6 +163,16 @@ static int smbios_write_type0(unsigned long *current, int handle)
 	return len;
 }
 
+const char *__attribute__((weak)) smbios_mainboard_serial_number(void)
+{
+	return CONFIG_MAINBOARD_SERIAL_NUMBER;
+}
+
+const char *__attribute__((weak)) smbios_mainboard_version(void)
+{
+	return CONFIG_MAINBOARD_VERSION;
+}
+
 static int smbios_write_type1(unsigned long *current, int handle)
 {
 	struct smbios_type1 *t = (struct smbios_type1 *)*current;
@@ -174,8 +184,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->serial_number = smbios_add_string(t->eos, CONFIG_MAINBOARD_SERIAL_NUMBER);
-	t->version = smbios_add_string(t->eos, CONFIG_MAINBOARD_VERSION);
+	t->serial_number = smbios_add_string(t->eos, smbios_mainboard_serial_number());
+	t->version = smbios_add_string(t->eos, smbios_mainboard_version());
 	len = t->length + smbios_string_table_len(t->eos);
 	*current += len;
 	return len;
diff --git a/src/include/smbios.h b/src/include/smbios.h
index c658515..50bce2a 100644
--- a/src/include/smbios.h
+++ b/src/include/smbios.h
@@ -7,6 +7,9 @@ unsigned long smbios_write_tables(unsigned long start);
 int smbios_add_string(char *start, const char *str);
 int smbios_string_table_len(char *start);
 
+const char *smbios_mainboard_serial_number(void);
+const char *smbios_mainboard_version(void);
+
 #define BIOS_CHARACTERISTICS_PCI_SUPPORTED  (1 << 7)
 #define BIOS_CHARACTERISTICS_PC_CARD  (1 << 8)
 #define BIOS_CHARACTERISTICS_PNP  (1 << 9)




More information about the coreboot mailing list