summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYen-Chao Chen <davidycchen@google.com>2023-03-08 17:56:03 +0800
committerYen-Chao Chen <davidycchen@google.com>2023-03-08 17:56:03 +0800
commit1f933e04606f3af01a831bfa900a2bd87aaa7678 (patch)
tree213853064e49a9f3ebbbd70404e1c1939f3a5eb1
parent0a0e2d0aa09b2854bbee72364b4fbf53ff2a4a99 (diff)
downloadfts_touch-1f933e04606f3af01a831bfa900a2bd87aaa7678.tar.gz
ftm5: support coordinate filter switch
Bug: 262442716 Test: flash local build and check logs. Change-Id: I214a63122c853a6ba2f6eb20faa981d8b85b9e4e Signed-off-by: Yen-Chao Chen <davidycchen@google.com>
-rw-r--r--ftm5/fts.c37
-rw-r--r--ftm5/fts.h2
-rw-r--r--ftm5/fts_lib/ftsSoftware.h2
3 files changed, 41 insertions, 0 deletions
diff --git a/ftm5/fts.c b/ftm5/fts.c
index b69a9af..ab9d09b 100644
--- a/ftm5/fts.c
+++ b/ftm5/fts.c
@@ -2853,6 +2853,41 @@ static int get_palm_mode(void *private_data, struct gti_palm_cmd *cmd)
return 0;
}
+static int set_coord_filter_enabled(void *private_data, struct gti_coord_filter_cmd *cmd)
+{
+ struct fts_ts_info *info = private_data;
+ u8 write[3];
+ u8 disable;
+ int ret;
+
+ disable = cmd->setting == GTI_COORD_FILTER_DISABLE ? 1 : 0;
+
+ write[0] = (u8) FTS_CMD_CUSTOM_W;
+ write[1] = (u8) CUSTOM_CMD_DISABLE_COORD_FILTER;
+ write[2] = disable;
+
+ ret = fts_write(info, write, sizeof(write));
+ if (ret) {
+ dev_err(info->dev, "Failed to %s firmware coordinate filter.\n",
+ disable ? "disable" : "enable");
+ } else {
+ info->coord_filter_disabled = disable;
+ dev_info(info->dev, "%s firmware coordinate filter.\n",
+ info->coord_filter_disabled ? "Disable" : "Enable");
+ }
+
+ return ret;
+}
+
+static int get_coord_filter_enabled(void *private_data, struct gti_coord_filter_cmd *cmd)
+{
+ struct fts_ts_info *info = private_data;
+
+ cmd->setting = info->coord_filter_disabled ?
+ GTI_COORD_FILTER_DISABLE : GTI_COORD_FILTER_ENABLE;
+ return 0;
+}
+
/**
* Set the custom touch report rate.
* buf[0]: FTS_CMD_CUSTOM_W
@@ -5835,6 +5870,8 @@ static int fts_probe(struct spi_device *client)
options->get_grip_mode = get_grip_mode;
options->set_palm_mode = set_palm_mode;
options->get_palm_mode = get_palm_mode;
+ options->set_coord_filter_enabled = set_coord_filter_enabled;
+ options->get_coord_filter_enabled = get_coord_filter_enabled;
options->set_report_rate = set_report_rate;
options->get_irq_mode = get_irq_mode;
options->set_irq_mode = set_irq_mode;
diff --git a/ftm5/fts.h b/ftm5/fts.h
index 93b4037..db82094 100644
--- a/ftm5/fts.h
+++ b/ftm5/fts.h
@@ -761,6 +761,8 @@ struct fts_ts_info {
int grip_enabled; /* Grip mode */
int palm_enabled; /* Palm mode */
+ bool coord_filter_disabled;
+
#if IS_ENABLED(CONFIG_GOOG_TOUCH_INTERFACE)
struct goog_touch_interface *gti;
#else
diff --git a/ftm5/fts_lib/ftsSoftware.h b/ftm5/fts_lib/ftsSoftware.h
index 2c36b85..c5adb31 100644
--- a/ftm5/fts_lib/ftsSoftware.h
+++ b/ftm5/fts_lib/ftsSoftware.h
@@ -577,6 +577,8 @@ enum {
#define CUSTOM_CMD_REPORT_RATE 0x06
#define CUSTOM_CMD_PALM_REJECTION 0x0B
#define CUSTOM_CMD_HIGH_SENSITIVITY 0x0E
+#define CUSTOM_CMD_DISABLE_COORD_FILTER 0x0F
+
/* Custom grip type tune. */
#define GRIP_FEATURE_ENABLE 0x10