diff --git a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_gesture.c b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_gesture.c index af50591f1fd2..bf8794fdfe74 100644 --- a/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_gesture.c +++ b/drivers/input/touchscreen/goodix_berlin_mmi/goodix_ts_gesture.c @@ -231,6 +231,16 @@ static int gsx_gesture_ist(struct goodix_ts_core *cd, if (atomic_read(&cd->suspended) == 0) return EVT_CONTINUE; + if (cd->board_data.gesture_wait_pm) { + PM_WAKEUP_EVENT(cd->gesture_wakelock, 3000); + /* Waiting for pm resume completed */ + ret = wait_event_interruptible_timeout(cd->pm_wq, atomic_read(&cd->pm_resume), msecs_to_jiffies(700)); + if (!ret) { + ts_err("system(spi) can't finished resuming procedure."); + return IRQ_HANDLED; + } + } + ret = hw_ops->event_handler(cd, &gs_event); if (ret) { ts_err("failed get gesture data");