[coreboot-gerrit] Patch set updated for coreboot: 4eb5767 lenovo/x60: Add "IBM ThinkPad Embedded Controller" SMBIOS OEM String

Ronald G. Minnich (rminnich@gmail.com) gerrit at coreboot.org
Mon Jul 15 19:27:47 CEST 2013


Ronald G. Minnich (rminnich at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3620

-gerrit

commit 4eb57673816654405ade82fa85f484ebd810de5f
Author: Peter Stuge <peter at stuge.se>
Date:   Sat Jul 6 20:10:36 2013 +0200

    lenovo/x60: Add "IBM ThinkPad Embedded Controller" SMBIOS OEM String
    
    The Linux thinkpad_acpi.c driver looks for this string while
    reading information about the system it is running on.
    
    This commit does not make the module load but it is one of
    several things that the module looks for on a ThinkPad.
    
    The use of 3 defines for the serial number template
    seems odd but it's done in a way that eliminates
    magic numbers, yet avoids use of strcpy, strlen,
    strindex, strchr, or strspan: we can have some
    correctness assured at compile time. Also, the
    defines can be copy/pasted for other mainboards
    and we should void errors due to people not changing
    magic numbers.
    
    Change-Id: Ief5f28d2e27bf959cb579c4c8eea9eecc9a89a7c
    Signed-off-by: Peter Stuge <peter at stuge.se>
    Signed-off-by: Ronald G. Minnich <rminnich at gmail.com>
---
 src/mainboard/lenovo/x60/mainboard.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/mainboard/lenovo/x60/mainboard.c b/src/mainboard/lenovo/x60/mainboard.c
index b344ccb..2f312f0 100644
--- a/src/mainboard/lenovo/x60/mainboard.c
+++ b/src/mainboard/lenovo/x60/mainboard.c
@@ -36,6 +36,7 @@
 #include <pc80/mc146818rtc.h>
 #include "dock.h"
 #include <arch/x86/include/arch/acpigen.h>
+#include <smbios.h>
 #include <x86emu/x86emu.h>
 #define PANEL INT15_5F35_CL_DISPLAY_DEFAULT
 
@@ -133,9 +134,28 @@ static void mainboard_init(device_t dev)
 	}
 }
 
+static int mainboard_smbios_data(device_t dev, int *handle, unsigned long *current)
+{
+	int len;
+#define SERIALBEGIN	"IBM ThinkPad Embedded Controller -["
+#define SERIAL		"01234567890123456"
+#define SERIALEND	"]-"
+	char tpec[] = SERIALBEGIN SERIAL SERIALEND;
+
+	const char *oem_strings[] = {
+		tpec,
+	};
+
+	h8_build_id_and_function_spec_version(tpec + sizeof(SERIALBEGIN), sizeof(SERIAL));
+	len = smbios_write_type11(current, (*handle)++, oem_strings, ARRAY_SIZE(oem_strings));
+
+	return len;
+}
+
 static void mainboard_enable(device_t dev)
 {
 	dev->ops->init = mainboard_init;
+	dev->ops->get_smbios_data = mainboard_smbios_data;
 }
 
 struct chip_operations mainboard_ops = {



More information about the coreboot-gerrit mailing list