aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/firmware/dmi_scan.c23
-rw-r--r--include/linux/dmi.h3
2 files changed, 25 insertions, 1 deletions
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index b9e3886d9e16..b8b596d5778d 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -123,6 +123,26 @@ static void __init dmi_save_devices(struct dmi_header *dm)
123 dev->type = *d++ & 0x7f; 123 dev->type = *d++ & 0x7f;
124 dev->name = dmi_string(dm, *d); 124 dev->name = dmi_string(dm, *d);
125 dev->device_data = NULL; 125 dev->device_data = NULL;
126 list_add(&dev->list, &dmi_devices);
127 }
128}
129
130static void __init dmi_save_oem_strings_devices(struct dmi_header *dm)
131{
132 int i, count = *(u8 *)(dm + 1);
133 struct dmi_device *dev;
134
135 for (i = 1; i <= count; i++) {
136 dev = dmi_alloc(sizeof(*dev));
137 if (!dev) {
138 printk(KERN_ERR
139 "dmi_save_oem_strings_devices: out of memory.\n");
140 break;
141 }
142
143 dev->type = DMI_DEV_TYPE_OEM_STRING;
144 dev->name = dmi_string(dm, i);
145 dev->device_data = NULL;
126 146
127 list_add(&dev->list, &dmi_devices); 147 list_add(&dev->list, &dmi_devices);
128 } 148 }
@@ -181,6 +201,9 @@ static void __init dmi_decode(struct dmi_header *dm)
181 case 10: /* Onboard Devices Information */ 201 case 10: /* Onboard Devices Information */
182 dmi_save_devices(dm); 202 dmi_save_devices(dm);
183 break; 203 break;
204 case 11: /* OEM Strings */
205 dmi_save_oem_strings_devices(dm);
206 break;
184 case 38: /* IPMI Device Information */ 207 case 38: /* IPMI Device Information */
185 dmi_save_ipmi_device(dm); 208 dmi_save_ipmi_device(dm);
186 } 209 }
diff --git a/include/linux/dmi.h b/include/linux/dmi.h
index b2cd2071d432..38dc403be70b 100644
--- a/include/linux/dmi.h
+++ b/include/linux/dmi.h
@@ -27,7 +27,8 @@ enum dmi_device_type {
27 DMI_DEV_TYPE_ETHERNET, 27 DMI_DEV_TYPE_ETHERNET,
28 DMI_DEV_TYPE_TOKENRING, 28 DMI_DEV_TYPE_TOKENRING,
29 DMI_DEV_TYPE_SOUND, 29 DMI_DEV_TYPE_SOUND,
30 DMI_DEV_TYPE_IPMI = -1 30 DMI_DEV_TYPE_IPMI = -1,
31 DMI_DEV_TYPE_OEM_STRING = -2
31}; 32};
32 33
33struct dmi_header { 34struct dmi_header {