On Thu, Oct 27, 2016 at 10:44:15AM +0200, H. Nikolaus Schaller wrote:
this should reduce unnecessary input events.
The duplicates will be filtered out by the input core anyway. I like to keep the drivers simple.
Thanks.
Signed-off-by: H. Nikolaus Schaller hns@goldelico.com
drivers/input/touchscreen/tsc2007.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/input/touchscreen/tsc2007.c b/drivers/input/touchscreen/tsc2007.c index c1d9593..e9d5086 100644 --- a/drivers/input/touchscreen/tsc2007.c +++ b/drivers/input/touchscreen/tsc2007.c @@ -94,6 +94,7 @@ struct tsc2007 {
wait_queue_head_t wait; bool stopped;
bool pendown;
int (*get_pendown_state)(struct device *); void (*clear_penirq)(void);
@@ -227,7 +228,11 @@ static irqreturn_t tsc2007_soft_irq(int irq, void *handle) sx, sy, rt);
/* report event */
input_report_key(input, BTN_TOUCH, 1);
if (!ts->pendown) {
input_report_key(input, BTN_TOUCH, 1);
ts->pendown = true;
}
touchscreen_report_pos(ts->input, &ts->prop, (unsigned int) sx, (unsigned int) sy,
@@ -250,9 +255,13 @@ static irqreturn_t tsc2007_soft_irq(int irq, void *handle)
dev_dbg(&ts->client->dev, "UP\n");
- input_report_key(input, BTN_TOUCH, 0);
- input_report_abs(input, ABS_PRESSURE, 0);
- input_sync(input);
if (ts->pendown) {
input_report_key(input, BTN_TOUCH, 0);
input_report_abs(input, ABS_PRESSURE, 0);
input_sync(input);
ts->pendown = false;
}
if (ts->clear_penirq) ts->clear_penirq();
-- 2.7.3