diff options
author | Steve Pfetsch <spfetsch@google.com> | 2019-06-18 14:55:07 -0700 |
---|---|---|
committer | Steve Pfetsch <spfetsch@google.com> | 2019-06-18 14:55:07 -0700 |
commit | 2116a2587544eeff50993ab4e623dc914fb73c26 (patch) | |
tree | 45052ce47df5fcc5af40d38fd01d051b16689530 | |
parent | 031d23279d36b4b4fd712db00ae0059a2af04a34 (diff) | |
parent | 61836078c67ce9de7b0400b4621385841289dc8d (diff) | |
download | fts_touch_s5-2116a2587544eeff50993ab4e623dc914fb73c26.tar.gz |
Merge partner-drops-c2f2 into android-msm-floral-4.14
Merge List:
* 6183607 input: touchscreen: stm: Driver version 5.2.16.8
Bug: 133451980
Change-Id: Ia7d228e0db008b76fd1f701b95f89ef42746e032
Signed-off-by: Steve Pfetsch <spfetsch@google.com>
-rw-r--r-- | fts.c | 265 | ||||
-rw-r--r-- | fts.h | 4 | ||||
-rw-r--r-- | fts_lib/ftsSoftware.h | 13 |
3 files changed, 245 insertions, 37 deletions
@@ -2916,7 +2916,6 @@ static bool fts_enter_pointer_event_handler(struct fts_ts_info *info, unsigned * distance */ break; - case TOUCH_TYPE_INVALID: default: pr_err("%s : Invalid touch type = %d ! No Report...\n", __func__, touchType); @@ -2990,7 +2989,6 @@ static bool fts_leave_pointer_event_handler(struct fts_ts_info *info, unsigned __clear_bit(touchId, &info->touch_id); break; - case TOUCH_TYPE_INVALID: default: pr_err("%s : Invalid touch type = %d ! No Report...\n", __func__, touchType); @@ -3092,6 +3090,8 @@ static bool fts_controller_ready_event_handler(struct fts_ts_info *info, static bool fts_status_event_handler(struct fts_ts_info *info, unsigned char *event) { + u8 grid_touch_status; + switch (event[1]) { case EVT_TYPE_STATUS_ECHO: pr_debug("%s: Echo event of command = %02X %02X %02X %02X %02X %02X\n", @@ -3099,6 +3099,13 @@ static bool fts_status_event_handler(struct fts_ts_info *info, unsigned event[6], event[7]); break; + case EVT_TYPE_STATUS_GPIO_CHAR_DET: + pr_info("%s: GPIO Charger Detect =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], event[5], + event[6], event[7]); + break; + case EVT_TYPE_STATUS_FORCE_CAL: switch (event[2]) { case 0x01: @@ -3136,97 +3143,289 @@ static bool fts_status_event_handler(struct fts_ts_info *info, unsigned event[5], event[6], event[7]); break; + case 0x21: + pr_info("%s: Self touch negative Force cal = %02X" + " %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x22: + pr_info("%s: Self detect frame flatness Force cal =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x23: + pr_info("%s: Self touch frame flatness Force cal =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + case 0x30: - pr_info("%s: Invalid mutual soft Force cal = %02X" + pr_info("%s: Invalid mutual Force cal = %02X" " %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; case 0x31: - pr_info("%s: Invalid self soft Force cal = %02X" - " %02X %02X %02X %02X %02X\n", + pr_info("%s: Invalid differential mutual Force cal =" + " %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; case 0x32: - pr_info("%s: Invalid SS island soft Force cal = %02X" + pr_info("%s: Invalid Self Force cal = %02X" " %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; + case 0x33: + pr_info("%s: Invalid Self island Force cal = %02X" + " %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x34: + pr_info("%s: Invalid Self force touch Force cal =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x35: + pr_info("%s: Mutual frame flatness Force cal =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + default: - pr_info("%s: Force cal = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Force cal = %02X %02X %02X %02X" + " %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); } break; case EVT_TYPE_STATUS_FRAME_DROP: + pr_info("%s: Frame drop = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case EVT_TYPE_STATUS_SS_RAW_SAT: + if (event[2] == 1) + pr_info("%s: SS Raw Saturated = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + else + pr_info("%s: SS Raw No more Saturated = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case EVT_TYPE_STATUS_WATER: switch (event[2]) { + case 0x00: + pr_info("%s: Water Mode Entry by BLD with real" + " raw frame = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + case 0x01: - pr_info("%s: Frame drop noisy frame = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Water Mode Entry by BLD with rom" + " raw frame = %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; case 0x02: - pr_info("%s: Frame drop bad R = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Water Mode Entry by MID with real" + " raw frame = %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; case 0x03: - pr_info("%s: Frame drop invalid processing state = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Water Mode leave by BLD with real" + " raw frame = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x04: + pr_info("%s: Water Mode leave by BLD with rom" + " raw frame = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x05: + pr_info("%s: Water Mode leave by MID with real" + " raw frame = %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; default: - pr_info("%s: Frame drop = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Water Mode = %02X %02X %02X %02X" + " %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); } break; - case EVT_TYPE_STATUS_SS_RAW_SAT: + case EVT_TYPE_STATUS_PRE_WAT_DET: if (event[2] == 1) - pr_info("%s: SS Raw Saturated = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Previous Water entry =" + " %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); else - pr_info("%s: SS Raw No more Saturated = %02X %02X %02X %02X %02X %02X\n", + pr_info("%s: Previous Water leave =" + " %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); break; - case EVT_TYPE_STATUS_WATER: - if (event[2] == 1) - pr_info("%s: Enter Water mode = %02X %02X %02X %02X %02X %02X\n", + case EVT_TYPE_STATUS_NOISE: + pr_info("%s: Noise Status Event = %02X %02X" + " %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], event[5], + event[6], event[7]); + break; + + case EVT_TYPE_STATUS_STIMPAD: + switch (event[2]) { + case 0x00: + pr_debug("%s: Stimpad disable event" + " = %02X %02X %02X %02X %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); - else - pr_info("%s: Exit Water mode = %02X %02X %02X %02X %02X %02X\n", + break; + + case 0x01: + pr_debug("%s: Stimpad enable event" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x02: + pr_debug("%s: Stimpad disable by signature invalid" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x03: + pr_debug("%s: Stimpad disable by nodes count invalid" + " raw frame = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + default: + pr_debug("%s: Stimpad Status = %02X %02X %02X %02X" + " %02X %02X\n", __func__, event[2], event[3], event[4], event[5], event[6], event[7]); + } break; - case EVT_TYPE_STATUS_STIMPAD: - if (event[2] == 0) - pr_info("%s: Stimpad disabled\n", __func__); - else if (event[2] == 1) - pr_info("%s: Stimpad enabled\n", __func__); - else if (event[2] == 2) - pr_info("%s: Stimpad disabled by signature invalid\n", - __func__); - else if (event[2] == 3) - pr_info("%s: Stimpad disabled by nodescount invalid\n", - __func__); - else - pr_info("%s: invalid Stimpad_info(%d)\n", - __func__, event[2]); + case EVT_TYPE_STATUS_NO_TOUCH: + pr_info("%s: No Touch Status Event = %02X %02X" + " %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], event[5], + event[6], event[7]); + break; + + case EVT_TYPE_STATUS_IDLE: + pr_info("%s: Idle Status Event = %02X %02X" + " %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], event[5], + event[6], event[7]); + break; + + case EVT_TYPE_STATUS_PALM_TOUCH: + switch (event[2]) { + case 0x01: + pr_info("%s: Palm block entry event" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x02: + pr_info("%s: Palm block release event" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + default: + pr_info("%s: Palm touch Status = %02X %02X %02X %02X" + " %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + } + break; + + case EVT_TYPE_STATUS_GRIP_TOUCH: + grid_touch_status = (event[2] & 0xF0) >> 4; + switch (grid_touch_status) { + case 0x01: + pr_info("%s: Grip Touch entry event" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x02: + pr_info("%s: Grip Touch release event" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + default: + pr_info("%s: Grip Touch Status = %02X %02X %02X %02X" + " %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + } + break; + + case EVT_TYPE_STATUS_GOLDEN_RAW_VAL: + switch (event[2]) { + case 0x01: + pr_info("%s: Golden Raw Validation Pass" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + case 0x02: + pr_info("%s: Golden Raw Validation Fail" + " = %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + break; + + default: + pr_info("%s: Golden Raw Validation Status =" + " %02X %02X %02X %02X %02X %02X\n", + __func__, event[2], event[3], event[4], + event[5], event[6], event[7]); + } break; default: @@ -52,9 +52,9 @@ */ /* **** CODE CONFIGURATION **** */ #define FTS_TS_DRV_NAME "fts" /* driver name */ -#define FTS_TS_DRV_VERSION "5.2.16.7" /* driver version string +#define FTS_TS_DRV_VERSION "5.2.16.8" /* driver version string * */ -#define FTS_TS_DRV_VER 0x05021007 /* driver version u32 format */ +#define FTS_TS_DRV_VER 0x05021008 /* driver version u32 format */ /* #define DEBUG */ /* /< define to print more logs in the kernel log * and better follow the code flow */ diff --git a/fts_lib/ftsSoftware.h b/fts_lib/ftsSoftware.h index 6139790..c2c8ee4 100644 --- a/fts_lib/ftsSoftware.h +++ b/fts_lib/ftsSoftware.h @@ -388,13 +388,22 @@ typedef enum { #define EVT_TYPE_STATUS_ECHO 0x01 /* /< Echo event, * contain the first 5 bytes of * the FW command sent */ +#define EVT_TYPE_STATUS_GPIO_CHAR_DET 0x02 /*/< Gpio Charger detected */ #define EVT_TYPE_STATUS_FRAME_DROP 0x03 /* /< Some frame was skipped * during the elaboration */ #define EVT_TYPE_STATUS_FORCE_CAL 0x05 /* /< Force Calibration has * triggered */ #define EVT_TYPE_STATUS_WATER 0x06 /* /< Water Mode */ #define EVT_TYPE_STATUS_SS_RAW_SAT 0x07 /* /< Self Sense data saturated */ -#define EVT_TYPE_STATUS_STIMPAD 0x0A /* /< Stimpad status event */ +#define EVT_TYPE_STATUS_PRE_WAT_DET 0x08 /* /< Previous Water Detect* */ +#define EVT_TYPE_STATUS_NOISE 0x09 /* /< Noise Status* */ +#define EVT_TYPE_STATUS_STIMPAD 0x0A /* /< Stimpad Status* */ +#define EVT_TYPE_STATUS_NO_TOUCH 0x0B /* /< No Touch Status* */ +#define EVT_TYPE_STATUS_IDLE 0x0C /* /< Idle Status* */ +#define EVT_TYPE_STATUS_PALM_TOUCH 0x0D /* /< Palm Touch Status* */ +#define EVT_TYPE_STATUS_GRIP_TOUCH 0x0E /* /< Grip Touch Status* */ +#define EVT_TYPE_STATUS_GOLDEN_RAW_VAL 0x0F /* /< Golden Raw + * Validation Status */ /** @} */ @@ -522,7 +531,7 @@ typedef enum { #define TOUCH_TYPE_GLOVE 0x02 /* /< Glove touch */ #define TOUCH_TYPE_STYLUS 0x03 /* /< Stylus touch */ #define TOUCH_TYPE_PALM 0x04 /* /< Palm touch */ -#define TOUCH_TYPE_HOVER 0x05 /* /< Hovering touch */ +#define TOUCH_TYPE_HOVER 0x00 /* /< Hovering touch */ /* Keys code */ #define FTS_KEY_0 0x01 /* /< Key 0 bit */ |