On Tuesday 08 November 2016 10:14:30 Paul Donohue wrote: > The current Alps SS5 (SS4 v2) code generates bogus TouchPad events when > TrackStick packets are processed. > > This causes the xorg synaptics driver to print > "unable to find touch point 0" and > "BUG: triggered 'if (priv->num_active_touches > priv->num_slots)'" > messages. It also causes unexpected TouchPad button release and reclick > event sequences if the TrackStick is moved while holding a TouchPad > button. > > This commit corrects the problem by adjusting > alps_process_packet_ss4_v2() so that it only sends TrackStick reports > when processing TrackStick packets. > > Signed-off-by: Paul Donohue <linux-kernel@xxxxxxxxxx> > > diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c > index 6d7de9b..b93fe83 100644 > --- a/drivers/input/mouse/alps.c > +++ b/drivers/input/mouse/alps.c > @@ -1346,6 +1346,18 @@ static void alps_process_packet_ss4_v2(struct psmouse *psmouse) > > priv->multi_packet = 0; > > + /* Report trackstick */ > + if (alps_get_pkt_id_ss4_v2(packet) == SS4_PACKET_ID_STICK) { I would propose to show warning when trackstick packet is received on device marked as non-trackstick. It would help to debug possible problems in future... if (!(priv->flags & ALPS_DUALPOINT)) psmouse_warn(psmouse, "Rejected trackstick packet from non DualPoint device"); > + if (priv->flags & ALPS_DUALPOINT) { > + input_report_key(dev2, BTN_LEFT, f->ts_left); > + input_report_key(dev2, BTN_RIGHT, f->ts_right); > + input_report_key(dev2, BTN_MIDDLE, f->ts_middle); > + input_sync(dev2); > + } > + return; > + } -- Pali Rohár pali.rohar@xxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html