summaryrefslogtreecommitdiff
path: root/ft3658
diff options
context:
space:
mode:
authorMason Wang <masonwang@google.com>2022-03-30 22:36:10 +0800
committerMason Wang <masonwang@google.com>2022-04-01 12:21:24 +0800
commit1c068aa0ef2c3bab1da07d66e513ea991d222c1b (patch)
treecba5df12403d929cf40f9f0dff525378286e95fb /ft3658
parente622fef001c5a6cfaf4c9103326279fbb04399e2 (diff)
downloadfocaltech_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.h29
-rw-r--r--ft3658/focaltech_core.c49
-rw-r--r--ft3658/focaltech_ex_fun.c6
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.