diff options
author | Super Liu <supercjliu@google.com> | 2021-02-19 09:39:15 +0800 |
---|---|---|
committer | Super Liu <supercjliu@google.com> | 2021-02-19 09:39:15 +0800 |
commit | c0563e7626850394fdab97fb7d987cb8ad3720e2 (patch) | |
tree | 253ad748fc390ee943b566394482151e736565aa | |
parent | b8540bc7fa198ff26917dc05c2873e253598bc9d (diff) | |
parent | be6ba854f8a96a4c820db65715747d711e2e80b4 (diff) | |
download | sec_touch-c0563e7626850394fdab97fb7d987cb8ad3720e2.tar.gz |
Merge branch 'android-gs-pixel-mainline' into android-gs-pixel-5.10
Change-Id: Ibb1d3d2df5a9772f948278f192ace81cc2cca328
-rw-r--r-- | sec_ts.c | 150 | ||||
-rw-r--r-- | sec_ts.h | 54 | ||||
-rw-r--r-- | sec_ts_fn.c | 2 | ||||
-rw-r--r-- | sec_ts_fw.c | 4 |
4 files changed, 128 insertions, 82 deletions
@@ -2240,6 +2240,90 @@ static void sec_ts_offload_set_running(struct sec_ts_data *ts, bool running) #endif /* CONFIG_TOUCHSCREEN_OFFLOAD */ + +static void sec_ts_read_vendor_event(struct sec_ts_data *ts, + struct sec_ts_event_status *p_event_status) +{ + if (p_event_status->stype == + TYPE_STATUS_EVENT_VENDOR_INFO) { + + struct sec_ts_event_hopping *p_hopping_event; + + u8 status_id = + p_event_status->status_id; + u8 status_data_1 = + p_event_status->status_data_1; + u8 status_data_2 = + p_event_status->status_data_2; + + switch (status_id) { + case SEC_TS_EVENT_STATUS_ID_HOPPING: + p_hopping_event = + (struct sec_ts_event_hopping *)p_event_status; + + input_info(true, + &ts->client->dev, + "STATUS: hopping %d -> %d by %d with lvl %#x %#x\n", + p_hopping_event->prev_id, + p_hopping_event->id, + p_hopping_event->cause, + p_hopping_event->noise_lvl[0], + p_hopping_event->noise_lvl[1]); + break; + + case SEC_TS_EVENT_STATUS_ID_REPORT_RATE: + if (ts->debug) + input_info(true, + &ts->client->dev, + "STATUS: rate %d -> %d\n", + status_data_2, status_data_1); + break; + + case SEC_TS_EVENT_STATUS_ID_WLC: + input_info(true, + &ts->client->dev, + "STATUS: wlc mode change to %x\n", + status_data_1); + break; + + case SEC_TS_EVENT_STATUS_ID_NOISE: + input_info(true, + &ts->client->dev, + "STATUS: noise mode change to %x\n", + status_data_1); + break; + + case SEC_TS_EVENT_STATUS_ID_GRIP: + input_info(true, + &ts->client->dev, + "STATUS: detect grip %s!\n", + (status_data_1) ? + "enter" : "leave"); + break; + + case SEC_TS_EVENT_STATUS_ID_PALM: + input_info(true, + &ts->client->dev, + "STATUS: detect palm!\n"); + break; + + default: + break; + } + } else { + input_info(true, &ts->client->dev, + "STATUS: %#x %#x %#x %#x %#x %#x %#x %#x\n", + p_event_status->data[0], + p_event_status->data[1], + p_event_status->data[2], + p_event_status->data[3], + p_event_status->data[4], + p_event_status->data[5], + p_event_status->data[6], + p_event_status->data[7]); + } +} + #define MAX_EVENT_COUNT 32 static void sec_ts_read_event(struct sec_ts_data *ts) { @@ -2297,7 +2381,7 @@ static void sec_ts_read_event(struct sec_ts_data *ts) return; } - if (ts->temp == 0x01) + if (ts->debug == 0x01) input_info(true, &ts->client->dev, "ONE: %02X %02X %02X %02X %02X %02X %02X %02X\n", read_event_buff[0][0], read_event_buff[0][1], @@ -2346,7 +2430,7 @@ static void sec_ts_read_event(struct sec_ts_data *ts) event_buff = read_event_buff[curr_pos]; event_id = event_buff[0] & 0x3; - if (ts->temp == 0x01) + if (ts->debug == 0x01) input_info(true, &ts->client->dev, "ALL: %02X %02X %02X %02X %02X %02X %02X %02X\n", event_buff[0], event_buff[1], event_buff[2], @@ -2358,66 +2442,8 @@ static void sec_ts_read_event(struct sec_ts_data *ts) p_event_status = (struct sec_ts_event_status *)event_buff; - /* tchsta == 0 && ttype == 0 && eid == 0 : buffer empty - **/ - if (p_event_status->stype > 0) { - /* Demote 'vendor' messages */ - if (p_event_status->stype == - TYPE_STATUS_EVENT_VENDOR_INFO) { - u8 status_id = - p_event_status->status_id; - u8 status_data_1 = - p_event_status->status_data_1; - - input_dbg(true, &ts->client->dev, - "%s: STATUS %x %x %x %x %x %x %x %x\n", - __func__, event_buff[0], - event_buff[1], event_buff[2], - event_buff[3], event_buff[4], - event_buff[5], event_buff[6], - event_buff[7]); - - switch (status_id) { - case SEC_TS_EVENT_STATUS_ID_WLC: - input_info(true, - &ts->client->dev, - "STATUS: wlc mode change to %x\n", - status_data_1); - break; - - case SEC_TS_EVENT_STATUS_ID_NOISE: - input_info(true, - &ts->client->dev, - "STATUS: noise mode change to %x\n", - status_data_1); - break; - - case SEC_TS_EVENT_STATUS_ID_GRIP: - input_info(true, - &ts->client->dev, - "STATUS: detect grip %s!\n", - (status_data_1) ? - "enter" : "leave"); - break; - - case SEC_TS_EVENT_STATUS_ID_PALM: - input_info(true, - &ts->client->dev, - "STATUS: detect palm!\n"); - break; - - default: - break; - } - } else - input_info(true, &ts->client->dev, - "%s: STATUS %x %x %x %x %x %x %x %x\n", - __func__, event_buff[0], - event_buff[1], event_buff[2], - event_buff[3], event_buff[4], - event_buff[5], event_buff[6], - event_buff[7]); - } + if (p_event_status->stype) + sec_ts_read_vendor_event(ts, p_event_status); if ((p_event_status->stype == TYPE_STATUS_EVENT_INFO) && @@ -139,7 +139,6 @@ #define SEC_TS_DEFAULT_FW_NAME "tsp_sec/sec_hero.fw" #define SEC_TS_DEFAULT_BL_NAME "tsp_sec/s6smc41_blupdate_img_REL.bin" #define SEC_TS_DEFAULT_PARA_NAME "tsp_sec/s6smc41_para_REL_DGA0_V0106_150114_193317.bin" -#define SEC_TS_DEFAULT_UMS_FW "/sdcard/Firmware/TSP/lsi.bin" #define SEC_TS_DEFAULT_FFU_FW "ffu_tsp.bin" #define SEC_TS_MAX_FW_PATH 64 #define SEC_TS_FW_BLK_SIZE_MAX (512) @@ -748,24 +747,31 @@ struct sec_ts_gesture_status { /* status id for sec_ts event */ -#define SEC_TS_EVENT_STATUS_ID_NOISE 0x64 -#define SEC_TS_EVENT_STATUS_ID_WLC 0x66 -#define SEC_TS_EVENT_STATUS_ID_GRIP 0x69 -#define SEC_TS_EVENT_STATUS_ID_PALM 0x70 +#define SEC_TS_EVENT_STATUS_ID_HOPPING 0x33 +#define SEC_TS_EVENT_STATUS_ID_REPORT_RATE 0x34 +#define SEC_TS_EVENT_STATUS_ID_NOISE 0x64 +#define SEC_TS_EVENT_STATUS_ID_WLC 0x66 +#define SEC_TS_EVENT_STATUS_ID_GRIP 0x69 +#define SEC_TS_EVENT_STATUS_ID_PALM 0x70 /* 8 byte */ struct sec_ts_event_status { - u8 eid:2; - u8 stype:4; - u8 sf:2; - u8 status_id; - u8 status_data_1; - u8 status_data_2; - u8 status_data_3; - u8 status_data_4; - u8 status_data_5; - u8 left_event_5_0:6; - u8 reserved_2:2; + union { + struct { + u8 eid:2; + u8 stype:4; + u8 sf:2; + u8 status_id; + u8 status_data_1; + u8 status_data_2; + u8 status_data_3; + u8 status_data_4; + u8 status_data_5; + u8 left_event_5_0:6; + u8 reserved_2:2; + } __packed; + u8 data[8]; + }; } __packed; /* 8 byte */ @@ -785,6 +791,20 @@ struct sec_ts_event_coordinate { u8 ttype_1_0:2; } __packed; +/* 8 byte */ +struct sec_ts_event_hopping { + u8 eid:2; + u8 stype:4; + u8 sf:2; + u8 event_id; + u8 id:4; + u8 cause: 4; + u8 prev_id; + u8 noise_lvl[2]; + u8 reserved_6; + u8 reserved_7; +} __packed; + /* not fixed */ struct sec_ts_coordinate { u8 id; @@ -996,7 +1016,7 @@ struct sec_ts_data { short pressure_right; u8 pressure_user_level; #endif - int temp; + int debug; int fs_postcal_mean; diff --git a/sec_ts_fn.c b/sec_ts_fn.c index fae9f15..26771a6 100644 --- a/sec_ts_fn.c +++ b/sec_ts_fn.c @@ -8085,7 +8085,7 @@ static void debug(void *device_data) sec_cmd_set_default_result(sec); - ts->temp = sec->cmd_param[0]; + ts->debug = sec->cmd_param[0]; snprintf(buff, sizeof(buff), "%s", "OK"); sec->cmd_state = SEC_CMD_STATUS_OK; diff --git a/sec_ts_fw.c b/sec_ts_fw.c index 138856c..54e0cd5 100644 --- a/sec_ts_fw.c +++ b/sec_ts_fw.c @@ -17,7 +17,7 @@ enum { BUILT_IN = 0, - UMS, + UMS, /* deprecated */ BL, FFU, }; @@ -1429,7 +1429,7 @@ int sec_ts_firmware_update_on_hidden_menu(struct sec_ts_data *ts, * argument represent what is source of firmware like below. * * 0 : [BUILT_IN] Getting firmware which is for user. - * 1 : [UMS] Getting firmware from sd card. + * 1 : (deprecated) [UMS] Getting firmware from sd card. * 2 : none * 3 : [FFU] Getting firmware from air. */ |