aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2016-04-29 13:33:23 -0400
committerDan Williams <dan.j.williams@intel.com>2016-04-29 19:28:07 -0400
commit6ca7208569550de43d64db6cf873706c371284a5 (patch)
tree352bbb1f74901711e9bf06452bda438bc381809e
parent30ec5fd464d51876247302da276db082e5675c35 (diff)
nfit: export subsystem ids as attributes
Similar to pci-sysfs export the subsystem information available in the NFIT. ACPI 6.1 clarifies that this data is copied as an array of bytes from the DIMM SPD data. Reported-by: Ryon Jensen <ryon.jensen@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r--drivers/acpi/nfit.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c
index 5a7199db2e06..0a1ba3d2e39a 100644
--- a/drivers/acpi/nfit.c
+++ b/drivers/acpi/nfit.c
@@ -847,6 +847,34 @@ static ssize_t format_show(struct device *dev,
847} 847}
848static DEVICE_ATTR_RO(format); 848static DEVICE_ATTR_RO(format);
849 849
850static ssize_t subsystem_vendor_show(struct device *dev,
851 struct device_attribute *attr, char *buf)
852{
853 struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
854
855 return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->subsystem_vendor_id));
856}
857static DEVICE_ATTR_RO(subsystem_vendor);
858
859static ssize_t subsystem_rev_id_show(struct device *dev,
860 struct device_attribute *attr, char *buf)
861{
862 struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
863
864 return sprintf(buf, "0x%04x\n",
865 be16_to_cpu(dcr->subsystem_revision_id));
866}
867static DEVICE_ATTR_RO(subsystem_rev_id);
868
869static ssize_t subsystem_device_show(struct device *dev,
870 struct device_attribute *attr, char *buf)
871{
872 struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
873
874 return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->subsystem_device_id));
875}
876static DEVICE_ATTR_RO(subsystem_device);
877
850static ssize_t serial_show(struct device *dev, 878static ssize_t serial_show(struct device *dev,
851 struct device_attribute *attr, char *buf) 879 struct device_attribute *attr, char *buf)
852{ 880{
@@ -893,9 +921,12 @@ static struct attribute *acpi_nfit_dimm_attributes[] = {
893 &dev_attr_phys_id.attr, 921 &dev_attr_phys_id.attr,
894 &dev_attr_vendor.attr, 922 &dev_attr_vendor.attr,
895 &dev_attr_device.attr, 923 &dev_attr_device.attr,
924 &dev_attr_rev_id.attr,
925 &dev_attr_subsystem_vendor.attr,
926 &dev_attr_subsystem_device.attr,
927 &dev_attr_subsystem_rev_id.attr,
896 &dev_attr_format.attr, 928 &dev_attr_format.attr,
897 &dev_attr_serial.attr, 929 &dev_attr_serial.attr,
898 &dev_attr_rev_id.attr,
899 &dev_attr_flags.attr, 930 &dev_attr_flags.attr,
900 &dev_attr_id.attr, 931 &dev_attr_id.attr,
901 NULL, 932 NULL,