[PATCH] DMI: Decode and save OEM String information
[linux-2.6.git] / drivers / firmware / dmi_scan.c
index b9e3886..b8b596d 100644 (file)
@@ -123,6 +123,26 @@ static void __init dmi_save_devices(struct dmi_header *dm)
                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_header *dm)
        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);
        }