iio: Add channel for Position Relative

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>
This commit is contained in:
Eugen Hristev 2018-05-22 10:52:32 +03:00 committed by Jonathan Cameron
parent d22cd4dd66
commit 3055a6cfa0
4 changed files with 16 additions and 0 deletions

View File

@ -197,6 +197,18 @@ Description:
Angle of rotation. Units after application of scale and offset Angle of rotation. Units after application of scale and offset
are radians. 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_x_raw
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_y_raw
What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw What: /sys/bus/iio/devices/iio:deviceX/in_anglvel_z_raw

View File

@ -85,6 +85,7 @@ static const char * const iio_chan_type_name_spec[] = {
[IIO_COUNT] = "count", [IIO_COUNT] = "count",
[IIO_INDEX] = "index", [IIO_INDEX] = "index",
[IIO_GRAVITY] = "gravity", [IIO_GRAVITY] = "gravity",
[IIO_POSITIONRELATIVE] = "positionrelative",
}; };
static const char * const iio_modifier_names[] = { static const char * const iio_modifier_names[] = {

View File

@ -44,6 +44,7 @@ enum iio_chan_type {
IIO_COUNT, IIO_COUNT,
IIO_INDEX, IIO_INDEX,
IIO_GRAVITY, IIO_GRAVITY,
IIO_POSITIONRELATIVE,
}; };
enum iio_modifier { enum iio_modifier {

View File

@ -58,6 +58,7 @@ static const char * const iio_chan_type_name_spec[] = {
[IIO_PH] = "ph", [IIO_PH] = "ph",
[IIO_UVINDEX] = "uvindex", [IIO_UVINDEX] = "uvindex",
[IIO_GRAVITY] = "gravity", [IIO_GRAVITY] = "gravity",
[IIO_POSITIONRELATIVE] = "positionrelative",
}; };
static const char * const iio_ev_type_text[] = { 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_PH:
case IIO_UVINDEX: case IIO_UVINDEX:
case IIO_GRAVITY: case IIO_GRAVITY:
case IIO_POSITIONRELATIVE:
break; break;
default: default:
return false; return false;