diff options
author | Mason Wang <masonwang@google.com> | 2022-03-30 22:36:10 +0800 |
---|---|---|
committer | Mason Wang <masonwang@google.com> | 2022-04-01 12:21:24 +0800 |
commit | 1c068aa0ef2c3bab1da07d66e513ea991d222c1b (patch) | |
tree | cba5df12403d929cf40f9f0dff525378286e95fb /ft3658 | |
parent | e622fef001c5a6cfaf4c9103326279fbb04399e2 (diff) | |
download | focaltech_touch-1c068aa0ef2c3bab1da07d66e513ea991d222c1b.tar.gz |
focaltech: Set firmware grip/palm mode depending on offload config.
Bug: 225748661
Test: grip/palm mode status correct.
Signed-off-by: Mason Wang <masonwang@google.com>
Change-Id: I7ec0358ee676bac6242a58b461c4dafc033ed1f1
Diffstat (limited to 'ft3658')
-rw-r--r-- | ft3658/focaltech_common.h | 29 | ||||
-rw-r--r-- | ft3658/focaltech_core.c | 49 | ||||
-rw-r--r-- | ft3658/focaltech_ex_fun.c | 6 |
3 files changed, 72 insertions, 12 deletions
diff --git a/ft3658/focaltech_common.h b/ft3658/focaltech_common.h index 1c96e70..c374c38 100644 --- a/ft3658/focaltech_common.h +++ b/ft3658/focaltech_common.h @@ -146,6 +146,9 @@ #define FTS_SYSFS_ECHO_ON(buf) (buf[0] == '1') #define FTS_SYSFS_ECHO_OFF(buf) (buf[0] == '0') +#define FTS_DEFAULT_FW_GRIP FW_GRIP_DISABLE +#define FTS_DEFAULT_FW_PALM FW_PALM_ENABLE + #define kfree_safe(pbuf) do {\ if (pbuf) {\ kfree(pbuf);\ @@ -202,6 +205,32 @@ enum TOUCH_POWER_MODE { }; #endif +/* Firmware Grip suppression mode. + * 0 - Disable fw grip suppression. + * 1 - Enable fw grip suppression. + * 2 - Force disable fw grip suppression. + * 3 - Force enable fw grip suppression. + */ +enum FW_GRIP_MODE { + FW_GRIP_DISABLE, + FW_GRIP_ENABLE, + FW_GRIP_FORCE_DISABLE, + FW_GRIP_FORCE_ENABLE, +}; + +/* Firmware Palm rejection mode. + * 0 - Disable fw palm rejection. + * 1 - Enable fw palm rejection. + * 2 - Force disable fw palm rejection. + * 3 - Force enable fw palm rejection. + */ +enum FW_PALM_MODE { + FW_PALM_DISABLE, + FW_PALM_ENABLE, + FW_PALM_FORCE_DISABLE, + FW_PALM_FORCE_ENABLE, +}; + /***************************************************************************** * DEBUG function define here *****************************************************************************/ diff --git a/ft3658/focaltech_core.c b/ft3658/focaltech_core.c index 7ba5729..6a2a6c9 100644 --- a/ft3658/focaltech_core.c +++ b/ft3658/focaltech_core.c @@ -1468,14 +1468,47 @@ exit: #if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) static void fts_offload_set_running(struct fts_ts_data *ts_data, bool running) { - if (ts_data->offload.offload_running != running) { - ts_data->offload.offload_running = running; + bool update_en = false; + + ts_data->offload.offload_running = running; + /* + * Disable firmware grip_suppression/palm_rejection when offload is running + * and upper layer grip_suppression/palm_rejection is enabled. + */ + if (running) { + if (ts_data->enable_fw_grip < FW_GRIP_FORCE_DISABLE) { + int new_fw_grip = ts_data->offload.config.filter_grip ? + FW_GRIP_DISABLE : FW_GRIP_ENABLE; + if (ts_data->enable_fw_grip != new_fw_grip) { + ts_data->enable_fw_grip = new_fw_grip; + update_en = true; + } + } + + if (ts_data->enable_fw_palm < FW_PALM_FORCE_DISABLE) { + int new_fw_palm = ts_data->offload.config.filter_palm ? + FW_PALM_DISABLE : FW_PALM_ENABLE; + if (ts_data->enable_fw_palm != new_fw_palm) { + ts_data->enable_fw_palm = new_fw_palm; + update_en = true; + } + } + } else { + if (ts_data->enable_fw_grip < FW_GRIP_FORCE_DISABLE && + ts_data->enable_fw_grip != FTS_DEFAULT_FW_GRIP) { + ts_data->enable_fw_grip = FTS_DEFAULT_FW_GRIP; + update_en = true; + } + + if (ts_data->enable_fw_palm < FW_PALM_FORCE_DISABLE && + ts_data->enable_fw_palm != FTS_DEFAULT_FW_PALM) { + ts_data->enable_fw_palm = FTS_DEFAULT_FW_PALM; + update_en = true; + } } - if (ts_data->offload.offload_running == ts_data->enable_fw_grip && - ts_data->enable_fw_grip < 2) { - ts_data->enable_fw_grip = ts_data->offload.offload_running ? 0 : 1; + + if (update_en) fts_update_feature_setting(ts_data); - } } static void fts_offload_report(void *handle, @@ -2693,8 +2726,8 @@ static int fts_ts_probe_entry(struct fts_ts_data *ts_data) #if IS_ENABLED(CONFIG_TOUCHSCREEN_HEATMAP) ts_data->enable_fw_heatmap = false; #endif - ts_data->enable_fw_grip = 0x00; - ts_data->enable_fw_palm = 0x01; + ts_data->enable_fw_grip = FTS_DEFAULT_FW_GRIP; + ts_data->enable_fw_palm = FTS_DEFAULT_FW_PALM; fts_update_feature_setting(ts_data); #if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) diff --git a/ft3658/focaltech_ex_fun.c b/ft3658/focaltech_ex_fun.c index 50092e4..2087ad5 100644 --- a/ft3658/focaltech_ex_fun.c +++ b/ft3658/focaltech_ex_fun.c @@ -1784,8 +1784,7 @@ static ssize_t proc_palm_read(struct file *filp, char __user *buff, return cnt; } -/* - * Set palm rejection mode. +/* Set palm rejection mode. * 0 - Disable fw palm rejection. * 1 - Enable fw palm rejection. * 2 - Force disable fw palm rejection. @@ -1871,8 +1870,7 @@ static ssize_t proc_grip_read(struct file *filp, char __user *buff, return cnt; } -/* - * Set Grip suppression mode. +/* Set Grip suppression mode. * 0 - Disable fw grip suppression. * 1 - Enable fw grip suppression. * 2 - Force disable fw grip suppression. |