Thread (10 messages) 10 messages, 4 authors, 2011-08-17

Re: [PATCH] Input: elantech - correct x, y value range for v2 hardware

flat view

From: Daniel Kurtz <hidden>
Date: 2011-08-15 05:26:19

Hi JJ,

On Mon, Aug 15, 2011 at 11:51 AM, JJ Ding [off-list ref] wrote:
x, y values are actually 12-bit long. Also update protocol document to reflect
the change.

Signed-off-by: JJ Ding <redacted>
Reviewed-by: Daniel Kurtz <redacted>
quoted hunk ↗ jump to hunk
---
Hello List,

We are working on adding support for newer elantech touchpad, which we will
submit shortly. Along the way I found this error in current code.
This is a simple patch to correct x, y value ranges in v2 hardware.
Please review, thank you.

 Documentation/input/elantech.txt |    8 ++++----
 drivers/input/mouse/elantech.c   |    8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/Documentation/input/elantech.txt b/Documentation/input/elantech.txt
index db798af..bce9941 100644
--- a/Documentation/input/elantech.txt
+++ b/Documentation/input/elantech.txt
@@ -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
diff --git a/drivers/input/mouse/elantech.c b/drivers/input/mouse/elantech.c
index 3250356..da161da 100644
--- a/drivers/input/mouse/elantech.c
+++ b/drivers/input/mouse/elantech.c
@@ -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);
--
1.7.4.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help