[flashrom] [commit] r1182 - trunk

repository service svn at flashrom.org
Sun Sep 26 23:43:53 CEST 2010


Author: hailfinger
Date: Sun Sep 26 23:43:53 2010
New Revision: 1182
URL: http://flashrom.org/trac/flashrom/changeset/1182

Log:
Half a dozen hardcoded strcmp() don't make sense if we need a
chassis-type list anyway once we merge the internal DMI decoder.
Provide and array of the most interesting chassis types and annotate
them with laptop/non-laptop status.
Match the dmidecode chassis type against the strings in the array.

Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Acked-by: Sean Nelson <audiohacked at gmail.com>

Modified:
   trunk/dmi.c

Modified: trunk/dmi.c
==============================================================================
--- trunk/dmi.c	Sun Sep 26 00:53:44 2010	(r1181)
+++ trunk/dmi.c	Sun Sep 26 23:43:53 2010	(r1182)
@@ -54,6 +54,26 @@
 	"baseboard-version",
 };
 
+/* A full list of chassis types can be found in the System Management BIOS
+ * (SMBIOS) Reference Specification 2.7.0 section 7.4.1 "Chassis Types" at
+ * http://www.dmtf.org/sites/default/files/standards/documents/DSP0134_2.7.0.pdf
+ * The types below are the most common ones.
+ */
+static const struct {
+	unsigned char type;
+	unsigned char is_laptop;
+	const char *name;
+} dmi_chassis_types[] = {
+	{0x01, 0, "Other"},
+	{0x02, 0, "Unknown"},
+	{0x03, 0, "Desktop",},
+	{0x08, 1, "Portable"},
+	{0x09, 1, "Laptop"},
+	{0x0a, 1, "Notebook"},
+	{0x0b, 1, "Hand Held"},
+	{0x0e, 1, "Sub Notebook"},
+};
+
 #define DMI_COMMAND_LEN_MAX 260
 static const char *dmidecode_command = "dmidecode";
 
@@ -132,10 +152,15 @@
 	}
 
 	chassis_type = get_dmi_string("chassis-type");
-	if (chassis_type && (!strcmp(chassis_type, "Notebook") ||
-			     !strcmp(chassis_type, "Portable"))) {
-		msg_pdbg("Laptop detected via DMI\n");
-		is_laptop = 1;
+	if (chassis_type) {
+		for (i = 0; i < ARRAY_SIZE(dmi_chassis_types); i++) {
+			if (!strcasecmp(chassis_type,
+					dmi_chassis_types[i].name) &&
+			    dmi_chassis_types[i].is_laptop) {
+				msg_pdbg("Laptop detected via DMI\n");
+				is_laptop = 1;
+			}
+		}
 	}
 	free(chassis_type);
 }




More information about the flashrom mailing list