mei: bus: export client protocol version
authorTomas Winkler <tomas.winkler@intel.com>
Thu, 10 Sep 2015 07:18:00 +0000 (10:18 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Sep 2015 02:30:10 +0000 (19:30 -0700)
export me client protocol version to sysfs and uevent

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Documentation/ABI/testing/sysfs-bus-mei
drivers/misc/mei/bus.c
drivers/misc/mei/client.h

index 20e4d1638bac1f8d9ee9fa25343afbe52db9cea0..6bd45346ac7e4d20ffb445723fe94b5e32d98b3a 100644 (file)
@@ -19,3 +19,10 @@ KernelVersion:       4.2
 Contact:       Tomas Winkler <tomas.winkler@intel.com>
 Description:   Stores mei client device uuid
                Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+
+What:          /sys/bus/mei/devices/.../version
+Date:          Aug 2015
+KernelVersion: 4.3
+Contact:       Tomas Winkler <tomas.winkler@intel.com>
+Description:   Stores mei client protocol version
+               Format: %d
index e294f70741a0a8832aeb3d1692a2776f4e7050b8..d92017fa16307c43841f3d3e42e3e439ba93df39 100644 (file)
@@ -590,6 +590,19 @@ static ssize_t uuid_show(struct device *dev, struct device_attribute *a,
 }
 static DEVICE_ATTR_RO(uuid);
 
+static ssize_t version_show(struct device *dev, struct device_attribute *a,
+                            char *buf)
+{
+       struct mei_cl_device *cldev = to_mei_cl_device(dev);
+       u8 version = mei_me_cl_ver(cldev->me_cl);
+       size_t len;
+
+       len = snprintf(buf, PAGE_SIZE, "%02X", version);
+
+       return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len;
+}
+static DEVICE_ATTR_RO(version);
+
 static ssize_t modalias_show(struct device *dev, struct device_attribute *a,
                             char *buf)
 {
@@ -605,6 +618,7 @@ static DEVICE_ATTR_RO(modalias);
 static struct attribute *mei_cl_dev_attrs[] = {
        &dev_attr_name.attr,
        &dev_attr_uuid.attr,
+       &dev_attr_version.attr,
        &dev_attr_modalias.attr,
        NULL,
 };
@@ -622,6 +636,10 @@ static int mei_cl_device_uevent(struct device *dev, struct kobj_uevent_env *env)
 {
        struct mei_cl_device *cldev = to_mei_cl_device(dev);
        const uuid_le *uuid = mei_me_cl_uuid(cldev->me_cl);
+       u8 version = mei_me_cl_ver(cldev->me_cl);
+
+       if (add_uevent_var(env, "MEI_CL_VERSION=%d", version))
+               return -ENOMEM;
 
        if (add_uevent_var(env, "MEI_CL_UUID=%pUl", uuid))
                return -ENOMEM;
index 1c7cad07d7319e187a8c6784440cad897f28678f..04e1aa39243f79e69a76f1ef689bc5f34cb5c435 100644 (file)
@@ -68,6 +68,18 @@ static inline const uuid_le *mei_me_cl_uuid(const struct mei_me_client *me_cl)
        return &me_cl->props.protocol_name;
 }
 
+/**
+ * mei_me_cl_ver - return me client protocol version
+ *
+ * @me_cl: me client
+ *
+ * Return: me client protocol version
+ */
+static inline u8 mei_me_cl_ver(const struct mei_me_client *me_cl)
+{
+       return me_cl->props.protocol_version;
+}
+
 /*
  * MEI IO Functions
  */
This page took 0.028701 seconds and 5 git commands to generate.