• Nick Dyer's avatar
    Input: atmel_mxt_ts - fix the firmware update · 068bdb67
    Nick Dyer authored
    The automatic update mechanism will trigger an update if the
    info block CRCs are different between maxtouch configuration
    file (maxtouch.cfg) and chip.
    
    The driver compared the CRCs without retrieving the chip CRC,
    resulting always in a failure and firmware flashing action
    triggered. Fix this issue by retrieving the chip info block
    CRC before the check.
    
    Note that this solution has the benefit that by reading the
    information block and the object table into a contiguous region
    of memory, we can verify the checksum at probe time. This means
    we make sure that we are indeed talking to a chip that supports
    object protocol correctly.
    
    Using this patch on a kevin chromebook, the touchscreen and
    touchpad drivers are able to match the CRC:
    
      atmel_mxt_ts 3-004b: Family: 164 Variant: 14 Firmware V2.3.AA Objects: 40
      atmel_mxt_ts 5-004a: Family: 164 Variant: 17 Firmware V2.0.AA Objects: 31
      atmel_mxt_ts 3-004b: Resetting device
      atmel_mxt_ts 5-004a: Resetting device
      atmel_mxt_ts 3-004b: Config CRC 0x573E89: OK
      atmel_mxt_ts 3-004b: Touchscreen size X4095Y2729
      input: Atmel maXTouch Touchscreen as /devices/platform/ff130000.i2c/i2c-3/3-004b/input/input5
      atmel_mxt_ts 5-004a: Config CRC 0x0AF6BA: OK
      atmel_mxt_ts 5-004a: Touchscreen size X1920Y1080
      input: Atmel maXTouch Touchpad as /devices/platform/ff140000.i2c/i2c-5/5-004a/input/input6
    Signed-off-by: default avatarNick Dyer <nick.dyer@shmanahar.org>
    Acked-by: default avatarBenson Leung <bleung@chromium.org>
    [Ezequiel: minor patch massage]
    Signed-off-by: default avatarEzequiel Garcia <ezequiel@collabora.com>
    Tested-by: default avatarSebastian Reichel <sebastian.reichel@collabora.co.uk>
    Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
    068bdb67
atmel_mxt_ts.c 76.9 KB