summaryrefslogtreecommitdiff
path: root/goodix_ts_utils.c
diff options
context:
space:
mode:
authorWendly Li <wendlyli@google.com>2022-05-03 06:11:55 +0000
committerWendly Li <wendlyli@google.com>2022-05-06 05:22:57 +0000
commite2758577ef0cf2c03f2db83d2adff4a0725dcaf9 (patch)
treed142f654ed39dcf6719ed99cbe3cfa9758cfa925 /goodix_ts_utils.c
parent38edba55c1917241b0dabff069082a3b5f48d5bc (diff)
downloadgoodix_touch-e2758577ef0cf2c03f2db83d2adff4a0725dcaf9.tar.gz
goodix: Fix get fw version failed
Bug: 229036434 Test: Check "while true; do touchpanel getversion; done" Change-Id: I0484a9d7c1d055dffc896dbbaf17ac0005a403d1 Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_ts_utils.c')
-rw-r--r--goodix_ts_utils.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/goodix_ts_utils.c b/goodix_ts_utils.c
index ff6dafb..1d24cea 100644
--- a/goodix_ts_utils.c
+++ b/goodix_ts_utils.c
@@ -69,14 +69,16 @@ int checksum_cmp(const u8 *data, int size, int mode)
u32 cal_checksum = 0;
u32 r_checksum = 0;
u32 i;
+ bool is_valid = !is_risk_data(data, size);
if (mode == CHECKSUM_MODE_U8_LE) {
if (size < 2)
return 1;
for (i = 0; i < size - 2; i++)
cal_checksum += data[i];
+ cal_checksum &= 0xFFFF;
r_checksum = data[size - 2] + (data[size - 1] << 8);
- return (cal_checksum & 0xFFFF) == r_checksum ? 0 : 1;
+ return cal_checksum == r_checksum && is_valid ? 0 : 1;
}
if (size < 4)
@@ -85,7 +87,7 @@ int checksum_cmp(const u8 *data, int size, int mode)
cal_checksum += data[i] + (data[i + 1] << 8);
r_checksum = data[size - 4] + (data[size - 3] << 8) +
(data[size - 2] << 16) + (data[size - 1] << 24);
- return cal_checksum == r_checksum ? 0 : 1;
+ return cal_checksum == r_checksum && is_valid ? 0 : 1;
}
/* return 1 if all data is zero or ff