summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuper Liu <supercjliu@google.com>2021-02-19 09:39:15 +0800
committerSuper Liu <supercjliu@google.com>2021-02-19 09:39:15 +0800
commitc0563e7626850394fdab97fb7d987cb8ad3720e2 (patch)
tree253ad748fc390ee943b566394482151e736565aa
parentb8540bc7fa198ff26917dc05c2873e253598bc9d (diff)
parentbe6ba854f8a96a4c820db65715747d711e2e80b4 (diff)
downloadsec_touch-c0563e7626850394fdab97fb7d987cb8ad3720e2.tar.gz
Merge branch 'android-gs-pixel-mainline' into android-gs-pixel-5.10
Change-Id: Ibb1d3d2df5a9772f948278f192ace81cc2cca328
-rw-r--r--sec_ts.c150
-rw-r--r--sec_ts.h54
-rw-r--r--sec_ts_fn.c2
-rw-r--r--sec_ts_fw.c4
4 files changed, 128 insertions, 82 deletions
diff --git a/sec_ts.c b/sec_ts.c
index fc08135..77b68eb 100644
--- a/sec_ts.c
+++ b/sec_ts.c
@@ -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) &&
diff --git a/sec_ts.h b/sec_ts.h
index 9911875..c459b88 100644
--- a/sec_ts.h
+++ b/sec_ts.h
@@ -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.
*/