Commit 23c239be authored by Vasily Khoruzhick's avatar Vasily Khoruzhick Committed by Dmitry Torokhov

Input: s3c24xx_ts - report touch only when stylus is down

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: default avatarVasily Khoruzhick <anarsoul@gmail.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 2f095865
...@@ -128,27 +128,29 @@ static void touch_timer_fire(unsigned long data) ...@@ -128,27 +128,29 @@ static void touch_timer_fire(unsigned long data)
down = get_down(data0, data1); down = get_down(data0, data1);
if (ts.count == (1 << ts.shift)) { if (down) {
ts.xp >>= ts.shift; if (ts.count == (1 << ts.shift)) {
ts.yp >>= ts.shift; ts.xp >>= ts.shift;
ts.yp >>= ts.shift;
dev_dbg(ts.dev, "%s: X=%lu, Y=%lu, count=%d\n", dev_dbg(ts.dev, "%s: X=%lu, Y=%lu, count=%d\n",
__func__, ts.xp, ts.yp, ts.count); __func__, ts.xp, ts.yp, ts.count);
input_report_abs(ts.input, ABS_X, ts.xp); input_report_abs(ts.input, ABS_X, ts.xp);
input_report_abs(ts.input, ABS_Y, ts.yp); input_report_abs(ts.input, ABS_Y, ts.yp);
input_report_key(ts.input, BTN_TOUCH, 1); input_report_key(ts.input, BTN_TOUCH, 1);
input_sync(ts.input); input_sync(ts.input);
ts.xp = 0; ts.xp = 0;
ts.yp = 0; ts.yp = 0;
ts.count = 0; ts.count = 0;
} }
if (down) {
s3c_adc_start(ts.client, 0, 1 << ts.shift); s3c_adc_start(ts.client, 0, 1 << ts.shift);
} else { } else {
ts.xp = 0;
ts.yp = 0;
ts.count = 0; ts.count = 0;
input_report_key(ts.input, BTN_TOUCH, 0); input_report_key(ts.input, BTN_TOUCH, 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment