diff options
author | Yen-Chao Chen <davidycchen@google.com> | 2023-03-08 17:56:03 +0800 |
---|---|---|
committer | Yen-Chao Chen <davidycchen@google.com> | 2023-03-08 17:56:03 +0800 |
commit | 1f933e04606f3af01a831bfa900a2bd87aaa7678 (patch) | |
tree | 213853064e49a9f3ebbbd70404e1c1939f3a5eb1 | |
parent | 0a0e2d0aa09b2854bbee72364b4fbf53ff2a4a99 (diff) | |
download | fts_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.c | 37 | ||||
-rw-r--r-- | ftm5/fts.h | 2 | ||||
-rw-r--r-- | ftm5/fts_lib/ftsSoftware.h | 2 |
3 files changed, 41 insertions, 0 deletions
@@ -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; @@ -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 |