summaryrefslogtreecommitdiff
path: root/goodix_ts_proc.c
diff options
context:
space:
mode:
authorWendly Li <wendlyli@google.com>2022-06-13 07:31:48 +0000
committerWendly Li <wendlyli@google.com>2022-06-14 18:29:09 +0000
commit967c1a070556b92b166401a10b07d2ac965e8dcd (patch)
tree28856aac2e3d5ae523dfe3702409bf116c58b9bc /goodix_ts_proc.c
parente29c9d98224bd37a84929a3d2bb98c808efdca0e (diff)
downloadgoodix_touch-967c1a070556b92b166401a10b07d2ac965e8dcd.tar.gz
goodix: Import v1.0.11 driver
Bug: 214118830 Bug: 214118809 Test: Check fw palm and grip works fine and can be switched Change-Id: I9cfb53fc671a073c802663ee89227ab09d3b783e Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_ts_proc.c')
-rw-r--r--goodix_ts_proc.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/goodix_ts_proc.c b/goodix_ts_proc.c
index 51bf0bf..344cd61 100644
--- a/goodix_ts_proc.c
+++ b/goodix_ts_proc.c
@@ -40,6 +40,7 @@
#define CMD_GET_FW_STATUS "get_fw_status"
#define CMD_SET_HIGHSENSE_MODE "set_highsense_mode"
#define CMD_SET_GRIP_DATA "set_grip_data"
+#define CMD_SET_GRIP_MODE "set_grip_mode"
#define CMD_SET_PALM_MODE "set_palm_mode"
#define CMD_SET_NOISE_MODE "set_noise_mode"
#define CMD_SET_WATER_MODE "set_water_mode"
@@ -56,8 +57,8 @@ char *cmd_list[] = { CMD_FW_UPDATE, CMD_AUTO_TEST, CMD_OPEN_TEST,
CMD_GET_SCAN_MODE, CMD_SET_CONTINUE_MODE, CMD_GET_CHANNEL_NUM,
CMD_GET_TX_FREQ, CMD_RESET, CMD_SET_SENSE_MODE, CMD_GET_CONFIG,
CMD_GET_FW_STATUS, CMD_SET_HIGHSENSE_MODE, CMD_SET_GRIP_DATA,
- CMD_SET_PALM_MODE, CMD_SET_NOISE_MODE, CMD_SET_WATER_MODE,
- CMD_SET_HEATMAP, NULL };
+ CMD_SET_GRIP_MODE, CMD_SET_PALM_MODE, CMD_SET_NOISE_MODE,
+ CMD_SET_WATER_MODE, CMD_SET_HEATMAP, NULL };
/* test limits keyword */
#define CSV_TP_SPECIAL_RAW_MIN "special_raw_min"
@@ -73,6 +74,7 @@ char *cmd_list[] = { CMD_FW_UPDATE, CMD_AUTO_TEST, CMD_OPEN_TEST,
#define PALM_FUNC 0
#define NOISE_FUNC 1
#define WATER_FUNC 2
+#define GRIP_FUNC 3
#define SHORT_SIZE 150
#define LARGE_SIZE 4096
@@ -2280,6 +2282,16 @@ static void goodix_get_fw_status(void)
status_addr = offset + 38;
noise_lv_addr = offset + 65;
+ cd->hw_ops->read(cd, 0x1021A, &val, 1);
+ index +=
+ sprintf(&rbuf[index], "set_noise_mode[%d] ", (val >> 4) & 0x03);
+ index +=
+ sprintf(&rbuf[index], "set_water_mode[%d] ", (val >> 3) & 0x01);
+ index += sprintf(&rbuf[index], "set_grip_mode[%d] ", (val >> 2) & 0x01);
+ index += sprintf(&rbuf[index], "set_palm_mode[%d] ", (val >> 1) & 0x01);
+ index += sprintf(
+ &rbuf[index], "set_heatmap_mode[%d]\n", (val >> 0) & 0x01);
+
cd->hw_ops->read(cd, status_addr, &val, 1);
ts_info("addr:0x%04x fw_status:0x%02X", status_addr, val);
index += sprintf(
@@ -2373,6 +2385,9 @@ static void goodix_set_custom_mode(u8 type, u8 val)
} else if (type == WATER_FUNC) {
index = sprintf(&rbuf[index], "set water %s\n",
val ? "disabled" : "restore");
+ } else if (type == GRIP_FUNC) {
+ index = sprintf(&rbuf[index], "set grip %s\n",
+ val ? "disabled" : "restore");
} else {
ts_err("invalid type, %d", type);
return;
@@ -3144,6 +3159,23 @@ static ssize_t driver_test_write(
goto exit;
}
+ if (!strncmp(p, CMD_SET_GRIP_MODE, strlen(CMD_SET_GRIP_MODE))) {
+ rbuf = kzalloc(SHORT_SIZE, GFP_KERNEL);
+ token = strsep(&p, ",");
+ if (!token || !p) {
+ index = sprintf(rbuf, "%s: invalid cmd param\n",
+ CMD_SET_GRIP_MODE);
+ goto exit;
+ }
+ if (kstrtos32(p, 10, &cmd_val)) {
+ index = sprintf(rbuf, "%s: invalid cmd param\n",
+ CMD_SET_GRIP_MODE);
+ goto exit;
+ }
+ goodix_set_custom_mode(GRIP_FUNC, cmd_val);
+ goto exit;
+ }
+
if (!strncmp(p, CMD_SET_PALM_MODE, strlen(CMD_SET_PALM_MODE))) {
rbuf = kzalloc(SHORT_SIZE, GFP_KERNEL);
token = strsep(&p, ",");