From 9452937a05b1f7f61b4c51d494adef93b4fa246f Mon Sep 17 00:00:00 2001 From: litong20 Date: Fri, 18 Jun 2021 19:53:39 +0800 Subject: [PATCH] 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 Submit-Approved: Jira Key --- drivers/input/touchscreen/stmicro_mmi/fts.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/stmicro_mmi/fts.c b/drivers/input/touchscreen/stmicro_mmi/fts.c index 20523b0418d3..3143e3d6fade 100644 --- a/drivers/input/touchscreen/stmicro_mmi/fts.c +++ b/drivers/input/touchscreen/stmicro_mmi/fts.c @@ -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);