Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3055a6cf authored by Eugen Hristev's avatar Eugen Hristev Committed by Jonathan Cameron
Browse files

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: default avatarEugen Hristev <eugen.hristev@microchip.com>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent d22cd4dd
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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[] = {
+1 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ enum iio_chan_type {
	IIO_COUNT,
	IIO_INDEX,
	IIO_GRAVITY,
	IIO_POSITIONRELATIVE,
};

enum iio_modifier {
+2 −0
Original line number Diff line number Diff line
@@ -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;