diff options
author | Wendly Li <wendlyli@google.com> | 2022-07-07 07:49:17 +0000 |
---|---|---|
committer | Wendly Li <wendlyli@google.com> | 2022-07-21 05:30:40 +0000 |
commit | e788d534c077d25514338001eae58ce4918649bc (patch) | |
tree | 0e92ed76e0645d6a52bd7da8d486edaba5ed05f2 /goodix_ts_core.h | |
parent | 178ef0cefe5c2e2bc636a00fad7250cb69438ad5 (diff) | |
download | goodix_touch-e788d534c077d25514338001eae58ce4918649bc.tar.gz |
touch/goodix: Support finger leaves event for UDFPS.
Bug: 214118944
Bug: 239381635
Test: LHBM is off right after LPTW finger leaves.
Change-Id: I95615fc8b75d15db41765d9320aa68d9d016e1a2
Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_ts_core.h')
-rw-r--r-- | goodix_ts_core.h | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/goodix_ts_core.h b/goodix_ts_core.h index 74d1ec0..1cdb803 100644 --- a/goodix_ts_core.h +++ b/goodix_ts_core.h @@ -68,6 +68,12 @@ #define GOODIX_RETRY_5 5 #define GOODIX_RETRY_10 10 +#define GOODIX_GESTURE_UNKNOWN 0x00 +#define GOODIX_GESTURE_DOUBLE_TAP 0xCC +#define GOODIX_GESTURE_SINGLE_TAP 0x4C +#define GOODIX_GESTURE_FOD_DOWN 0x46 +#define GOODIX_GESTURE_FOD_UP 0x55 + #define TS_DEFAULT_FIRMWARE "goodix_firmware.bin" #define TS_DEFAULT_CFG_BIN "goodix_cfg_group.bin" @@ -138,6 +144,15 @@ enum PINCTRL_MODE { PINCTRL_MODE_SUSPEND, }; +enum raw_scan_mode : u8 { + RAW_SCAN_MODE_AUTO = 0, + RAW_SCAN_MODE_NORMAL_ACTIVE, + RAW_SCAN_MODE_NORMAL_IDLE, + RAW_SCAN_MODE_LOW_POWER_ACTIVE, + RAW_SCAN_MODE_LOW_POWER_IDLE, + RAW_SCAN_MODE_SLEEP, +}; + #define MAX_SCAN_FREQ_NUM 8 #define MAX_SCAN_RATE_NUM 8 #define MAX_FREQ_NUM_STYLUS 8 @@ -315,6 +330,8 @@ struct goodix_ts_board_data { unsigned int panel_max_y; unsigned int panel_max_w; /*major and minor*/ unsigned int panel_max_p; /*pressure*/ + unsigned int udfps_x; + unsigned int udfps_y; bool pen_enable; bool sleep_enable; @@ -424,6 +441,13 @@ struct goodix_touch_data { struct goodix_ts_coords coords[GOODIX_MAX_TOUCH]; }; +/* gesture event data */ +struct goodix_gesture_data { + u8 gesture_type; + int touches; + u8 data[GOODIX_GESTURE_DATA_LEN]; +}; + struct goodix_ts_key { int status; int code; @@ -444,8 +468,7 @@ struct goodix_ts_event { enum ts_event_type event_type; u8 fp_flag; /* finger print DOWN flag */ u8 request_code; /* represent the request type */ - u8 gesture_type; - u8 gesture_data[GOODIX_GESTURE_DATA_LEN]; + struct goodix_gesture_data gesture_data; struct goodix_touch_data touch_data; struct goodix_pen_data pen_data; struct goodix_status_data status_data; @@ -509,7 +532,7 @@ struct goodix_ts_gesture_event_data { u8 gesture_type; u8 reserved4; u16 checksum; - u8 data[0]; + u8 data[GOODIX_GESTURE_DATA_LEN]; }; struct goodix_mutual_data { @@ -584,7 +607,8 @@ struct goodix_ts_hw_ops { int (*get_capacitance_data)( struct goodix_ts_core *cd, struct ts_rawdata_info *info); int (*ping)(struct goodix_ts_core *cd); - int (*set_scan_mode)(struct goodix_ts_core *cd, int mdoe); + int (*get_scan_mode)(struct goodix_ts_core *cd, enum raw_scan_mode* mode); + int (*set_scan_mode)(struct goodix_ts_core *cd, enum raw_scan_mode mode); int (*set_continuously_report_enabled)( struct goodix_ts_core *cd, bool enabled); int (*set_heatmap_enabled)(struct goodix_ts_core *cd, bool enabled); @@ -639,6 +663,10 @@ struct goodix_ts_core { struct mutex cmd_lock; /* TODO counld we remove this from core data? */ struct goodix_ts_event ts_event; + struct workqueue_struct *event_wq; + struct delayed_work monitor_gesture_work; + ktime_t gesture_down_timeout; + ktime_t gesture_up_timeout; /* every pointer of this array represent a kind of config */ struct goodix_ic_config *ic_configs[GOODIX_MAX_CONFIG_GROUP]; @@ -845,6 +873,7 @@ void goodix_tools_exit(void); int driver_test_proc_init(struct goodix_ts_core *core_data); void driver_test_proc_remove(void); int goodix_do_inspect(struct goodix_ts_core *cd, struct ts_rawdata_info *info); -void goodix_ts_report_status(struct goodix_ts_event *ts_event); +void goodix_ts_report_status(struct goodix_ts_core *core_data, + struct goodix_ts_event *ts_event); #endif |