diff options
author | Wendly Li <wendlyli@google.com> | 2022-05-03 06:11:55 +0000 |
---|---|---|
committer | Wendly Li <wendlyli@google.com> | 2022-05-06 05:22:57 +0000 |
commit | e2758577ef0cf2c03f2db83d2adff4a0725dcaf9 (patch) | |
tree | d142f654ed39dcf6719ed99cbe3cfa9758cfa925 /goodix_ts_utils.c | |
parent | 38edba55c1917241b0dabff069082a3b5f48d5bc (diff) | |
download | goodix_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.c | 6 |
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 |