From d38127f863900ee426a8a737d6b5e4d26b2f89e9 Mon Sep 17 00:00:00 2001 From: Ritesh Kumar Date: Wed, 24 Mar 2021 13:34:08 +0530 Subject: [PATCH] input: touchscreen: focaltech: Use disable/enable irq wake in LA to LE Touch uses gpio as irq in LA. As per latest change from pinctrl, wakeup bit is disabled/enabled when disable_irq/enable_irq is called. During transtion from LA to LE, disable_irq is called leading to wakeup bit getting disabled and in LE Touch interrupts does not come. So, use disable_irq_wake to disable Touch interrupts while transition from LA to LE and use enable_irq_wake to enable back Touch interrupts while transition from LE to LA. Change-Id: I288bfbd26be9ff1da1b7e14104f98338eb8d8715 Signed-off-by: Ritesh Kumar --- .../touchscreen/focaltech_touch/focaltech_core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/input/touchscreen/focaltech_touch/focaltech_core.c b/drivers/input/touchscreen/focaltech_touch/focaltech_core.c index e2b8859cee95..9eefb3e783f4 100644 --- a/drivers/input/touchscreen/focaltech_touch/focaltech_core.c +++ b/drivers/input/touchscreen/focaltech_touch/focaltech_core.c @@ -1338,7 +1338,14 @@ void fts_irq_disable(void) spin_lock_irqsave(&fts_data->irq_lock, irqflags); if (!fts_data->irq_disabled) { +#ifdef CONFIG_FTS_TRUSTED_TOUCH + if (atomic_read(&fts_data->trusted_touch_underway)) + disable_irq_wake(fts_data->irq); + else + disable_irq_nosync(fts_data->irq); +#else disable_irq_nosync(fts_data->irq); +#endif fts_data->irq_disabled = true; } @@ -1354,7 +1361,14 @@ void fts_irq_enable(void) spin_lock_irqsave(&fts_data->irq_lock, irqflags); if (fts_data->irq_disabled) { +#ifdef CONFIG_FTS_TRUSTED_TOUCH + if (atomic_read(&fts_data->trusted_touch_underway)) + enable_irq_wake(fts_data->irq); + else + enable_irq(fts_data->irq); +#else enable_irq(fts_data->irq); +#endif fts_data->irq_disabled = false; }