From 8eb26142f2019cdc40358bacd3a3b0cc927821ff Mon Sep 17 00:00:00 2001 From: haojl2 Date: Wed, 28 Aug 2019 15:35:47 +0800 Subject: [PATCH] focaltech_0flash_mmi: Add suspend resume mutex TP: Add a mutex to lock suspend and resume function This is used by touch virtual sensor Change-Id: I816fa9347299313a392ad9e0b4e4991aac74fef3 Signed-off-by: haojl2 Reviewed-on: https://gerrit.mot.com/1411930 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Guobin Zhang Submit-Approved: Jira Key --- .../focaltech_0flash_mmi/focaltech_core.c | 25 +++++++++++++++++-- .../focaltech_0flash_mmi/focaltech_core.h | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.c b/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.c index c70eafae97a3..1a4a42e46200 100755 --- a/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.c +++ b/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.c @@ -1712,6 +1712,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data) spin_lock_init(&ts_data->irq_lock); mutex_init(&ts_data->report_mutex); mutex_init(&ts_data->bus_lock); + mutex_init(&ts_data->suspend_resume_mutex); #ifdef FOCALTECH_SENSOR_EN mutex_init(&ts_data->state_mutex); //unknown screen state @@ -1976,7 +1977,7 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data) return 0; } -static int fts_ts_suspend(struct device *dev) +static int _fts_ts_suspend(struct device *dev) { int ret = 0; struct fts_ts_data *ts_data = fts_data; @@ -2065,7 +2066,17 @@ static int fts_ts_suspend(struct device *dev) return 0; } -static int fts_ts_resume(struct device *dev) +static int fts_ts_suspend(struct device *dev) +{ + int ret = 0; + mutex_lock(&fts_data->suspend_resume_mutex); + ret = _fts_ts_suspend(dev); + mutex_unlock(&fts_data->suspend_resume_mutex); + + return ret; +} + +static int _fts_ts_resume(struct device *dev) { struct fts_ts_data *ts_data = fts_data; @@ -2141,6 +2152,16 @@ static int fts_ts_resume(struct device *dev) return 0; } +static int fts_ts_resume(struct device *dev) +{ + int ret = 0; + mutex_lock(&fts_data->suspend_resume_mutex); + ret = _fts_ts_resume(dev); + mutex_unlock(&fts_data->suspend_resume_mutex); + + return ret; +} + /***************************************************************************** * TP Driver *****************************************************************************/ diff --git a/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.h b/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.h index 465b28862558..b0796e8ac813 100755 --- a/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.h +++ b/drivers/input/touchscreen/focaltech_0flash_mmi/focaltech_core.h @@ -179,6 +179,7 @@ struct fts_ts_data { struct delayed_work esdcheck_work; struct delayed_work prc_work; struct work_struct resume_work; + struct mutex suspend_resume_mutex; struct ftxxxx_proc proc; spinlock_t irq_lock; struct mutex report_mutex;