Messages in this thread |  | | Date | Sat, 19 Nov 2016 10:12:29 -0800 | From | Dmitry Torokhov <> | Subject | Re: [PATCH v6 2/8] drivers:input:tsc2007: send pendown and penup only once like ads7846(+tsc2046) driver does |
| |
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 >
-- Dmitry
|  |