diff options
author | davidycchen <davidycchen@google.com> | 2022-03-21 17:39:00 +0800 |
---|---|---|
committer | davidycchen <davidycchen@google.com> | 2022-03-23 14:25:12 +0800 |
commit | e705cce379e3e4c379004e53e28b0a6196720b54 (patch) | |
tree | 0bfac870373e162062f64625f9797574d6dd1c52 | |
parent | fd714df3228c66bf71209f19b5ad133c381e8efc (diff) | |
download | synaptics_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.c | 26 |
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"); } } |