diff --git a/drivers/input/touchscreen/ili9882_mmi/ili9882.c b/drivers/input/touchscreen/ili9882_mmi/ili9882.c index 63111ba5f2ff..081b13028c33 100755 --- a/drivers/input/touchscreen/ili9882_mmi/ili9882.c +++ b/drivers/input/touchscreen/ili9882_mmi/ili9882.c @@ -32,6 +32,7 @@ static struct delayed_work esd_work; static struct delayed_work bat_work; #if RESUME_BY_DDI +static int ili_pinctrl_select_normal(struct ilitek_ts_data *ts); static struct workqueue_struct *resume_by_ddi_wq; static struct work_struct resume_by_ddi_work; @@ -49,6 +50,8 @@ static void ilitek_resume_by_ddi_work(struct work_struct *work) else ili_reset_ctrl(ilits->reset); + ili_pinctrl_select_normal(ilits); + ili_irq_enable(); ILI_INFO("TP resume end by wq\n"); ili_wq_ctrl(WQ_ESD, ENABLE); @@ -64,7 +67,7 @@ void ili_resume_by_ddi(void) return; } - mutex_lock(&ilits->touch_mutex); +// mutex_lock(&ilits->touch_mutex); ILI_INFO("TP resume start called by ddi\n"); @@ -78,8 +81,9 @@ void ili_resume_by_ddi(void) ilits->ddi_rest_done = true; mdelay(5); queue_work(resume_by_ddi_wq, &(resume_by_ddi_work)); + ILI_INFO("TP resume work queued\n"); - mutex_unlock(&ilits->touch_mutex); +// mutex_unlock(&ilits->touch_mutex); } #endif @@ -523,6 +527,8 @@ int ili_sleep_handler(int mode) ili_wq_ctrl(WQ_BAT, ENABLE); ilits->tp_suspend = false; ILI_INFO("TP resume end\n"); +#else + ili_resume_by_ddi(); #endif ili_irq_enable(); break; diff --git a/drivers/input/touchscreen/ili9882_mmi/ili9882.h b/drivers/input/touchscreen/ili9882_mmi/ili9882.h index 4021e8172e24..f46a44428ee4 100755 --- a/drivers/input/touchscreen/ili9882_mmi/ili9882.h +++ b/drivers/input/touchscreen/ili9882_mmi/ili9882.h @@ -142,7 +142,11 @@ #endif #define REGULATOR_POWER DISABLE #define TP_SUSPEND_PRIO ENABLE +#ifdef ILI_CONFIG_RESUME_BY_DDI +#define RESUME_BY_DDI ENABLE +#else #define RESUME_BY_DDI DISABLE +#endif #define BOOT_FW_UPDATE ENABLE #define MP_INT_LEVEL DISABLE #define PLL_CLK_WAKEUP_TP_RESUME DISABLE