mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
Merge branch 'dmi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
Pull dmi update from Jean Delvare. * 'dmi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: firmware/dmi: Report DMI Bios & EC firmware release
This commit is contained in:
commit
e542e0dc3e
@ -42,6 +42,8 @@ DEFINE_DMI_ATTR_WITH_SHOW(bios_vendor, 0444, DMI_BIOS_VENDOR);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(bios_version, 0444, DMI_BIOS_VERSION);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(bios_date, 0444, DMI_BIOS_DATE);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(sys_vendor, 0444, DMI_SYS_VENDOR);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(bios_release, 0444, DMI_BIOS_RELEASE);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(ec_firmware_release, 0444, DMI_EC_FIRMWARE_RELEASE);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(product_name, 0444, DMI_PRODUCT_NAME);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
|
||||
DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);
|
||||
@ -78,6 +80,8 @@ static ssize_t get_modalias(char *buffer, size_t buffer_size)
|
||||
{ "bvn", DMI_BIOS_VENDOR },
|
||||
{ "bvr", DMI_BIOS_VERSION },
|
||||
{ "bd", DMI_BIOS_DATE },
|
||||
{ "br", DMI_BIOS_RELEASE },
|
||||
{ "efr", DMI_EC_FIRMWARE_RELEASE },
|
||||
{ "svn", DMI_SYS_VENDOR },
|
||||
{ "pn", DMI_PRODUCT_NAME },
|
||||
{ "pvr", DMI_PRODUCT_VERSION },
|
||||
@ -187,6 +191,8 @@ static void __init dmi_id_init_attr_table(void)
|
||||
ADD_DMI_ATTR(bios_vendor, DMI_BIOS_VENDOR);
|
||||
ADD_DMI_ATTR(bios_version, DMI_BIOS_VERSION);
|
||||
ADD_DMI_ATTR(bios_date, DMI_BIOS_DATE);
|
||||
ADD_DMI_ATTR(bios_release, DMI_BIOS_RELEASE);
|
||||
ADD_DMI_ATTR(ec_firmware_release, DMI_EC_FIRMWARE_RELEASE);
|
||||
ADD_DMI_ATTR(sys_vendor, DMI_SYS_VENDOR);
|
||||
ADD_DMI_ATTR(product_name, DMI_PRODUCT_NAME);
|
||||
ADD_DMI_ATTR(product_version, DMI_PRODUCT_VERSION);
|
||||
|
@ -186,6 +186,34 @@ static void __init dmi_save_ident(const struct dmi_header *dm, int slot,
|
||||
dmi_ident[slot] = p;
|
||||
}
|
||||
|
||||
static void __init dmi_save_release(const struct dmi_header *dm, int slot,
|
||||
int index)
|
||||
{
|
||||
const u8 *minor, *major;
|
||||
char *s;
|
||||
|
||||
/* If the table doesn't have the field, let's return */
|
||||
if (dmi_ident[slot] || dm->length < index)
|
||||
return;
|
||||
|
||||
minor = (u8 *) dm + index;
|
||||
major = (u8 *) dm + index - 1;
|
||||
|
||||
/* As per the spec, if the system doesn't support this field,
|
||||
* the value is FF
|
||||
*/
|
||||
if (*major == 0xFF && *minor == 0xFF)
|
||||
return;
|
||||
|
||||
s = dmi_alloc(8);
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
sprintf(s, "%u.%u", *major, *minor);
|
||||
|
||||
dmi_ident[slot] = s;
|
||||
}
|
||||
|
||||
static void __init dmi_save_uuid(const struct dmi_header *dm, int slot,
|
||||
int index)
|
||||
{
|
||||
@ -444,6 +472,8 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy)
|
||||
dmi_save_ident(dm, DMI_BIOS_VENDOR, 4);
|
||||
dmi_save_ident(dm, DMI_BIOS_VERSION, 5);
|
||||
dmi_save_ident(dm, DMI_BIOS_DATE, 8);
|
||||
dmi_save_release(dm, DMI_BIOS_RELEASE, 21);
|
||||
dmi_save_release(dm, DMI_EC_FIRMWARE_RELEASE, 23);
|
||||
break;
|
||||
case 1: /* System Information */
|
||||
dmi_save_ident(dm, DMI_SYS_VENDOR, 4);
|
||||
|
@ -532,6 +532,8 @@ enum dmi_field {
|
||||
DMI_BIOS_VENDOR,
|
||||
DMI_BIOS_VERSION,
|
||||
DMI_BIOS_DATE,
|
||||
DMI_BIOS_RELEASE,
|
||||
DMI_EC_FIRMWARE_RELEASE,
|
||||
DMI_SYS_VENDOR,
|
||||
DMI_PRODUCT_NAME,
|
||||
DMI_PRODUCT_VERSION,
|
||||
|
@ -954,6 +954,8 @@ static const struct dmifield {
|
||||
{ "bvn", DMI_BIOS_VENDOR },
|
||||
{ "bvr", DMI_BIOS_VERSION },
|
||||
{ "bd", DMI_BIOS_DATE },
|
||||
{ "br", DMI_BIOS_RELEASE },
|
||||
{ "efr", DMI_EC_FIRMWARE_RELEASE },
|
||||
{ "svn", DMI_SYS_VENDOR },
|
||||
{ "pn", DMI_PRODUCT_NAME },
|
||||
{ "pvr", DMI_PRODUCT_VERSION },
|
||||
|
Loading…
Reference in New Issue
Block a user