Patch "Input: alps - only Dell laptops have separate button bits for v2 dualpoint sticks" has been added to the 4.1-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
Input: alps - only Dell laptops have separate button bits for v2 dualpoint sticks
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
input-alps-only-dell-laptops-have-separate-button-bits-for-v2-dualpoint-sticks.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
073e570d7c2caae9910a993d56f340be4548a4a8Mon Sep 17 00:00:00 2001
From: Hans de Goede <[email protected]>
Date: Mon, 3 Aug 2015 14:06:24 -0700
Subject: Input: alps - only Dell laptops have separate button bits for v2 dualpoint sticks
From: Hans de Goede <[email protected]>
commit 073e570d7c2caae9910a993d56f340be4548a4a8 upstream.
It turns out that only Dell laptops have the separate button bits for v2 dualpoint sticks and that commit 92bac83dd79e ("Input: alps - non interleaved V2 dualpoint has separate stick button bits") causes regressions on Toshiba laptops.
This commit adds a check for Dell laptops to the code for handling these extra button bits, fixing this regression.
This patch has been tested on a Dell Latitude D620 to make sure that it does not reintroduce the original problem.
--- Documentation/input/alps.txt | 6 ++++-- drivers/input/mouse/alps.c | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-)
Documentation/input/alps.txt +4 -2
@@ -119,8 +119,10 @@ ALPS Absolute Mode - Protocol Version 2 byte 5: 0 z6 z5 z4 z3 z2 z1 z0 Protocol Version 2 DualPoint devices send standard PS/2 mouse packets for -the DualPoint Stick. For non interleaved dualpoint devices the pointingstick -buttons get reported separately in the PSM, PSR and PSL bits. +the DualPoint Stick. The M, R and L bits signal the combined status of both +the pointingstick and touchpad buttons, except for Dell dualpoint devices +where the pointingstick buttons get reported separately in the PSM, PSR +and PSL bits. Dualpoint device -- interleaved packet format ---------------------------------------------
drivers/input/mouse/alps.c +6 -2
@@ -20,6 +20,7 @@#include <linux/input/mt.h> #include <linux/serio.h> #include <linux/libps2.h> +#include <linux/dmi.h> #include "psmouse.h" #include "alps.h"
@@ -99,6 +100,7 @@ static const struct alps_nibble_commands#define ALPS_FOUR_BUTTONS 0x40/* 4 direction button present */ #define ALPS_PS2_INTERLEAVED 0x80/* 3-byte PS/2 packet interleaved with 6-byte ALPS packet */ +#define ALPS_DELL 0x100/* device is a Dell laptop */ #define ALPS_BUTTONPAD 0x200/* device is a clickpad */ static const struct alps_model_info alps_model_data[] = {
@@ -251,9 +253,9 @@ static void alps_process_packet_v1_v2(streturn ; } -/* Non interleaved V2 dualpoint has separate stick button bits */ +/* Dell non interleaved V2 dualpoint has separate stick button bits */ if (priv->proto_version ==ALPS_PROTO_V2 && - priv->flags == (ALPS_PASS |ALPS_DUALPOINT )) { + priv->flags == (ALPS_DELL |ALPS_PASS |ALPS_DUALPOINT )) { left |= packet[0 ] &1 ; right |= packet[0 ] &2 ; middle |= packet[0 ] &4 ;
@@ -2542,6 +2544,8 @@ static int alps_set_protocol(struct psmo priv->byte0 = protocol->byte0; priv->mask0 = protocol->mask0; priv->flags = protocol->flags; +if (dmi_name_in_vendors ("Dell" )) + priv->flags |=ALPS_DELL ; priv->x_max =2000 ; priv->y_max =1400 ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/input-alps-only-dell-laptops-have-separate-button-bits-for-v2-dualpoint-sticks.patch