dmaengine: idxd: export hw version through sysfs
authorDave Jiang <dave.jiang@intel.com>
Wed, 15 Apr 2020 16:13:12 +0000 (09:13 -0700)
committerVinod Koul <vkoul@kernel.org>
Wed, 15 Apr 2020 16:24:00 +0000 (21:54 +0530)
Some user apps would like to know the hardware version in order to
determine the variation of the hardware. Export the hardware version number
to userspace via sysfs.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/158696714008.39484.13401950732606906479.stgit@djiang5-desk3.ch.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Documentation/ABI/stable/sysfs-driver-dma-idxd
drivers/dma/idxd/sysfs.c

index f4be46cc6cb60e16570b7a3694743ddb9037e879..b5bebf642db697de112be8a4bd3d21b49ab9afb3 100644 (file)
@@ -1,3 +1,9 @@
+What:          sys/bus/dsa/devices/dsa<m>/version
+Date:          Apr 15, 2020
+KernelVersion: 5.8.0
+Contact:       dmaengine@vger.kernel.org
+Description:   The hardware version number.
+
 What:           sys/bus/dsa/devices/dsa<m>/cdev_major
 Date:           Oct 25, 2019
 KernelVersion:         5.6.0
index 3999827970abaedac05beacb4060431eec7d5840..052dae5d6dddbd6ff25d6a6b151b462b23aee91f 100644 (file)
@@ -1092,6 +1092,16 @@ static const struct attribute_group *idxd_wq_attribute_groups[] = {
 };
 
 /* IDXD device attribs */
+static ssize_t version_show(struct device *dev, struct device_attribute *attr,
+                           char *buf)
+{
+       struct idxd_device *idxd =
+               container_of(dev, struct idxd_device, conf_dev);
+
+       return sprintf(buf, "%#x\n", idxd->hw.version);
+}
+static DEVICE_ATTR_RO(version);
+
 static ssize_t max_work_queues_size_show(struct device *dev,
                                         struct device_attribute *attr,
                                         char *buf)
@@ -1313,6 +1323,7 @@ static ssize_t cdev_major_show(struct device *dev,
 static DEVICE_ATTR_RO(cdev_major);
 
 static struct attribute *idxd_device_attributes[] = {
+       &dev_attr_version.attr,
        &dev_attr_max_groups.attr,
        &dev_attr_max_work_queues.attr,
        &dev_attr_max_work_queues_size.attr,