ec1305c64f
- use gzip kernel compression - disable debug and tracing - disable exynos{3,5} [ci:skip-build]: already built successfully in CI
52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From 8c3b55a299c325830a987de21dab6a89ecb71164 Mon Sep 17 00:00:00 2001
|
|
From: Linus Walleij <linus.walleij@linaro.org>
|
|
Date: Tue, 1 Dec 2020 09:55:29 -0800
|
|
Subject: [PATCH] Input: atmel_mxt_ts - fix lost interrupts
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
After commit 74d905d2d38a devices requiring the workaround for edge
|
|
triggered interrupts stopped working.
|
|
|
|
The hardware needs the quirk to be used before even proceeding to
|
|
check if the quirk is needed because mxt_acquire_irq() is called
|
|
before mxt_check_retrigen() is called and at this point pending IRQs
|
|
need to be checked, and if the workaround is not active, all
|
|
interrupts will be lost from this point.
|
|
|
|
Solve this by switching the calls around.
|
|
|
|
Reported-by: Andre Müller <andre.muller@web.de>
|
|
Tested-by: Andre Müller <andre.muller@web.de>
|
|
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
|
Fixes: 74d905d2d38a ("Input: atmel_mxt_ts - only read messages in mxt_acquire_irq() when necessary")
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
Cc: stable@vger.kernel.org
|
|
Link: https://lore.kernel.org/r/20201201123026.1416743-1-linus.walleij@linaro.org
|
|
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
|
---
|
|
drivers/input/touchscreen/atmel_mxt_ts.c | 4 ++--
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
index 6b71b0aff115..99a33cd5e675 100644
|
|
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
|
|
@@ -2183,11 +2183,11 @@ static int mxt_initialize(struct mxt_data *data)
|
|
msleep(MXT_FW_RESET_TIME);
|
|
}
|
|
|
|
- error = mxt_acquire_irq(data);
|
|
+ error = mxt_check_retrigen(data);
|
|
if (error)
|
|
return error;
|
|
|
|
- error = mxt_check_retrigen(data);
|
|
+ error = mxt_acquire_irq(data);
|
|
if (error)
|
|
return error;
|
|
|
|
--
|
|
2.25.1
|
|
|