diff options
author | Mason Wang <masonwang@google.com> | 2022-02-11 09:57:36 +0800 |
---|---|---|
committer | Mason Wang <masonwang@google.com> | 2022-02-11 10:52:47 +0800 |
commit | c258b9c629f2c65fb1f85900ed36d87158001549 (patch) | |
tree | aa955160bf5dd1d27ea04196eac302bcaa497a7e /ft3658 | |
parent | a86596d67cec7245511cc984dfc23615d57d9360 (diff) | |
download | focaltech_touch-c258b9c629f2c65fb1f85900ed36d87158001549.tar.gz |
touch/focaltech: add cpu_latency_qos request during irq.
Bug: 199105150
Test: Verify pass by checking basic touch operation.
Signed-off-by: Mason Wang <masonwang@google.com>
Change-Id: If768a87cee47178ebaa9a44a737c4b8cb30d9482
Diffstat (limited to 'ft3658')
-rw-r--r-- | ft3658/focaltech_core.c | 7 | ||||
-rw-r--r-- | ft3658/focaltech_core.h | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/ft3658/focaltech_core.c b/ft3658/focaltech_core.c index 1caf8e2..d5bd4dc 100644 --- a/ft3658/focaltech_core.c +++ b/ft3658/focaltech_core.c @@ -1126,7 +1126,9 @@ static irqreturn_t fts_irq_handler(int irq, void *data) } #endif int_test_has_interrupt++; + cpu_latency_qos_update_request(&ts_data->pm_qos_req, 100 /* usec */); fts_irq_read_report(); + cpu_latency_qos_update_request(&ts_data->pm_qos_req, PM_QOS_DEFAULT_VALUE); #if IS_ENABLED(CONFIG_TOUCHSCREEN_PANEL_BRIDGE) fts_ts_set_bus_ref(ts_data, FTS_TS_BUS_REF_IRQ, false); #endif @@ -2116,6 +2118,8 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data) FTS_ERROR("init esd check fail"); } #endif + /* init pm_qos before interrupt registered. */ + cpu_latency_qos_add_request(&ts_data->pm_qos_req, PM_QOS_DEFAULT_VALUE); ret = fts_irq_registration(ts_data); if (ret) { @@ -2194,6 +2198,7 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data) return 0; err_irq_req: + cpu_latency_qos_remove_request(&ts_data->pm_qos_req); #if FTS_POWER_SOURCE_CUST_EN err_power_init: fts_power_source_exit(ts_data); @@ -2270,6 +2275,8 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data) if (ts_data->ts_workqueue) destroy_workqueue(ts_data->ts_workqueue); + cpu_latency_qos_remove_request(&ts_data->pm_qos_req); + #if defined(CONFIG_FB) if (fb_unregister_client(&ts_data->fb_notif)) FTS_ERROR("[FB]Error occurred while unregistering fb_notifier."); diff --git a/ft3658/focaltech_core.h b/ft3658/focaltech_core.h index b3708e7..16c5eeb 100644 --- a/ft3658/focaltech_core.h +++ b/ft3658/focaltech_core.h @@ -61,6 +61,7 @@ #include <linux/sched.h> #include <linux/kthread.h> #include <linux/dma-mapping.h> +#include <linux/pm_qos.h> #include "focaltech_common.h" /***************************************************************************** @@ -182,6 +183,7 @@ struct fts_ts_data { struct delayed_work prc_work; struct work_struct resume_work; struct work_struct suspend_work; + struct pm_qos_request pm_qos_req; struct ftxxxx_proc proc; spinlock_t irq_lock; struct mutex report_mutex; |