iio: Add channel for Position Relative
authorEugen Hristev <eugen.hristev@microchip.com>
Tue, 22 May 2018 07:52:32 +0000 (10:52 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 10 Jun 2018 10:55:15 +0000 (11:55 +0100)
Add new channel type for relative position on a pad.

These type of analog sensor offers the position of a pen
on a touchpad, and is represented as a voltage, which can be
converted to a position on X and Y axis on the pad.
The channel will hand the relative position on the pad in both directions.

The channel can then be consumed by a touchscreen driver or
read as-is for a raw indication of the touchpen on a touchpad.

Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Documentation/ABI/testing/sysfs-bus-iio
drivers/iio/industrialio-core.c
include/uapi/linux/iio/types.h
tools/iio/iio_event_monitor.c

index 731146c3b1384cc348e0a2289aaa9d2967ead5c1..c7353030670a7ab65541cfb93855139b58224ad7 100644 (file)
@@ -197,6 +197,18 @@ Description:
                Angle of rotation. Units after application of scale and offset
                are radians.
 
+What:          /sys/bus/iio/devices/iio:deviceX/in_positionrelative_x_raw
+What:          /sys/bus/iio/devices/iio:deviceX/in_positionrelative_y_raw
+KernelVersion: 4.18
+Contact:       linux-iio@vger.kernel.org
+Description:
+               Relative position in direction x or y on a pad (may be
+               arbitrarily assigned but should match other such assignments on
+               device).
+               Units after application of scale and offset are milli percents
+               from the pad's size in both directions. Should be calibrated by
+               the consumer.
+
 What:          /sys/bus/iio/devices/iio:deviceX/in_anglvel_x_raw
 What:          /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw
 What:          /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw
index 19bdf3d2962ab9bcc1f8b86bc3d2bb5db5587215..14bf3d243cb128dc2535bfb3f091ba2733a2edfc 100644 (file)
@@ -85,6 +85,7 @@ static const char * const iio_chan_type_name_spec[] = {
        [IIO_COUNT] = "count",
        [IIO_INDEX] = "index",
        [IIO_GRAVITY]  = "gravity",
+       [IIO_POSITIONRELATIVE]  = "positionrelative",
 };
 
 static const char * const iio_modifier_names[] = {
index 4213cdf88e3cd79cc9005684dbc35c62bfb3df68..033c7d28924eeea5659ab41490224c24745cf0f9 100644 (file)
@@ -44,6 +44,7 @@ enum iio_chan_type {
        IIO_COUNT,
        IIO_INDEX,
        IIO_GRAVITY,
+       IIO_POSITIONRELATIVE,
 };
 
 enum iio_modifier {
index b61245e1181d5ffc228e080bb8382b1a95851aae..148f69dfae756f21efb38fca81843d511577067f 100644 (file)
@@ -58,6 +58,7 @@ static const char * const iio_chan_type_name_spec[] = {
        [IIO_PH] = "ph",
        [IIO_UVINDEX] = "uvindex",
        [IIO_GRAVITY] = "gravity",
+       [IIO_POSITIONRELATIVE] = "positionrelative",
 };
 
 static const char * const iio_ev_type_text[] = {
@@ -151,6 +152,7 @@ static bool event_is_known(struct iio_event_data *event)
        case IIO_PH:
        case IIO_UVINDEX:
        case IIO_GRAVITY:
+       case IIO_POSITIONRELATIVE:
                break;
        default:
                return false;