[coreboot] Patch set updated for coreboot: 2c4313c Extend smbios api to allow runtime change of mainboard serial and version
Christian Gmeiner (christian.gmeiner@gmail.com)
gerrit at coreboot.org
Tue Jul 24 13:39:42 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 2c4313c3e595fca2b18b573123f35fe48ea96b35
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date: Tue Jul 24 13:45:15 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 3b9e5a1..96a834a 100644
--- a/src/arch/x86/boot/smbios.c
+++ b/src/arch/x86/boot/smbios.c
@@ -162,6 +162,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;
@@ -173,8 +183,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 7912ba1..94b15da 100644
--- a/src/include/smbios.h
+++ b/src/include/smbios.h
@@ -3,6 +3,9 @@
#include <types.h>
+const char *__attribute__((weak)) smbios_mainboard_serial_number(void);
+const char *__attribute__((weak)) smbios_mainboard_version(void);
+
unsigned long smbios_write_tables(unsigned long start);
int smbios_add_string(char *start, const char *str);
int smbios_string_table_len(char *start);
More information about the coreboot
mailing list