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 <h...@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

Reply via email to