diff options
author | Dan Williams <dan.j.williams@intel.com> | 2016-04-29 13:33:23 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2016-04-29 19:28:07 -0400 |
commit | 6ca7208569550de43d64db6cf873706c371284a5 (patch) | |
tree | 352bbb1f74901711e9bf06452bda438bc381809e | |
parent | 30ec5fd464d51876247302da276db082e5675c35 (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.c | 33 |
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 | } |
848 | static DEVICE_ATTR_RO(format); | 848 | static DEVICE_ATTR_RO(format); |
849 | 849 | ||
850 | static 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 | } | ||
857 | static DEVICE_ATTR_RO(subsystem_vendor); | ||
858 | |||
859 | static 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 | } | ||
867 | static DEVICE_ATTR_RO(subsystem_rev_id); | ||
868 | |||
869 | static 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 | } | ||
876 | static DEVICE_ATTR_RO(subsystem_device); | ||
877 | |||
850 | static ssize_t serial_show(struct device *dev, | 878 | static 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, |