diff options
author | Mason Wang <masonwang@google.com> | 2022-02-15 17:23:52 +0800 |
---|---|---|
committer | Mason Wang <masonwang@google.com> | 2022-03-03 16:17:56 +0800 |
commit | a02b593b08089634ba69d3a31de3d1e44118ef67 (patch) | |
tree | b759072514c2e12fed0ffb2f9b58f61059c09ad8 /ft3658 | |
parent | 95807955fce4796e8da85762e8c3fd3e4e5e61a5 (diff) | |
download | focaltech_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/Makefile | 2 | ||||
-rw-r--r-- | ft3658/focaltech_common.h | 6 | ||||
-rw-r--r-- | ft3658/focaltech_core.c | 22 | ||||
-rw-r--r-- | ft3658/focaltech_core.h | 3 | ||||
-rw-r--r-- | ft3658/focaltech_ex_fun.c | 11 | ||||
-rw-r--r-- | ft3658/focaltech_test/supported_ic/focaltech_test_ft3658u.c | 8 |
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"); |