use disable_irq_nosync in interrupt handler

When disable_irq is used in interrupt function, touch driver is blocked.

Call trace:  
        : __switch_to+0x328/0x358
        : __schedule+0x6f8/0x884
        : schedule+0x80/0xb0
        : synchronize_irq+0x7c/0xb8
        : disable_irq+0x70/0x9c
        : fts_disableInterrupt+0x58/0xbc [stmicro_mmi]
        : fts_chip_powercycle+0x64/0x26c [stmicro_mmi]
        : fts_error_event_handler+0x98/0x134 [stmicro_mmi]
        : fts_event_handler+0xa4/0x11c [stmicro_mmi]

Change-Id: Ic84a111aebfa93ea3386fc363105e341efc1cc09
Reviewed-on: https://gerrit.mot.com/1984070
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Jianqi Yang <yangj@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
litong20 2021-06-18 19:53:39 +08:00 • committed by litong
commit 9452937a05

View file

@ -3265,7 +3265,7 @@ int fts_chip_powercycle(struct fts_ts_info *info)
logError(1, "%s %s: Disabling IRQ...\n", tag, __func__);
/* if IRQ pin is short with DVDD a call to the ISR will triggered when
* the regulator is turned off if IRQ not disabled */
fts_disableInterrupt();
fts_disableInterruptNoSync();
if (info->vdd_reg) {
error = regulator_disable(info->vdd_reg);