summaryrefslogtreecommitdiff
path: root/ft3658
diff options
context:
space:
mode:
authorMason Wang <masonwang@google.com>2022-02-15 17:23:52 +0800
committerMason Wang <masonwang@google.com>2022-03-03 16:17:56 +0800
commita02b593b08089634ba69d3a31de3d1e44118ef67 (patch)
treeb759072514c2e12fed0ffb2f9b58f61059c09ad8 /ft3658
parent95807955fce4796e8da85762e8c3fd3e4e5e61a5 (diff)
downloadfocaltech_touch-a02b593b08089634ba69d3a31de3d1e44118ef67.tar.gz
touch/focaltech: disable heatmap when the touch suspends.
Disable touch heatmap when the touch suspends otherwise the heatmap will keep reporting heatmap when the low power gesture mode is enabled. Bug: 199105079 Test: Touch works well. Signed-off-by: Mason Wang <masonwang@google.com> Change-Id: I1750b9dd3af74f6d8cfee1e5d7a92a02045f4bde
Diffstat (limited to 'ft3658')
-rw-r--r--ft3658/Makefile2
-rw-r--r--ft3658/focaltech_common.h6
-rw-r--r--ft3658/focaltech_core.c22
-rw-r--r--ft3658/focaltech_core.h3
-rw-r--r--ft3658/focaltech_ex_fun.c11
-rw-r--r--ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c8
6 files changed, 31 insertions, 21 deletions
diff --git a/ft3658/Makefile b/ft3658/Makefile
index f85b1c8..905165b 100644
--- a/ft3658/Makefile
+++ b/ft3658/Makefile
@@ -7,7 +7,7 @@ KBUILD_OPTIONS += CONFIG_TOUCHSCREEN_FTS=m
EXTRA_CFLAGS += -DDYNAMIC_DEBUG_MODULE
EXTRA_CFLAGS += -DCONFIG_TOUCHSCREEN_PANEL_BRIDGE
EXTRA_CFLAGS += -DCONFIG_TOUCHSCREEN_TBN
-#EXTRA_CFLAGS += -DCONFIG_TOUCHSCREEN_HEATMAP
+EXTRA_CFLAGS += -DCONFIG_TOUCHSCREEN_HEATMAP
#EXTRA_CFLAGS += -DCONFIG_TOUCHSCREEN_OFFLOAD
EXTRA_CFLAGS += -I$(KERNEL_SRC)/../google-modules/display
EXTRA_CFLAGS += -I$(KERNEL_SRC)/../google-modules/touch/common
diff --git a/ft3658/focaltech_common.h b/ft3658/focaltech_common.h
index 9cbcf1f..75b0f4c 100644
--- a/ft3658/focaltech_common.h
+++ b/ft3658/focaltech_common.h
@@ -117,9 +117,9 @@
#define FTS_REG_SENSE_ONOFF 0xEA
#define FTS_REG_IRQ_ONOFF 0xEB
-#define FTS_heatmap_REG_1E 0x1E
-#define FTS_heatmap_REG_ED 0xED
-#define FTS_heatmap_REG_9E 0x9E
+#define FTS_REG_HEATMAP_1E 0x1E
+#define FTS_REG_HEATMAP_ED 0xED
+#define FTS_REG_HEATMAP_9E 0x9E
#define FTS_LPTW_REG_SET_E1 0xE1
#define FTS_LPTW_REG_SET_E2 0xE2
diff --git a/ft3658/focaltech_core.c b/ft3658/focaltech_core.c
index fa6dc87..2bbeb77 100644
--- a/ft3658/focaltech_core.c
+++ b/ft3658/focaltech_core.c
@@ -2316,6 +2316,19 @@ static int fts_ts_remove_entry(struct fts_ts_data *ts_data)
return 0;
}
+void fts_set_heatmap_mode(bool en)
+{
+ if (en == 1){
+ fts_write_reg(FTS_REG_HEATMAP_1E, 0x01);
+ fts_write_reg(FTS_REG_HEATMAP_ED, 0x00);
+ fts_write_reg(FTS_REG_HEATMAP_9E, 0x01);
+ } else {
+ fts_write_reg(FTS_REG_HEATMAP_9E, 0x00);
+ fts_write_reg(FTS_REG_HEATMAP_1E, 0x00);
+ }
+ FTS_DEBUG("%s heatmap.\n", en ? "Enable" : "Disable");
+}
+
static int fts_ts_suspend(struct device *dev)
{
int ret = 0;
@@ -2336,6 +2349,10 @@ static int fts_ts_suspend(struct device *dev)
fts_esdcheck_suspend();
#endif
+#if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
+ fts_set_heatmap_mode(false);
+#endif
+
if (ts_data->gesture_mode) {
fts_gesture_suspend(ts_data);
} else {
@@ -2357,7 +2374,6 @@ static int fts_ts_suspend(struct device *dev)
#endif
}
}
-
fts_release_all_finger();
ts_data->suspended = true;
FTS_FUNC_EXIT();
@@ -2395,7 +2411,9 @@ static int fts_ts_resume(struct device *dev)
} else {
fts_irq_enable();
}
-
+#if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP)
+ fts_set_heatmap_mode(true);
+#endif
ts_data->suspended = false;
FTS_FUNC_EXIT();
return 0;
diff --git a/ft3658/focaltech_core.h b/ft3658/focaltech_core.h
index bbba536..556bdf7 100644
--- a/ft3658/focaltech_core.h
+++ b/ft3658/focaltech_core.h
@@ -302,6 +302,9 @@ int fts_gesture_readdata(struct fts_ts_data *ts_data, u8 *data);
int fts_gesture_suspend(struct fts_ts_data *ts_data);
int fts_gesture_resume(struct fts_ts_data *ts_data);
+/* Heatmap */
+void fts_set_heatmap_mode(bool en);
+
/* Apk and functions */
int fts_create_apk_debug_channel(struct fts_ts_data *);
void fts_release_apk_debug_channel(struct fts_ts_data *);
diff --git a/ft3658/focaltech_ex_fun.c b/ft3658/focaltech_ex_fun.c
index 3ffdcb4..97ac3b2 100644
--- a/ft3658/focaltech_ex_fun.c
+++ b/ft3658/focaltech_ex_fun.c
@@ -2084,7 +2084,7 @@ static ssize_t proc_heatmap_onoff_read(struct file *filp,
if (pos)
return 0;
- ret = fts_read_reg(FTS_heatmap_REG_9E, &mode);
+ ret = fts_read_reg(FTS_REG_HEATMAP_9E, &mode);
if (ret < 0) {
FTS_ERROR("read reg_0x9E fails");
return ret;
@@ -2127,14 +2127,7 @@ static ssize_t proc_heatmap_onoff_write(struct file *filp,
}
FTS_INFO("switch heatmap on/off to %d", mode);
- if (mode == 1){
- fts_write_reg(FTS_heatmap_REG_1E, 0x01);
- fts_write_reg(FTS_heatmap_REG_ED, 0x00);
- fts_write_reg(FTS_heatmap_REG_9E, 0x01);
- } else {
- fts_write_reg(FTS_heatmap_REG_9E, 0x00);
- fts_write_reg(FTS_heatmap_REG_1E, 0x00);
- }
+ fts_set_heatmap_mode(mode == 1 ? true : false);
return count;
}
diff --git a/ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c b/ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c
index 94e13d1..18fe79a 100644
--- a/ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c
+++ b/ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c
@@ -2049,9 +2049,7 @@ int fts_test_get_strength(u8 *base_raw, u8 tx, u8 rx)
FTS_TEST_INFO("====== Test Item: strength test start\n");
id_cmd[0] = 0x01;
- fts_test_write_reg(FTS_heatmap_REG_1E, 0x01);
- fts_test_write_reg(FTS_heatmap_REG_ED, 0x00);
- fts_test_write_reg(FTS_heatmap_REG_9E, 0x01);
+ fts_set_heatmap_mode(true);
sys_delay(500);
ret = fts_read(id_cmd, 1, base_raw, fast_num_len);
@@ -2061,9 +2059,7 @@ int fts_test_get_strength(u8 *base_raw, u8 tx, u8 rx)
goto test_err;
}
- fts_test_write_reg(FTS_heatmap_REG_9E, 0x00);
- sys_delay(10);
- fts_test_write_reg(FTS_heatmap_REG_1E, 0x00);
+ fts_set_heatmap_mode(false);
test_err:
FTS_TEST_INFO("====== Test Item: strength test end\n");