Input: st1232 - wait until device is ready before reading resolution
authorGeert Uytterhoeven <geert+renesas@glider.be>
Sat, 2 Jan 2021 06:15:15 +0000 (22:15 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sat, 2 Jan 2021 06:19:03 +0000 (22:19 -0800)
commitf605be6a57b439df7568a865c187b81863018c95
tree1f1717b854f6d6c974f12284d965ad24736924a0
parentb999dbea06b9874c7724a410f47a6bac1e219e37
Input: st1232 - wait until device is ready before reading resolution

According to the st1232 datasheet, the host has to wait for the device
to change into Normal state before accessing registers other than the
Status Register.

If the reset GPIO is wired, the device is powered on during driver
probe, just before reading the resolution.  However, the latter may
happen before the device is ready, leading to a probe failure:

    st1232-ts 1-0055: Failed to read resolution: -6

Fix this by waiting until the device is ready, by trying to read the
Status Register until it indicates so, or until timeout.

On Armadillo 800 EVA, typically the first read fails with an I2C
transfer error, while the second read indicates the device is ready.

Fixes: 3a54a215410b1650 ("Input: st1232 - add support resolution reading")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20201229162601.2154566-4-geert+renesas@glider.be
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/st1232.c