Author: adamg Date: Wed Aug 16 09:44:22 2006 GMT Module: SOURCES Tag: HEAD ---- Log message: - new
---- Files affected: SOURCES: linux-dmi-decode-and-save-oem-string-information.patch (NONE -> 1.1) (NEW) ---- Diffs: ================================================================ Index: SOURCES/linux-dmi-decode-and-save-oem-string-information.patch diff -u /dev/null SOURCES/linux-dmi-decode-and-save-oem-string-information.patch:1.1 --- /dev/null Wed Aug 16 11:44:22 2006 +++ SOURCES/linux-dmi-decode-and-save-oem-string-information.patch Wed Aug 16 11:44:17 2006 @@ -0,0 +1,77 @@ +Subject: DMI: Decode and save OEM String information +From: "Shem Multinymous" <[EMAIL PROTECTED]> + +This teaches dmi_decode() how to decode and save OEM Strings (type 11) DMI +information, which is currently discarded silently. Existing code using +DMI is not affected. Follows the "System Management BIOS (SMBIOS) +Specification" (http://www.dmtf.org/standards/smbios), and also the +userspace dmidecode.c code. + +OEM Strings are the only safe way to identify some hardware, e.g., the +ThinkPad embedded controller used by the soon-to-be-submitted tp_smapi +driver. This will also let us eliminate the long whitelist in the mainline +hdaps driver (in a future patch). + +Signed-off-by: Shem Multinymous <[EMAIL PROTECTED]> +Cc: Bjorn Helgaas <[EMAIL PROTECTED]> +Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> +--- + + drivers/firmware/dmi_scan.c | 23 +++++++++++++++++++++++ + include/linux/dmi.h | 3 ++- + 2 files changed, 25 insertions(+), 1 deletion(-) + +diff -puN drivers/firmware/dmi_scan.c~dmi-decode-and-save-oem-string-information drivers/firmware/dmi_scan.c +--- a/drivers/firmware/dmi_scan.c~dmi-decode-and-save-oem-string-information ++++ a/drivers/firmware/dmi_scan.c +@@ -123,6 +123,26 @@ static void __init dmi_save_devices(stru + dev->type = *d++ & 0x7f; + dev->name = dmi_string(dm, *d); + dev->device_data = NULL; ++ list_add(&dev->list, &dmi_devices); ++ } ++} ++ ++static void __init dmi_save_oem_strings_devices(struct dmi_header *dm) ++{ ++ int i, count = *(u8 *)(dm + 1); ++ struct dmi_device *dev; ++ ++ for (i = 1; i <= count; i++) { ++ dev = dmi_alloc(sizeof(*dev)); ++ if (!dev) { ++ printk(KERN_ERR ++ "dmi_save_oem_strings_devices: out of memory.\n"); ++ break; ++ } ++ ++ dev->type = DMI_DEV_TYPE_OEM_STRING; ++ dev->name = dmi_string(dm, i); ++ dev->device_data = NULL; + + list_add(&dev->list, &dmi_devices); + } +@@ -181,6 +201,9 @@ static void __init dmi_decode(struct dmi + case 10: /* Onboard Devices Information */ + dmi_save_devices(dm); + break; ++ case 11: /* OEM Strings */ ++ dmi_save_oem_strings_devices(dm); ++ break; + case 38: /* IPMI Device Information */ + dmi_save_ipmi_device(dm); + } +diff -puN include/linux/dmi.h~dmi-decode-and-save-oem-string-information include/linux/dmi.h +--- a/include/linux/dmi.h~dmi-decode-and-save-oem-string-information ++++ a/include/linux/dmi.h +@@ -27,7 +27,8 @@ enum dmi_device_type { + DMI_DEV_TYPE_ETHERNET, + DMI_DEV_TYPE_TOKENRING, + DMI_DEV_TYPE_SOUND, +- DMI_DEV_TYPE_IPMI = -1 ++ DMI_DEV_TYPE_IPMI = -1, ++ DMI_DEV_TYPE_OEM_STRING = -2 + }; + + struct dmi_header { +_ ================================================================ _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
