summaryrefslogtreecommitdiff
path: root/ft3658
diff options
context:
space:
mode:
authorMason Wang <masonwang@google.com>2022-02-11 09:57:36 +0800
committerMason Wang <masonwang@google.com>2022-02-11 10:52:47 +0800
commitc258b9c629f2c65fb1f85900ed36d87158001549 (patch)
treeaa955160bf5dd1d27ea04196eac302bcaa497a7e /ft3658
parenta86596d67cec7245511cc984dfc23615d57d9360 (diff)
downloadfocaltech_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.c7
-rw-r--r--ft3658/focaltech_core.h2
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;