Re: [PATCH v4 1/3] Input: ALPS - Fix TrackStick support for SS5 hardware

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux