]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Input: ads7846 - don't check penirq immediately for 7845
authorLuca Ellero <l.ellero@asem.it>
Thu, 26 Jan 2023 10:52:27 +0000 (11:52 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 1 Mar 2024 12:21:51 +0000 (13:21 +0100)
[ Upstream commit fa9f4275b20ec7b2a8fb05c66362d10b36f9efec ]

To discard false readings, one should use "ti,penirq-recheck-delay-usecs".
Checking get_pendown_state() at the beginning, most of the time fails
causing malfunctioning.

Fixes: ffa458c1bd9b ("spi: ads7846 driver")
Signed-off-by: Luca Ellero <l.ellero@asem.it>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230126105227.47648-4-l.ellero@asem.it
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/input/touchscreen/ads7846.c

index f416a4bcd72bfae4b0c8fc7fe35afebc308c45c8..1db61185f7bec1a7dad705b0c75928e717fb3f27 100644 (file)
@@ -851,14 +851,8 @@ static void ads7846_report_state(struct ads7846 *ts)
        if (x == MAX_12BIT)
                x = 0;
 
-       if (ts->model == 7843) {
+       if (ts->model == 7843 || ts->model == 7845) {
                Rt = ts->pressure_max / 2;
-       } else if (ts->model == 7845) {
-               if (get_pendown_state(ts))
-                       Rt = ts->pressure_max / 2;
-               else
-                       Rt = 0;
-               dev_vdbg(&ts->spi->dev, "x/y: %d/%d, PD %d\n", x, y, Rt);
        } else if (likely(x && z1)) {
                /* compute touch pressure resistance using equation #2 */
                Rt = z2;