aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorAlexandre Peixoto Ferreira <alexandref75@gmail.com>2011-01-29 01:05:14 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-01-29 01:32:03 -0500
commitbaddf58963241307b29e027a9fb28dfe55939db8 (patch)
tree79026952120eb0105a8839a2fe0cc11ef26a68a8 /drivers/input
parente7acc84a27fe53b198cd98cc7deaabb5dd0f20c4 (diff)
Input: synaptics - fix reconnect logic on MT devices
synaptics_set_advanced_gesture_mode() affect capabilities bits we should perform comparison after calling this function, otherwise they will never match and we will be forced to perform full reconnect. Signed-off-by: Alexandre Peixoto Ferreira <alexandref75@gmail.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/mouse/synaptics.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index da392c22fc6c..fdf089c0c707 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -766,12 +766,6 @@ static int synaptics_reconnect(struct psmouse *psmouse)
766 return -1; 766 return -1;
767 } 767 }
768 768
769 if (old_priv.identity != priv->identity ||
770 old_priv.model_id != priv->model_id ||
771 old_priv.capabilities != priv->capabilities ||
772 old_priv.ext_cap != priv->ext_cap)
773 return -1;
774
775 if (synaptics_set_absolute_mode(psmouse)) { 769 if (synaptics_set_absolute_mode(psmouse)) {
776 printk(KERN_ERR "Unable to initialize Synaptics hardware.\n"); 770 printk(KERN_ERR "Unable to initialize Synaptics hardware.\n");
777 return -1; 771 return -1;
@@ -782,6 +776,19 @@ static int synaptics_reconnect(struct psmouse *psmouse)
782 return -1; 776 return -1;
783 } 777 }
784 778
779 if (old_priv.identity != priv->identity ||
780 old_priv.model_id != priv->model_id ||
781 old_priv.capabilities != priv->capabilities ||
782 old_priv.ext_cap != priv->ext_cap) {
783 printk(KERN_ERR "Synaptics hardware appears to be different: "
784 "id(%ld-%ld), model(%ld-%ld), caps(%lx-%lx), ext(%lx-%lx).\n",
785 old_priv.identity, priv->identity,
786 old_priv.model_id, priv->model_id,
787 old_priv.capabilities, priv->capabilities,
788 old_priv.ext_cap, priv->ext_cap);
789 return -1;
790 }
791
785 return 0; 792 return 0;
786} 793}
787 794