diff options
-rw-r--r-- | drivers/firmware/dmi_scan.c | 23 | ||||
-rw-r--r-- | include/linux/dmi.h | 3 |
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 | |||
130 | static 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 | ||
33 | struct dmi_header { | 34 | struct dmi_header { |