aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen/goodix.c
diff options
context:
space:
mode:
authorDmitry Mastykin <dmastykin@astralinux.ru>2020-03-24 11:38:28 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2020-03-24 15:08:36 -0700
commit24ef83f6e31d20fc121a7cd732b04b498475fca3 (patch)
treec30ffc60ce36d49443f3051e37bec61a37228eef /drivers/input/touchscreen/goodix.c
parentInput: goodix - try to reset the controller if the i2c-test fails (diff)
downloadlinux-dev-24ef83f6e31d20fc121a7cd732b04b498475fca3.tar.xz
linux-dev-24ef83f6e31d20fc121a7cd732b04b498475fca3.zip
Input: goodix - fix spurious key release events
The goodix panel sends spurious interrupts after a 'finger up' event, which always cause a timeout. We were exiting the interrupt handler by reporting touch_num == 0, but this was still processed as valid and caused the code to use the uninitialised point_data, creating spurious key release events. Report an error from the interrupt handler so as to avoid processing invalid point_data further. Signed-off-by: Dmitry Mastykin <dmastykin@astralinux.ru> Reviewed-by: Bastien Nocera <hadess@hadess.net> Link: https://lore.kernel.org/r/20200316075302.3759-2-dmastykin@astralinux.ru Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/touchscreen/goodix.c')
-rw-r--r--drivers/input/touchscreen/goodix.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
index 99a88bd3d212..4cfebdde7d80 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
@@ -345,7 +345,7 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
* The Goodix panel will send spurious interrupts after a
* 'finger up' event, which will always cause a timeout.
*/
- return 0;
+ return -ENOMSG;
}
static void goodix_ts_report_touch_8b(struct goodix_ts_data *ts, u8 *coor_data)