aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/dmi_scan.c23
1 files changed, 23 insertions, 0 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 }