Message ID | 20201201123026.1416743-1-linus.walleij@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v3] Input: atmel_mxt_ts - Fix lost interrupts | expand |
On Tue, Dec 01, 2020 at 01:30:26PM +0100, Linus Walleij wrote: > 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. > > Cc: Andre Müller <andre.muller@web.de> > Cc: Nick Dyer <nick.dyer@itdev.co.uk> > Cc: Jiada Wang <jiada_wang@mentor.com> > Cc: stable@vger.kernel.org > 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> Applied, thank you. -- Dmitry
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index e34984388791..109655547477 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -2185,11 +2185,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;