Skip to content

Commit

Permalink
Input: s3c24xx_ts - report touch only when stylus is down
Browse files Browse the repository at this point in the history
Currently driver reports touches when it gets (1 << ts.shift) samples,
even if stylus is up, which is incorrect. We should only report coordinates
and touch condition when stylus is down.

Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Vasily Khoruzhick authored and Dmitry Torokhov committed Feb 20, 2010
1 parent 2f09586 commit 23c239b
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions drivers/input/touchscreen/s3c2410_ts.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,27 +128,29 @@ static void touch_timer_fire(unsigned long data)

down = get_down(data0, data1);

if (ts.count == (1 << ts.shift)) {
ts.xp >>= ts.shift;
ts.yp >>= ts.shift;
if (down) {
if (ts.count == (1 << ts.shift)) {
ts.xp >>= ts.shift;
ts.yp >>= ts.shift;

dev_dbg(ts.dev, "%s: X=%lu, Y=%lu, count=%d\n",
__func__, ts.xp, ts.yp, ts.count);
dev_dbg(ts.dev, "%s: X=%lu, Y=%lu, count=%d\n",
__func__, ts.xp, ts.yp, ts.count);

input_report_abs(ts.input, ABS_X, ts.xp);
input_report_abs(ts.input, ABS_Y, ts.yp);
input_report_abs(ts.input, ABS_X, ts.xp);
input_report_abs(ts.input, ABS_Y, ts.yp);

input_report_key(ts.input, BTN_TOUCH, 1);
input_sync(ts.input);
input_report_key(ts.input, BTN_TOUCH, 1);
input_sync(ts.input);

ts.xp = 0;
ts.yp = 0;
ts.count = 0;
}
ts.xp = 0;
ts.yp = 0;
ts.count = 0;
}

if (down) {
s3c_adc_start(ts.client, 0, 1 << ts.shift);
} else {
ts.xp = 0;
ts.yp = 0;
ts.count = 0;

input_report_key(ts.input, BTN_TOUCH, 0);
Expand Down

0 comments on commit 23c239b

Please sign in to comment.