diff options
author | Jonglin Lee <jonglin@google.com> | 2022-06-04 00:20:20 +0000 |
---|---|---|
committer | Jonglin Lee <jonglin@google.com> | 2022-06-04 00:20:20 +0000 |
commit | c4cc54af966dc41c6ebc4e44eae8052eee1b53a8 (patch) | |
tree | c930f81bfc477641edb08bf464b780367c80b6ea | |
parent | 04e6abfcb8bd29c48908e4fbddd1b9bba4cb33c7 (diff) | |
download | synaptics_touch-c4cc54af966dc41c6ebc4e44eae8052eee1b53a8.tar.gz |
Revert "synaptics: create a work for offload_running setting commands."
This reverts commit 04e6abfcb8bd29c48908e4fbddd1b9bba4cb33c7.
Reason for revert: introduced race condition
Bug: 234745637
Change-Id: Ie7aab658f515954b5c044ae190bc7d0d75f3b59a
Signed-off-by: Jonglin Lee <jonglin@google.com>
-rw-r--r-- | syna_tcm2.c | 83 | ||||
-rw-r--r-- | syna_tcm2.h | 1 |
2 files changed, 32 insertions, 52 deletions
diff --git a/syna_tcm2.c b/syna_tcm2.c index 055fd20..5191f01 100644 --- a/syna_tcm2.c +++ b/syna_tcm2.c @@ -328,49 +328,6 @@ static void syna_motion_filter_work(struct work_struct *work) RESP_IN_ATTN); } -static void syna_offload_running_work(struct work_struct *work) -{ - bool running; - int next_enable_fw_grip = 0; - int next_enable_fw_palm = 0; - struct syna_tcm *tcm = container_of(work, struct syna_tcm, offload_running_work); - - if (tcm->pwr_state != PWR_ON) { - LOGI("Touch is already off."); - return; - } - - tcm->offload.offload_running = !tcm->offload.offload_running; - running = tcm->offload.offload_running; - - /* - * 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_ATTN); - 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_ATTN); - LOGI("%s firmware palm rejection.\n", - (tcm->enable_fw_palm == 1) ? "Enable" : "Disable"); - } -} - static void syna_set_report_rate_work(struct work_struct *work) { struct syna_tcm *tcm; @@ -1098,8 +1055,38 @@ exit: #if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) static void syna_offload_set_running(struct syna_tcm *tcm, bool running) { - if (tcm->offload.offload_running != running) - queue_work(tcm->event_wq, &tcm->offload_running_work); + int next_enable_fw_grip = 0; + int next_enable_fw_palm = 0; + if (tcm->offload.offload_running != running) { + tcm->offload.offload_running = running; + } + + /* + * 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"); + } } static void syna_offload_report(void *handle, @@ -2923,9 +2910,6 @@ static int syna_dev_probe(struct platform_device *pdev) tcm->offload.report_cb = syna_offload_report; touch_offload_init(&tcm->offload); - tcm->offload.offload_running = false; - INIT_WORK(&tcm->offload_running_work, syna_offload_running_work); - if (!tcm->heatmap_buff) { tcm->heatmap_buff = kmalloc( sizeof(u16) * tcm->tcm_dev->rows * tcm->tcm_dev->cols, @@ -3082,9 +3066,6 @@ static int syna_dev_remove(struct platform_device *pdev) destroy_workqueue(tcm->helper.workqueue); #endif -#if IS_ENABLED(CONFIG_TOUCHSCREEN_OFFLOAD) - cancel_work_sync(&tcm->offload_running_work); -#endif cancel_work_sync(&tcm->suspend_work); cancel_work_sync(&tcm->resume_work); cancel_work_sync(&tcm->motion_filter_work); diff --git a/syna_tcm2.h b/syna_tcm2.h index 34cfc56..907ee77 100644 --- a/syna_tcm2.h +++ b/syna_tcm2.h @@ -469,7 +469,6 @@ struct syna_tcm { struct touch_offload_context offload; u16 *heatmap_buff; struct touch_offload_frame *reserved_frame; - struct work_struct offload_running_work; bool reserved_frame_success; #endif |