• Daniel Kurtz's avatar
    Input: atmel_mxt_ts - cache T9 reportid range when reading object table · 333e5a9a
    Daniel Kurtz authored
    Streamline interrupt processing by caching the T9 reportid range when
    first reading the object table.
    
    In the process, refactor reading the object descriptor table.
    First, since the object_table entries are now exactly the same layout
    in device memory and in the driver, allocate an appropriately sized
    array and fetch the entire table directly into it in a single i2c
    transaction.  Since a 6 byte table object requires 10 bytes to read,
    doing this dramatically reduces overhead.
    
    Note: The cached T9 reportid's are initialized to 0, which is an invalid
    reportid.  Thus, the checks in the interrupt handler will always fail for
    devices that do not support the T9 object.  Therefore, after doing a
    firmware update, the old object table is destroyed and all cached object
    values are reset to 0, before reading the new object table, in case
    the new firmware does not have the old objects.
    
    This patch tested on an MXT224E.
    Signed-off-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
    Signed-off-by: default avatarHenrik Rydberg <rydberg@euromail.se>
    333e5a9a
atmel_mxt_ts.c 29.2 KB