diff options
author | Alexandre Peixoto Ferreira <alexandref75@gmail.com> | 2011-01-29 01:05:14 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2011-01-29 01:32:03 -0500 |
commit | baddf58963241307b29e027a9fb28dfe55939db8 (patch) | |
tree | 79026952120eb0105a8839a2fe0cc11ef26a68a8 | |
parent | e7acc84a27fe53b198cd98cc7deaabb5dd0f20c4 (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>
-rw-r--r-- | drivers/input/mouse/synaptics.c | 19 |
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 | ||