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_version, 0444, DMI_BIOS_VERSION);
|
||||||
DEFINE_DMI_ATTR_WITH_SHOW(bios_date, 0444, DMI_BIOS_DATE);
|
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(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_name, 0444, DMI_PRODUCT_NAME);
|
||||||
DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
|
DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
|
||||||
DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);
|
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 },
|
{ "bvn", DMI_BIOS_VENDOR },
|
||||||
{ "bvr", DMI_BIOS_VERSION },
|
{ "bvr", DMI_BIOS_VERSION },
|
||||||
{ "bd", DMI_BIOS_DATE },
|
{ "bd", DMI_BIOS_DATE },
|
||||||
|
{ "br", DMI_BIOS_RELEASE },
|
||||||
|
{ "efr", DMI_EC_FIRMWARE_RELEASE },
|
||||||
{ "svn", DMI_SYS_VENDOR },
|
{ "svn", DMI_SYS_VENDOR },
|
||||||
{ "pn", DMI_PRODUCT_NAME },
|
{ "pn", DMI_PRODUCT_NAME },
|
||||||
{ "pvr", DMI_PRODUCT_VERSION },
|
{ "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_vendor, DMI_BIOS_VENDOR);
|
||||||
ADD_DMI_ATTR(bios_version, DMI_BIOS_VERSION);
|
ADD_DMI_ATTR(bios_version, DMI_BIOS_VERSION);
|
||||||
ADD_DMI_ATTR(bios_date, DMI_BIOS_DATE);
|
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(sys_vendor, DMI_SYS_VENDOR);
|
||||||
ADD_DMI_ATTR(product_name, DMI_PRODUCT_NAME);
|
ADD_DMI_ATTR(product_name, DMI_PRODUCT_NAME);
|
||||||
ADD_DMI_ATTR(product_version, DMI_PRODUCT_VERSION);
|
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;
|
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,
|
static void __init dmi_save_uuid(const struct dmi_header *dm, int slot,
|
||||||
int index)
|
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_VENDOR, 4);
|
||||||
dmi_save_ident(dm, DMI_BIOS_VERSION, 5);
|
dmi_save_ident(dm, DMI_BIOS_VERSION, 5);
|
||||||
dmi_save_ident(dm, DMI_BIOS_DATE, 8);
|
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;
|
break;
|
||||||
case 1: /* System Information */
|
case 1: /* System Information */
|
||||||
dmi_save_ident(dm, DMI_SYS_VENDOR, 4);
|
dmi_save_ident(dm, DMI_SYS_VENDOR, 4);
|
||||||
|
|
|
@ -532,6 +532,8 @@ enum dmi_field {
|
||||||
DMI_BIOS_VENDOR,
|
DMI_BIOS_VENDOR,
|
||||||
DMI_BIOS_VERSION,
|
DMI_BIOS_VERSION,
|
||||||
DMI_BIOS_DATE,
|
DMI_BIOS_DATE,
|
||||||
|
DMI_BIOS_RELEASE,
|
||||||
|
DMI_EC_FIRMWARE_RELEASE,
|
||||||
DMI_SYS_VENDOR,
|
DMI_SYS_VENDOR,
|
||||||
DMI_PRODUCT_NAME,
|
DMI_PRODUCT_NAME,
|
||||||
DMI_PRODUCT_VERSION,
|
DMI_PRODUCT_VERSION,
|
||||||
|
|
|
@ -954,6 +954,8 @@ static const struct dmifield {
|
||||||
{ "bvn", DMI_BIOS_VENDOR },
|
{ "bvn", DMI_BIOS_VENDOR },
|
||||||
{ "bvr", DMI_BIOS_VERSION },
|
{ "bvr", DMI_BIOS_VERSION },
|
||||||
{ "bd", DMI_BIOS_DATE },
|
{ "bd", DMI_BIOS_DATE },
|
||||||
|
{ "br", DMI_BIOS_RELEASE },
|
||||||
|
{ "efr", DMI_EC_FIRMWARE_RELEASE },
|
||||||
{ "svn", DMI_SYS_VENDOR },
|
{ "svn", DMI_SYS_VENDOR },
|
||||||
{ "pn", DMI_PRODUCT_NAME },
|
{ "pn", DMI_PRODUCT_NAME },
|
||||||
{ "pvr", DMI_PRODUCT_VERSION },
|
{ "pvr", DMI_PRODUCT_VERSION },
|
||||||
|
|
Loading…
Reference in New Issue