Input: tsc2007 - debounce pressure measurement
authorThierry Reding <thierry.reding@avionic-design.de>
Tue, 17 May 2011 16:29:45 +0000 (09:29 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 17 May 2011 16:38:34 +0000 (09:38 -0700)
When the controller signals a pen-down event via the platform-specific
GPIO, while the sample values indicate an invalid measurement, the
measurement needs to be repeated.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/touchscreen/tsc2007.c

index 80467f262331e2c94ae9686f21e473b4d203f3f5..df4ae354969dc7751b39ff52a966b8bdb8f552eb 100644 (file)
@@ -156,6 +156,7 @@ static void tsc2007_work(struct work_struct *work)
 {
        struct tsc2007 *ts =
                container_of(to_delayed_work(work), struct tsc2007, work);
+       bool debounced = false;
        struct ts_event tc;
        u32 rt;
 
@@ -191,6 +192,7 @@ static void tsc2007_work(struct work_struct *work)
                 * repeat at least once more the measurement.
                 */
                dev_dbg(&ts->client->dev, "ignored pressure %d\n", rt);
+               debounced = true;
                goto out;
 
        }
@@ -225,7 +227,7 @@ static void tsc2007_work(struct work_struct *work)
        }
 
  out:
-       if (ts->pendown)
+       if (ts->pendown || debounced)
                schedule_delayed_work(&ts->work,
                                      msecs_to_jiffies(TS_POLL_PERIOD));
        else