From: "Pali Rohár" <pali.rohar@gmail.com>
To: Paul Donohue <linux-kernel@PaulSD.com>
Cc: linux-input@vger.kernel.org, Ben Gamari <ben@smart-cactus.org>,
Michal Hocko <mhocko@suse.com>
Subject: Re: [PATCH] Input: ALPS - Fix TrackStick support for SS5 hardware
Date: Tue, 1 Nov 2016 10:35:07 +0100 [thread overview]
Message-ID: <20161101093507.GE3081@pali> (raw)
In-Reply-To: <20161024210122.GA2919@TopQuark.net>
On Monday 24 October 2016 17:01:22 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 setting a flag for the relevant
> packet type in alps_decode_ss4_v2(), then using that flag in
> alps_process_packet_ss4_v2() to send only TrackStick reports when
> processing TrackStick packets.
>
> Signed-off-by: Paul Donohue <linux-kernel@PaulSD.com>
>
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 6d7de9b..2c2e55b 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -1279,6 +1279,8 @@ static int alps_decode_ss4_v2(struct alps_fields *f,
> input_report_rel(priv->dev2, REL_Y, -y);
> input_report_abs(priv->dev2, ABS_PRESSURE, pressure);
> }
> + f->first_mp = 0;
> + f->is_mp = 0;
> break;
>
> case SS4_PACKET_ID_IDLE:
> @@ -1289,12 +1291,14 @@ static int alps_decode_ss4_v2(struct alps_fields *f,
>
> /* handle buttons */
> if (pkt_id == SS4_PACKET_ID_STICK) {
> + f->is_ts = 1;
> f->ts_left = !!(SS4_BTN_V2(p) & 0x01);
> if (!(priv->flags & ALPS_BUTTONPAD)) {
> f->ts_right = !!(SS4_BTN_V2(p) & 0x02);
> f->ts_middle = !!(SS4_BTN_V2(p) & 0x04);
> }
> } else {
> + f->is_ts = 0;
> f->left = !!(SS4_BTN_V2(p) & 0x01);
> if (!(priv->flags & ALPS_BUTTONPAD)) {
> f->right = !!(SS4_BTN_V2(p) & 0x02);
> @@ -1346,18 +1350,18 @@ static void alps_process_packet_ss4_v2(struct psmouse *psmouse)
>
> priv->multi_packet = 0;
>
> - alps_report_mt_data(psmouse, (f->fingers <= 4) ? f->fingers : 4);
> -
> - input_mt_report_finger_count(dev, f->fingers);
> + if (!f->is_ts) {
> + alps_report_mt_data(psmouse, (f->fingers <= 4) ? f->fingers : 4);
>
> - input_report_key(dev, BTN_LEFT, f->left);
> - input_report_key(dev, BTN_RIGHT, f->right);
> - input_report_key(dev, BTN_MIDDLE, f->middle);
> + input_mt_report_finger_count(dev, f->fingers);
>
> - input_report_abs(dev, ABS_PRESSURE, f->pressure);
> - input_sync(dev);
> + input_report_key(dev, BTN_LEFT, f->left);
> + input_report_key(dev, BTN_RIGHT, f->right);
> + input_report_key(dev, BTN_MIDDLE, f->middle);
>
> - if (priv->flags & ALPS_DUALPOINT) {
> + input_report_abs(dev, ABS_PRESSURE, f->pressure);
> + input_sync(dev);
> + } else {
> 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);
> diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
> index b9417e2..1dc09b5 100644
> --- a/drivers/input/mouse/alps.h
> +++ b/drivers/input/mouse/alps.h
> @@ -192,6 +192,7 @@ struct alps_bitmap_point {
> * @left: Left touchpad button is active.
> * @right: Right touchpad button is active.
> * @middle: Middle touchpad button is active.
> + * @is_ts: Packet is for the trackstick, not the touchpad.
> * @ts_left: Left trackstick button is active.
> * @ts_right: Right trackstick button is active.
> * @ts_middle: Middle trackstick button is active.
> @@ -212,6 +213,7 @@ struct alps_fields {
> unsigned int right:1;
> unsigned int middle:1;
>
> + unsigned int is_ts:1;
> unsigned int ts_left:1;
> unsigned int ts_right:1;
> unsigned int ts_middle:1;
>
Hi! What looks suspicious on this patch is that you need to extend
structure in alps.h for marking packet as it comes from trackstick...
and only for sse_v2 devices. It is not possible to do detection in
process code similarly like for other devices?
--
Pali Rohár
pali.rohar@gmail.com
next prev parent reply other threads:[~2016-11-01 9:35 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-24 21:01 [PATCH] Input: ALPS - Fix TrackStick support for SS5 hardware Paul Donohue
2016-11-01 9:35 ` Pali Rohár [this message]
2016-11-05 16:30 ` Paul Donohue
2016-11-05 16:44 ` [PATCH v2] " Paul Donohue
2016-11-06 19:59 ` Pali Rohár
2016-11-08 14:24 ` Paul Donohue
2016-11-06 19:57 ` [PATCH] " Pali Rohár
2016-11-08 14:54 ` [PATCH v3 1/3] " Paul Donohue
2016-11-08 14:59 ` [PATCH v3 2/3] " Paul Donohue
2016-11-08 15:06 ` Paul Donohue
2016-11-08 15:14 ` [PATCH v4 1/3] " Paul Donohue
2016-11-08 15:16 ` [PATCH v4 2/3] Input: ALPS - Clean up TrackStick handling " Paul Donohue
2016-11-08 15:17 ` [PATCH v4 3/3] Input: ALPS - Clean up code " Paul Donohue
2016-11-08 15:46 ` Paul Donohue
2016-11-08 15:49 ` Paul Donohue
2016-11-09 12:14 ` [PATCH v4 2/3] Input: ALPS - Clean up TrackStick handling " Pali Rohár
2016-11-10 14:27 ` Paul Donohue
2016-11-10 15:19 ` Pali Rohár
2016-11-10 16:44 ` [PATCH v5 0/3] Input: ALPS - Bug fix and cleanup " Paul Donohue
2016-11-10 16:44 ` [PATCH v5 1/3] Input: ALPS - Fix TrackStick support " Paul Donohue
2016-11-10 16:44 ` [PATCH v5 2/3] Input: ALPS - Clean up TrackStick handling " Paul Donohue
2016-11-10 16:44 ` [PATCH v5 3/3] Input: ALPS - Clean up code " Paul Donohue
2016-11-11 13:59 ` [PATCH v5 0/3] Input: ALPS - Bug fix and cleanup " Pali Rohár
2016-11-12 0:56 ` Dmitry Torokhov
2016-11-12 1:03 ` Pali Rohár
2016-11-12 1:06 ` Dmitry Torokhov
2016-11-12 12:29 ` Pali Rohár
2016-11-13 6:43 ` Dmitry Torokhov
2016-11-13 10:31 ` Pali Rohár
2016-11-13 15:28 ` Paul Donohue
2016-11-24 14:25 ` [PATCH v6 " Paul Donohue
2016-11-24 14:25 ` [PATCH v6 1/3] Input: ALPS - Fix TrackStick support " Paul Donohue
2016-11-24 14:25 ` [PATCH v6 2/3] Input: ALPS - Clean up TrackStick handling " Paul Donohue
2016-11-24 14:25 ` [PATCH v6 3/3] Input: ALPS - Clean up code " Paul Donohue
2016-11-09 12:12 ` [PATCH v4 1/3] Input: ALPS - Fix TrackStick support " Pali Rohár
2016-11-10 14:17 ` Paul Donohue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161101093507.GE3081@pali \
--to=pali.rohar@gmail.com \
--cc=ben@smart-cactus.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@PaulSD.com \
--cc=mhocko@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).