]> git.baikalelectronics.ru Git - kernel.git/commit
Input: atmel_mxt_ts - support wakeup methods
authorDmitry Osipenko <digetx@gmail.com>
Sun, 21 Mar 2021 02:23:44 +0000 (19:23 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 21 Mar 2021 02:48:39 +0000 (19:48 -0700)
commit51d00f613cf4d51cfa9411ad77ad7aad6a85a55d
tree2732cbab4d4b8748e94516dccac40dc8ca6675c9
parent0ec91a91e23a7dcb5b7359271f16a079eaae8468
Input: atmel_mxt_ts - support wakeup methods

According to datasheets, chips like mXT1386 have a WAKE line, it is used
to wake the chip up from deep sleep mode before communicating with it via
the I2C-compatible interface.

If the WAKE line is connected to a GPIO line, the line must be asserted
25 ms before the host attempts to communicate with the controller. If the
WAKE line is connected to the SCL pin, the controller will send a NACK on
the first attempt to address it, the host must then retry 25 ms later.

Implement the wake-up methods in the driver. Touchscreen now works
properly on devices like Acer A500 tablet, fixing problems like this:

 atmel_mxt_ts 0-004c: __mxt_read_reg: i2c transfer failed (-121)
 atmel_mxt_ts 0-004c: mxt_bootloader_read: i2c recv failed (-121)
 atmel_mxt_ts 0-004c: Trying alternate bootloader address
 atmel_mxt_ts 0-004c: mxt_bootloader_read: i2c recv failed (-121)
 atmel_mxt_ts: probe of 0-004c failed with error -121

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20210302102158.10533-3-digetx@gmail.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/atmel_mxt_ts.c