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@xxxxxxxxxxxxx> > --- > 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 > -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html