From ac23a64f127bfcb12cc2fd9b8e84bf6fe430a784 Mon Sep 17 00:00:00 2001 From: wengjun1 Date: Wed, 11 Aug 2021 17:48:25 +0800 Subject: [PATCH] Cypfq: dlkm: Gc7372 add enable/disable wake irq for single tap - If we do not set the irq to wakeable, single tap to wake may not wake up the AP, so add the corresponding change for fix this issue. Change-Id: Ic44a6339d21c64e2d1ca456bc4e4f021aa11e2e7 Signed-off-by: wengjun1 Reviewed-on: https://gerrit.mot.com/2038950 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- .../touchscreen/gcore_mmi/gcore_drv_qcom.c | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/input/touchscreen/gcore_mmi/gcore_drv_qcom.c b/drivers/input/touchscreen/gcore_mmi/gcore_drv_qcom.c index fe6600e32f1e..c09a2b8f0d63 100755 --- a/drivers/input/touchscreen/gcore_mmi/gcore_drv_qcom.c +++ b/drivers/input/touchscreen/gcore_mmi/gcore_drv_qcom.c @@ -107,7 +107,9 @@ EXPORT_SYMBOL(gcore_ges_irq_disable); void gcore_suspend(void) { - //struct gcore_dev *gdev = fn_data.gdev; +#ifdef GCORE_SENSOR_EN + struct gcore_dev *gdev = fn_data.gdev; +#endif GTP_DEBUG("enter gcore suspend"); @@ -132,8 +134,10 @@ void gcore_suspend(void) if (fn_data.gdev->should_enable_gesture) { fn_data.gdev->gesture_enabled = true; fn_data.gdev->wakeable = true; - fn_data.gdev->screen_state = SCREEN_OFF; + enable_irq_wake(gdev->touch_irq); + GTP_DEBUG("Enable gcore irq wake"); } + fn_data.gdev->screen_state = SCREEN_OFF; mutex_unlock(&fn_data.gdev->state_mutex); #else fn_data.gdev->tp_suspend = true; @@ -145,7 +149,9 @@ void gcore_suspend(void) void gcore_resume(void) { - //struct gcore_dev *gdev = fn_data.gdev; +#ifdef GCORE_SENSOR_EN + struct gcore_dev *gdev = fn_data.gdev; +#endif GTP_DEBUG("enter gcore resume"); @@ -177,8 +183,12 @@ void gcore_resume(void) #ifdef GCORE_SENSOR_EN mutex_lock(&fn_data.gdev->state_mutex); - fn_data.gdev->gesture_enabled = false; - fn_data.gdev->wakeable = false; + if(fn_data.gdev->wakeable) { + GTP_DEBUG("Disable gcore irq wake"); + disable_irq_wake(gdev->touch_irq); + fn_data.gdev->gesture_enabled = false; + fn_data.gdev->wakeable = false; + } fn_data.gdev->screen_state = SCREEN_ON; queue_work(resume_by_ddi_wq, &(resume_by_ddi_work));