It turns out that certain hardware sometime generates unexpected movement
during normal operation. This patch tries to filter out these erratic
movements which will cause unexpected cursor jumping to the top-left corner.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43197
Reported-and-tested-by: Aleksey Spiridonov <redacted>
Tested-by: Eddie Dunn <redacted>
Tested-by: Jakub Luzny <redacted>
Tested-by: Olivier Goffart <redacted>
Signed-off-by: Tai-hwa Liang <redacted>
---
drivers/input/mouse/sentelic.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/input/mouse/sentelic.c b/drivers/input/mouse/sentelic.c
index 3f5649f..060edef 100644
--- a/drivers/input/mouse/sentelic.c
+++ b/drivers/input/mouse/sentelic.c
@@ -721,6 +721,14 @@ static psmouse_ret_t fsp_process_byte(struct psmouse *psmouse)
switch (psmouse->packet[0] >> FSP_PKT_TYPE_SHIFT) {
case FSP_PKT_TYPE_ABS:
+ if ((packet[0] == 0x48 || packet[0] == 0x49) &&
+ packet[1] == 0 && packet[2] == 0) {
+ /*
+ * filtering out erratic movement which will cause
+ * unexpected cursor jumping to the top-left corner
+ */
+ return PSMOUSE_FULL_PACKET;
+ }
abs_x = GET_ABS_X(packet);
abs_y = GET_ABS_Y(packet);
--
1.7.9.5