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 <riteshk@codeaurora.org>
This commit is contained in:
Ritesh Kumar 2021-03-24 13:34:08 +05:30
commit d38127f863

View file

@ -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;
}