diff options
author | Super Liu <supercjliu@google.com> | 2020-01-02 11:20:23 +0800 |
---|---|---|
committer | Super Liu <supercjliu@google.com> | 2020-01-10 15:23:32 +0800 |
commit | 66fe1726bb7807ebab91039fe082a7b9c3740c7d (patch) | |
tree | 86a286fdd93bc547ac7f01f6b5af7f77384b3bd8 | |
parent | 86db2eb25d9d52b2fad4052087ea188a114ee8aa (diff) | |
download | sec_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.c | 56 |
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); |