Input: edt-ft5x06 - unify the crc check
authorDario Binacchi <dario.binacchi@amarulasolutions.com>
Mon, 3 Apr 2023 04:36:33 +0000 (21:36 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 3 Apr 2023 04:38:03 +0000 (21:38 -0700)
With this patch, the CRC is always verified by the same function, even in
the case of accessing registers where the number of bytes is minimal.

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Link: https://lore.kernel.org/r/20230402200951.1032513-9-dario.binacchi@amarulasolutions.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/edt-ft5x06.c

index 8aae4c1e6b737451866d33fc3843457c609709c5..fdb32e3591be9806c7771394cf6030aa5574f7be 100644 (file)
@@ -240,13 +240,10 @@ static int edt_M06_i2c_read(void *context, const void *reg_buf, size_t reg_size,
                if (!edt_ft5x06_ts_check_crc(tsdata, val_buf, val_size))
                        return -EIO;
        } else if (reg_read) {
-               u8 crc = wbuf[0] ^ wbuf[1] ^ rbuf[0];
-
-               if (crc != rbuf[1]) {
-                       dev_err(dev, "crc error: 0x%02x expected, got 0x%02x\n",
-                               crc, rbuf[1]);
+               wbuf[2] = rbuf[0];
+               wbuf[3] = rbuf[1];
+               if (!edt_ft5x06_ts_check_crc(tsdata, wbuf, 4))
                        return -EIO;
-               }
 
                *((u8 *)val_buf) = rbuf[0];
        }