summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSivasankari <Sivasankari.muthusamy@st.com>2019-05-28 18:51:45 +0800
committerSivasankari <Sivasankari.muthusamy@st.com>2019-05-30 19:01:33 +0800
commit61836078c67ce9de7b0400b4621385841289dc8d (patch)
tree804e36e3d95bbce845b31a3251beb5746ee8b646
parent12b039b01ed2533621ea77220ba35ae4e05c1d25 (diff)
downloadfts_touch_s5-61836078c67ce9de7b0400b4621385841289dc8d.tar.gz
input: touchscreen: stm: Driver version 5.2.16.8
Kernel log info updated to decode the events Signed-off-by: Sivasankari <Sivasankari.muthusamy@st.com> Change-Id: I75242527a6affa44f07e838b790c45ae3a090b9d
-rw-r--r--fts.c265
-rw-r--r--fts.h4
-rw-r--r--fts_lib/ftsSoftware.h13
3 files changed, 245 insertions, 37 deletions
diff --git a/fts.c b/fts.c
index 566d16e..4577aa4 100644
--- a/fts.c
+++ b/fts.c
@@ -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:
diff --git a/fts.h b/fts.h
index 6f857d9..68f8ded 100644
--- a/fts.h
+++ b/fts.h
@@ -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 */