|
@@ -870,6 +870,24 @@ static ssize_t flags_show(struct device *dev,
|
|
|
}
|
|
|
static DEVICE_ATTR_RO(flags);
|
|
|
|
|
|
+static ssize_t id_show(struct device *dev,
|
|
|
+ struct device_attribute *attr, char *buf)
|
|
|
+{
|
|
|
+ struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
|
|
|
+
|
|
|
+ if (dcr->valid_fields & ACPI_NFIT_CONTROL_MFG_INFO_VALID)
|
|
|
+ return sprintf(buf, "%04x-%02x-%04x-%08x\n",
|
|
|
+ be16_to_cpu(dcr->vendor_id),
|
|
|
+ dcr->manufacturing_location,
|
|
|
+ be16_to_cpu(dcr->manufacturing_date),
|
|
|
+ be32_to_cpu(dcr->serial_number));
|
|
|
+ else
|
|
|
+ return sprintf(buf, "%04x-%08x\n",
|
|
|
+ be16_to_cpu(dcr->vendor_id),
|
|
|
+ be32_to_cpu(dcr->serial_number));
|
|
|
+}
|
|
|
+static DEVICE_ATTR_RO(id);
|
|
|
+
|
|
|
static struct attribute *acpi_nfit_dimm_attributes[] = {
|
|
|
&dev_attr_handle.attr,
|
|
|
&dev_attr_phys_id.attr,
|
|
@@ -879,6 +897,7 @@ static struct attribute *acpi_nfit_dimm_attributes[] = {
|
|
|
&dev_attr_serial.attr,
|
|
|
&dev_attr_rev_id.attr,
|
|
|
&dev_attr_flags.attr,
|
|
|
+ &dev_attr_id.attr,
|
|
|
NULL,
|
|
|
};
|
|
|
|