summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSuper Liu <supercjliu@google.com>2020-01-02 11:20:23 +0800
committerSuper Liu <supercjliu@google.com>2020-01-10 15:23:32 +0800
commit66fe1726bb7807ebab91039fe082a7b9c3740c7d (patch)
tree86a286fdd93bc547ac7f01f6b5af7f77384b3bd8
parent86db2eb25d9d52b2fad4052087ea188a114ee8aa (diff)
downloadsec_touch-66fe1726bb7807ebab91039fe082a7b9c3740c7d.tar.gz
sec_touch: support mis-cal check for auto-update FW with force-cal
Bug: 145262526 Change-Id: I5d80c2907edceb4079c4a9762bc56cce50368dc9 Signed-off-by: Super Liu <supercjliu@google.com>
-rw-r--r--sec_ts_fw.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/sec_ts_fw.c b/sec_ts_fw.c
index 2673dbb..350c3dc 100644
--- a/sec_ts_fw.c
+++ b/sec_ts_fw.c
@@ -849,6 +849,62 @@ static int sec_ts_firmware_update(struct sec_ts_data *ts, const u8 *data, size_t
"%s: fail to write PRESSURE CAL!\n",
__func__);
#endif
+
+ /* check mis-cal */
+ if (ts->plat_data->mis_cal_check) {
+ u8 buff[2];
+ u8 mis_cal_data;
+
+ buff[0] = STATE_MANAGE_OFF;
+ ret = ts->sec_ts_write(ts,
+ SEC_TS_CMD_STATEMANAGE_ON, buff, 1);
+ if (ret < 0)
+ input_err(true, &ts->client->dev,
+ "%s: mis_cal_check error[1] ret: %d\n",
+ __func__, ret);
+
+ buff[0] = TOUCH_SYSTEM_MODE_TOUCH;
+ buff[1] = TOUCH_MODE_STATE_TOUCH;
+ ret = ts->sec_ts_write(ts,
+ SEC_TS_CMD_CHG_SYSMODE, buff, 2);
+ if (ret < 0)
+ input_err(true, &ts->client->dev,
+ "%s: mis_cal_check error[2] ret: %d\n",
+ __func__, ret);
+
+ input_info(true, &ts->client->dev,
+ "%s: mis_cal check\n", __func__);
+ ret = ts->sec_ts_write(ts,
+ SEC_TS_CMD_MIS_CAL_CHECK, NULL, 0);
+ if (ret < 0)
+ input_err(true, &ts->client->dev,
+ "%s: mis_cal_check error[3] ret: %d\n",
+ __func__, ret);
+ sec_ts_delay(200);
+
+ ret = ts->sec_ts_read(ts,
+ SEC_TS_CMD_MIS_CAL_READ,
+ &mis_cal_data, 1);
+ if (ret < 0)
+ input_err(true, &ts->client->dev,
+ "%s: fail!, %d\n",
+ __func__, ret);
+ else
+ input_info(true, &ts->client->dev,
+ "%s: mis_cal data : %d\n",
+ __func__, mis_cal_data);
+
+ buff[0] = STATE_MANAGE_ON;
+ ret = ts->sec_ts_write(ts,
+ SEC_TS_CMD_STATEMANAGE_ON, buff, 1);
+ if (ret < 0)
+ input_err(true, &ts->client->dev,
+ "%s: mis_cal_check error[4] ret: %d\n",
+ __func__, ret);
+ }
+
+ /* Update calibration report */
+ sec_ts_read_calibration_report(ts);
} else
input_info(true, &ts->client->dev, "%s: No calibration: restore_cal = %d\n",
__func__, restore_cal);