summaryrefslogtreecommitdiff
path: root/drivers/input
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/touchscreen/mxc_ts.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/input/touchscreen/mxc_ts.c b/drivers/input/touchscreen/mxc_ts.c
index b354d81c5465..d60cd51a535e 100644
--- a/drivers/input/touchscreen/mxc_ts.c
+++ b/drivers/input/touchscreen/mxc_ts.c
@@ -44,14 +44,17 @@ static u32 input_ts_installed;
static int ts_thread(void *arg)
{
t_touch_screen ts_sample;
- s32 wait = 0;
+ s32 wait = 0, wait2 = 0;
daemonize("mxc_ts");
while (input_ts_installed) {
try_to_freeze();
memset(&ts_sample, 0, sizeof(t_touch_screen));
- if (0 != pmic_adc_get_touch_sample(&ts_sample, !wait))
+
+ /* After 2 consecutive samples with the pen up, enable irq waiting */
+ if (0 != pmic_adc_get_touch_sample(&ts_sample, !(wait + wait2))) {
continue;
+ }
if (!(ts_sample.contact_resistance || wait))
continue;
@@ -60,7 +63,7 @@ static int ts_thread(void *arg)
input_report_abs(mxc_inputdev, ABS_PRESSURE,
ts_sample.contact_resistance);
input_sync(mxc_inputdev);
-
+ wait2 = wait;
wait = ts_sample.contact_resistance;
msleep(20);
}