summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavidycchen <davidycchen@google.com>2022-03-21 17:39:00 +0800
committerdavidycchen <davidycchen@google.com>2022-03-23 14:25:12 +0800
commite705cce379e3e4c379004e53e28b0a6196720b54 (patch)
tree0bfac870373e162062f64625f9797574d6dd1c52
parentfd714df3228c66bf71209f19b5ad133c381e8efc (diff)
downloadsynaptics_touch-e705cce379e3e4c379004e53e28b0a6196720b54.tar.gz
synaptics: Set firmware grip/palm mode depending on offload config
Bug: 225749851 Test: grip/palm mode status correct. Signed-off-by: davidycchen <davidycchen@google.com> Change-Id: Ic41be11d2b41b0386e7cc224f8f726151560c821
-rw-r--r--syna_tcm2.c26
1 files changed, 24 insertions, 2 deletions
diff --git a/syna_tcm2.c b/syna_tcm2.c
index 0e6cdc1..fe0bffe 100644
--- a/syna_tcm2.c
+++ b/syna_tcm2.c
@@ -951,15 +951,37 @@ exit:
#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD)
static void syna_offload_set_running(struct syna_tcm *tcm, bool running)
{
+ int next_enable_fw_grip = 0;
+ int next_enable_fw_palm = 0;
if (tcm->offload.offload_running != running) {
tcm->offload.offload_running = running;
}
- if (tcm->offload.offload_running == tcm->enable_fw_grip && tcm->enable_fw_grip < 2) {
- tcm->enable_fw_grip = tcm->offload.offload_running ? 0 : 1;
+
+ /*
+ * Disable firmware grip_suppression/palm_rejection when offload is running and
+ * upper layer grip_suppression/palm_rejection is enabled.
+ */
+ next_enable_fw_grip = (running && (tcm->offload.config.filter_grip == 1)) ? 0 : 1;
+ next_enable_fw_palm = (running && (tcm->offload.config.filter_palm == 1)) ? 0 : 1;
+
+ if (next_enable_fw_grip != tcm->enable_fw_grip && tcm->enable_fw_grip < 2) {
+ tcm->enable_fw_grip = next_enable_fw_grip;
syna_tcm_set_dynamic_config(tcm->tcm_dev,
DC_ENABLE_GRIP_SUPPRESSION,
tcm->enable_fw_grip,
RESP_IN_POLLING);
+ LOGI("%s firmware grip suppression.\n",
+ (tcm->enable_fw_grip == 1) ? "Enable" : "Disable");
+ }
+
+ if (next_enable_fw_palm != tcm->enable_fw_palm && tcm->enable_fw_palm < 2) {
+ tcm->enable_fw_palm = next_enable_fw_palm;
+ syna_tcm_set_dynamic_config(tcm->tcm_dev,
+ DC_ENABLE_PALM_REJECTION,
+ tcm->enable_fw_palm,
+ RESP_IN_POLLING);
+ LOGI("%s firmware palm rejection.\n",
+ (tcm->enable_fw_palm == 1) ? "Enable" : "Disable");
}
}