diff options
author | Wendly Li <wendlyli@google.com> | 2023-01-12 10:06:03 +0000 |
---|---|---|
committer | Wendly Li <wendlyli@google.com> | 2023-03-07 13:05:56 +0000 |
commit | 2bd13df74a08330dc9d781b113c4cd1e80cfa097 (patch) | |
tree | 32a023ff14d240e32758939e03f117d8f21465e6 | |
parent | 899bce3ec61d0699d62f3ce265590ae077167452 (diff) | |
download | goodix_touch-2bd13df74a08330dc9d781b113c4cd1e80cfa097.tar.gz |
touch/goodix: Import v1.2.3 driver
Bug: 269560367
Test: Check coordinate filter works properly
Change-Id: I3e2da8cadd2ee07c3e3bcb4b69189559f63796de
Signed-off-by: Wendly Li <wendlyli@google.com>
-rw-r--r-- | goodix_brl_hw.c | 3 | ||||
-rw-r--r-- | goodix_ts_core.c | 11 | ||||
-rw-r--r-- | goodix_ts_core.h | 18 | ||||
-rw-r--r-- | goodix_ts_proc.c | 31 |
4 files changed, 52 insertions, 11 deletions
diff --git a/goodix_brl_hw.c b/goodix_brl_hw.c index 505e8ec..435658a 100644 --- a/goodix_brl_hw.c +++ b/goodix_brl_hw.c @@ -1242,7 +1242,8 @@ static int brl_event_handler( memset(ts_event, 0, sizeof(*ts_event)); ts_event->event_type = EVENT_INVALID; - ts_event->clear_count = event_data->clear_count; + ts_event->clear_count1 = event_data->clear_count1; + ts_event->clear_count2 = event_data->clear_count2; /* read status event */ if (event_data->status_changed) hw_ops->read(cd, 0x1021C, (u8 *)&ts_event->status_data, diff --git a/goodix_ts_core.c b/goodix_ts_core.c index 051b22c..fae111d 100644 --- a/goodix_ts_core.c +++ b/goodix_ts_core.c @@ -1838,10 +1838,13 @@ void goodix_ts_report_status(struct goodix_ts_core *core_data, st->grip_change, st->noise_lv_change, st->palm_change, st->soft_reset, st->base_update, st->hop_change, st->water_change); - ts_info("water_status[%d] before_factorA[%d] after_factorA[%d] base_update_type[0x%x] soft_reset_type[0x%x] palm_status[%d] noise_lv[%d] grip_type[%d] event_id[%d] clear_count[%d]", - st->water_sta, st->before_factorA, st->after_factorA, - st->base_update_type, st->soft_reset_type, st->palm_sta, - st->noise_lv, st->grip_type, st->event_id, ts_event->clear_count); + ts_info("water_status[%d] before_factorA[%d] after_factorA[%d]" \ + " base_update_type[0x%x] soft_reset_type[0x%x] palm_status[%d]" \ + " noise_lv[%d] grip_type[%d] event_id[%d] clear_count1[%d]" \ + " clear_count2[%d]", st->water_sta, st->before_factorA, + st->after_factorA, st->base_update_type, st->soft_reset_type, + st->palm_sta, st->noise_lv, st->grip_type, st->event_id, + ts_event->clear_count1, ts_event->clear_count2); #if IS_ENABLED(CONFIG_GOOG_TOUCH_INTERFACE) if (st->soft_reset) goog_notify_fw_status_changed(core_data->gti, GTI_FW_STATUS_RESET, diff --git a/goodix_ts_core.h b/goodix_ts_core.h index 19f6930..fc7672e 100644 --- a/goodix_ts_core.h +++ b/goodix_ts_core.h @@ -56,7 +56,7 @@ #define GOODIX_CORE_DRIVER_NAME "goodix_ts" #define GOODIX_PEN_DRIVER_NAME "goodix_ts,pen" -#define GOODIX_DRIVER_VERSION "v1.2.2" +#define GOODIX_DRIVER_VERSION "v1.2.3" #define GOODIX_MAX_TOUCH 10 #define GOODIX_PEN_MAX_PRESSURE 4096 #define GOODIX_MAX_PEN_KEY 2 @@ -505,13 +505,16 @@ struct goodix_pen_data { /* * struct goodix_ts_event - touch event struct + * @clear_count1: clear count for old firmware + * @clear_count2: clear count for latest firmware * @event_type: touch event type, touch data or * request event * @event_data: event data */ struct goodix_ts_event { enum ts_event_type event_type; - u8 clear_count; + u8 clear_count1; + u8 clear_count2; u8 fp_flag; /* finger print DOWN flag */ u8 request_code; /* represent the request type */ u8 request_data[GOODIX_REQUEST_DATA_LEN]; @@ -530,7 +533,10 @@ struct goodix_ts_event_data { u8 int_count; u8 reserved3; u8 reserved4 : 4; - u8 clear_count : 4; + u8 clear_count1 : 4; + u8 reserved5; + u8 reserved6 : 4; + u8 clear_count2 : 4; }; struct goodix_ts_request_event_data { @@ -562,8 +568,10 @@ struct goodix_ts_touch_event_data { u8 reset_int : 1; u8 custom_coor_info_flag : 1; u8 reserved3 : 3; - u8 clear_count : 4; - u16 reserved4; + u8 clear_count1 : 4; + u8 reserved4; + u8 reserved5 : 4; + u8 clear_count2 : 4; u16 checksum; u8 data[0]; }; diff --git a/goodix_ts_proc.c b/goodix_ts_proc.c index 90031e9..fb3cf27 100644 --- a/goodix_ts_proc.c +++ b/goodix_ts_proc.c @@ -50,6 +50,7 @@ #define CMD_GET_DUMP_LOG "get_dump_log" #define CMD_GET_STYLUS_DATA "get_stylus_data" #define CMD_SET_FREQ_INDEX "set_freq_index" +#define CMD_DISABLE_FILTER "disable_filter" char *cmd_list[] = { CMD_FW_UPDATE, CMD_AUTO_TEST, CMD_OPEN_TEST, CMD_SELF_OPEN_TEST, CMD_NOISE_TEST, CMD_AUTO_NOISE_TEST, CMD_SHORT_TEST, @@ -65,7 +66,7 @@ char *cmd_list[] = { CMD_FW_UPDATE, CMD_AUTO_TEST, CMD_OPEN_TEST, CMD_SET_GRIP_MODE, CMD_SET_PALM_MODE, CMD_SET_NOISE_MODE, CMD_SET_WATER_MODE, CMD_SET_HEATMAP, CMD_GET_SELF_COMPEN, CMD_SET_REPORT_RATE, CMD_GET_DUMP_LOG, CMD_GET_STYLUS_DATA, - CMD_SET_FREQ_INDEX, NULL }; + CMD_SET_FREQ_INDEX, CMD_DISABLE_FILTER, NULL }; /* test limits keyword */ #define CSV_TP_SPECIAL_RAW_MIN "special_raw_min" @@ -3161,6 +3162,17 @@ static void goodix_set_freq_index(int freq) cd->hw_ops->send_cmd(cd, &temp_cmd); } +static void goodix_disable_coor_filter(int val) +{ + struct goodix_ts_cmd temp_cmd; + + index = sprintf(rbuf, "disable coordinate filter %d\n", val); + temp_cmd.len = 5; + temp_cmd.cmd = 0xCA; + temp_cmd.data[0] = val ? 1 : 0; + cd->hw_ops->send_cmd(cd, &temp_cmd); +} + static ssize_t driver_test_write( struct file *file, const char __user *buf, size_t count, loff_t *pos) { @@ -4047,6 +4059,23 @@ static ssize_t driver_test_write( goto exit; } + if (!strncmp(p, CMD_DISABLE_FILTER, strlen(CMD_DISABLE_FILTER))) { + rbuf = kzalloc(SHORT_SIZE, GFP_KERNEL); + token = strsep(&p, ","); + if (!token || !p) { + index = sprintf(rbuf, "%s: invalid cmd param\n", + CMD_DISABLE_FILTER); + goto exit; + } + if (kstrtos32(p, 10, &cmd_val)) { + index = sprintf(rbuf, "%s: invalid cmd param\n", + CMD_DISABLE_FILTER); + goto exit; + } + goodix_disable_coor_filter(cmd_val); + goto exit; + } + rbuf = kzalloc(SHORT_SIZE, GFP_KERNEL); if (!rbuf) { ts_err("failed to alloc rbuf"); |