Commit 5f6f117c authored by Paul Cercueil's avatar Paul Cercueil Committed by Dmitry Torokhov

Input: goodix - check the 'buffer status' bit before reading data

The MSB of the first byte read via I2C at the coordinates address
indicates whether the data is valid or ready (called "buffer status" in
the datasheets) when an interrupt is raised. Previously, this bit was
ignored, which resulted in a lot of incorrect detections of "finger
removed" events.
Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
Acked-by: default avatarBastien Nocera <hadess@hadess.net>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent c615dcb6
...@@ -101,6 +101,9 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data) ...@@ -101,6 +101,9 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
return error; return error;
} }
if (!(data[0] & 0x80))
return -EAGAIN;
touch_num = data[0] & 0x0f; touch_num = data[0] & 0x0f;
if (touch_num > ts->max_touch_num) if (touch_num > ts->max_touch_num)
return -EPROTO; return -EPROTO;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment