Merge branch 'for-4.7/acpi6.1' into libnvdimm-for-next
authorDan Williams <dan.j.williams@intel.com>
Wed, 18 May 2016 17:07:19 +0000 (10:07 -0700)
committerDan Williams <dan.j.williams@intel.com>
Wed, 18 May 2016 17:07:19 +0000 (10:07 -0700)
1  2 
drivers/acpi/nfit.c
drivers/acpi/nfit.h

@@@ -883,76 -838,43 +883,105 @@@ static ssize_t device_show(struct devic
  }
  static DEVICE_ATTR_RO(device);
  
 -static ssize_t format_show(struct device *dev,
 -              struct device_attribute *attr, char *buf)
 -{
 -      struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
 -
 -      return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->code));
 -}
 -static DEVICE_ATTR_RO(format);
 -
+ static ssize_t subsystem_vendor_show(struct device *dev,
+               struct device_attribute *attr, char *buf)
+ {
+       struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
+       return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->subsystem_vendor_id));
+ }
+ static DEVICE_ATTR_RO(subsystem_vendor);
+ static ssize_t subsystem_rev_id_show(struct device *dev,
+               struct device_attribute *attr, char *buf)
+ {
+       struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
+       return sprintf(buf, "0x%04x\n",
+                       be16_to_cpu(dcr->subsystem_revision_id));
+ }
+ static DEVICE_ATTR_RO(subsystem_rev_id);
+ static ssize_t subsystem_device_show(struct device *dev,
+               struct device_attribute *attr, char *buf)
+ {
+       struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
+       return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->subsystem_device_id));
+ }
+ static DEVICE_ATTR_RO(subsystem_device);
 +static int num_nvdimm_formats(struct nvdimm *nvdimm)
 +{
 +      struct nfit_mem *nfit_mem = nvdimm_provider_data(nvdimm);
 +      int formats = 0;
 +
 +      if (nfit_mem->memdev_pmem)
 +              formats++;
 +      if (nfit_mem->memdev_bdw)
 +              formats++;
 +      return formats;
 +}
 +
 +static ssize_t format_show(struct device *dev,
 +              struct device_attribute *attr, char *buf)
 +{
 +      struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
 +
-       return sprintf(buf, "%#x\n", dcr->code);
++      return sprintf(buf, "0x%04x\n", be16_to_cpu(dcr->code));
 +}
 +static DEVICE_ATTR_RO(format);
 +
 +static ssize_t format1_show(struct device *dev,
 +              struct device_attribute *attr, char *buf)
 +{
 +      u32 handle;
 +      ssize_t rc = -ENXIO;
 +      struct nfit_mem *nfit_mem;
 +      struct nfit_memdev *nfit_memdev;
 +      struct acpi_nfit_desc *acpi_desc;
 +      struct nvdimm *nvdimm = to_nvdimm(dev);
 +      struct acpi_nfit_control_region *dcr = to_nfit_dcr(dev);
 +
 +      nfit_mem = nvdimm_provider_data(nvdimm);
 +      acpi_desc = nfit_mem->acpi_desc;
 +      handle = to_nfit_memdev(dev)->device_handle;
 +
 +      /* assumes DIMMs have at most 2 published interface codes */
 +      mutex_lock(&acpi_desc->init_mutex);
 +      list_for_each_entry(nfit_memdev, &acpi_desc->memdevs, list) {
 +              struct acpi_nfit_memory_map *memdev = nfit_memdev->memdev;
 +              struct nfit_dcr *nfit_dcr;
 +
 +              if (memdev->device_handle != handle)
 +                      continue;
 +
 +              list_for_each_entry(nfit_dcr, &acpi_desc->dcrs, list) {
 +                      if (nfit_dcr->dcr->region_index != memdev->region_index)
 +                              continue;
 +                      if (nfit_dcr->dcr->code == dcr->code)
 +                              continue;
-                       rc = sprintf(buf, "%#x\n", nfit_dcr->dcr->code);
++                      rc = sprintf(buf, "%#x\n",
++                                      be16_to_cpu(nfit_dcr->dcr->code));
 +                      break;
 +              }
 +              if (rc != ENXIO)
 +                      break;
 +      }
 +      mutex_unlock(&acpi_desc->init_mutex);
 +      return rc;
 +}
 +static DEVICE_ATTR_RO(format1);
 +
 +static ssize_t formats_show(struct device *dev,
 +              struct device_attribute *attr, char *buf)
 +{
 +      struct nvdimm *nvdimm = to_nvdimm(dev);
 +
 +      return sprintf(buf, "%d\n", num_nvdimm_formats(nvdimm));
 +}
 +static DEVICE_ATTR_RO(formats);
 +
  static ssize_t serial_show(struct device *dev,
                struct device_attribute *attr, char *buf)
  {
@@@ -1005,14 -921,14 +1052,18 @@@ static struct attribute *acpi_nfit_dimm
        &dev_attr_phys_id.attr,
        &dev_attr_vendor.attr,
        &dev_attr_device.attr,
+       &dev_attr_rev_id.attr,
+       &dev_attr_subsystem_vendor.attr,
+       &dev_attr_subsystem_device.attr,
+       &dev_attr_subsystem_rev_id.attr,
        &dev_attr_format.attr,
 +      &dev_attr_formats.attr,
 +      &dev_attr_format1.attr,
        &dev_attr_serial.attr,
-       &dev_attr_rev_id.attr,
        &dev_attr_flags.attr,
+       &dev_attr_id.attr,
 +      &dev_attr_family.attr,
 +      &dev_attr_dsm_mask.attr,
        NULL,
  };
  
Simple merge