Input: exc3000 - add type sysfs attribute
authorLucas Stach <l.stach@pengutronix.de>
Mon, 8 Mar 2021 05:40:37 +0000 (21:40 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 8 Mar 2021 05:56:50 +0000 (21:56 -0800)
Add a sysfs attribute to query the type of the touchscreen device.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Link: https://lore.kernel.org/r/20210125182527.1225245-5-l.stach@pengutronix.de
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Documentation/ABI/testing/sysfs-driver-input-exc3000
drivers/input/touchscreen/exc3000.c

index cd7c578..704434b 100644 (file)
@@ -15,3 +15,12 @@ Description:    Reports the model identification provided by the touchscreen, fo
                Access: Read
 
                Valid values: Represented as string
+
+What:          /sys/bus/i2c/devices/xxx/type
+Date:          Jan 2021
+Contact:       linux-input@vger.kernel.org
+Description:   Reports the type identification provided by the touchscreen, for example "PCAP82H80 Series"
+
+               Access: Read
+
+               Valid values: Represented as string
index 66682a0..cbe0dd4 100644 (file)
@@ -301,9 +301,26 @@ static ssize_t model_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(model);
 
+static ssize_t type_show(struct device *dev,
+                         struct device_attribute *attr, char *buf)
+{
+       struct i2c_client *client = to_i2c_client(dev);
+       struct exc3000_data *data = i2c_get_clientdata(client);
+       u8 response[EXC3000_LEN_FRAME];
+       int ret;
+
+       ret = exc3000_vendor_data_request(data, (u8[]){'F'}, 1, response, 1);
+       if (ret < 0)
+               return ret;
+
+       return sprintf(buf, "%s\n", &response[1]);
+}
+static DEVICE_ATTR_RO(type);
+
 static struct attribute *sysfs_attrs[] = {
        &dev_attr_fw_version.attr,
        &dev_attr_model.attr,
+       &dev_attr_type.attr,
        NULL
 };