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

Commit 11559619 authored by JJ Ding's avatar JJ Ding Committed by Dmitry Torokhov
Browse files

Input: elantech - correct x, y value range for v2 hardware



x, y values are actually 12-bit long. Also update protocol document to
reflect the change.

Signed-off-by: default avatarJJ Ding <jj_ding@emc.com.tw>
Acked-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
Acked-by: default avatarÉric Piel <eric.piel@tremplin-utc.net>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent b6b1e927
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -389,14 +389,14 @@ byte 0:
byte 1:

   bit   7   6   5   4   3   2   1   0
	 p7  p6  p5  p4  .  x10 x9  x8
	 p7  p6  p5  p4 x11 x10 x9  x8

byte 2:

   bit   7   6   5   4   3   2   1   0
	 x7  x6  x5  x4  x3  x2  x1  x0

         x10..x0 = absolute x value (horizontal)
         x11..x0 = absolute x value (horizontal)

byte 3:

@@ -420,7 +420,7 @@ byte 3:
byte 4:

   bit   7   6   5   4   3   2   1   0
        p3  p1  p2  p0   .   .  y9  y8
        p3  p1  p2  p0  y11 y10 y9  y8

	 p7..p0 = pressure (not EF113)

@@ -429,7 +429,7 @@ byte 5:
   bit   7   6   5   4   3   2   1   0
        y7  y6  y5  y4  y3  y2  y1  y0

         y9..y0 = absolute y value (vertical)
         y11..y0 = absolute y value (vertical)


4.2.2 Two finger touch
+4 −4
Original line number Diff line number Diff line
@@ -290,15 +290,15 @@ static void elantech_report_absolute_v2(struct psmouse *psmouse)
		/* pass through... */
	case 1:
		/*
		 * byte 1:  .   .   .   .   .  x10 x9  x8
		 * byte 1:  .   .   .   .  x11 x10 x9  x8
		 * byte 2: x7  x6  x5  x4  x4  x2  x1  x0
		 */
		x1 = ((packet[1] & 0x07) << 8) | packet[2];
		x1 = ((packet[1] & 0x0f) << 8) | packet[2];
		/*
		 * byte 4:  .   .   .   .   .   .  y9  y8
		 * byte 4:  .   .   .   .  y11 y10 y9  y8
		 * byte 5: y7  y6  y5  y4  y3  y2  y1  y0
		 */
		y1 = ETP_YMAX_V2 - (((packet[4] & 0x03) << 8) | packet[5]);
		y1 = ETP_YMAX_V2 - (((packet[4] & 0x0f) << 8) | packet[5]);

		input_report_abs(dev, ABS_X, x1);
		input_report_abs(dev, ABS_Y, y1);