summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYen-Chao Chen <davidycchen@google.com>2023-03-07 11:22:12 +0800
committerYen-Chao Chen <davidycchen@google.com>2023-03-07 11:25:11 +0800
commitd779bd663b3e55e0a4e6e12120a62713e8c05b1c (patch)
treee1e10546c59ad2662832dc660d1630c05e1ef891
parent9a1bdd15f21249e755ef38ce2439e6ca407ca54c (diff)
downloadgoodix_touch-d779bd663b3e55e0a4e6e12120a62713e8c05b1c.tar.gz
goodix: support GTI irq/reset commands
Support GTI unified commands. Bug: 242559052 Test: test with the commands. Change-Id: I47920055a1d47c7a24c5f166c9043b300d7f9bdd Signed-off-by: Yen-Chao Chen <davidycchen@google.com>
-rw-r--r--goodix_ts_core.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/goodix_ts_core.c b/goodix_ts_core.c
index c86c0b7..83044a4 100644
--- a/goodix_ts_core.c
+++ b/goodix_ts_core.c
@@ -1133,6 +1133,34 @@ static int gti_get_fw_version(void *private_data,
return ret;
}
+static int gti_set_irq_mode(void *private_data, struct gti_irq_cmd *cmd)
+{
+ struct goodix_ts_core *cd = private_data;
+ return cd->hw_ops->irq_enable(cd, cmd->setting == GTI_IRQ_MODE_ENABLE);
+}
+
+static int gti_get_irq_mode(void *private_data, struct gti_irq_cmd *cmd)
+{
+ struct goodix_ts_core *cd = private_data;
+
+ if (atomic_read(&cd->irq_enabled) == 1)
+ cmd->setting = GTI_IRQ_MODE_ENABLE;
+ else
+ cmd->setting = GTI_IRQ_MODE_DISABLE;
+
+ return 0;
+}
+
+static int gti_reset(void *private_data, struct gti_reset_cmd *cmd)
+{
+ struct goodix_ts_core *cd = private_data;
+
+ if (cmd->setting == GTI_RESET_MODE_HW || cmd->setting == GTI_RESET_MODE_AUTO)
+ return cd->hw_ops->reset(cd, GOODIX_NORMAL_RESET_DELAY_MS);
+ else
+ return -EOPNOTSUPP;
+}
+
static int gti_ping(void *private_data, struct gti_ping_cmd *cmd)
{
struct goodix_ts_core *cd = private_data;
@@ -2854,6 +2882,9 @@ int goodix_ts_stage2_init(struct goodix_ts_core *cd)
options->get_screen_protector_mode = get_screen_protector_mode;
options->set_heatmap_enabled = set_heatmap_enabled;
options->get_fw_version = gti_get_fw_version;
+ options->set_irq_mode = gti_set_irq_mode;
+ options->get_irq_mode = gti_get_irq_mode;
+ options->reset = gti_reset;
options->ping = gti_ping;
options->selftest = gti_selftest;