summaryrefslogtreecommitdiff
path: root/drivers/input/mouse
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2015-12-03 03:50:42 +0300
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2015-12-18 02:24:04 +0300
commit24a06f3e3ab640490f49c8e8812d9550d6f15e92 (patch)
tree190b929c1373bdfdd7a09b91792609cb037aae07 /drivers/input/mouse
parent2b6f39e9ee7b6a9fa98f6047b05733053876fdbe (diff)
downloadlinux-24a06f3e3ab640490f49c8e8812d9550d6f15e92.tar.xz
Input: psmouse - clean up Cypress probe
When Cypress protocol support is disabled cypress_init() is a stub that always returns -ENOSYS, so there is not point in testing for CONFIG_MOUSE_PS2_CYPRESS after we decided that we are dealing with a Cypress device. Also, we should only be calling cypress_detect() when set_properties argument is "true", like with other protocols. There is a slight change in behavior to make follow-up patches more uniform: when we detect Cypress but its initialization fails, instead of immediately returning PSMOUSE_PS2 protocol we now continue trying IntelliMouse [Explorer]. Given that Cypress devices only have issue with Sentelic probes probing Imtellimouse should be safe. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Tested-by: Marcin Sochacki <msochacki+kernel@gmail.com> Tested-by: Till <till2.schaefer@uni-dortmund.de> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/mouse')
-rw-r--r--drivers/input/mouse/psmouse-base.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
index c2bd8665e9f2..978ba0bb4bd9 100644
--- a/drivers/input/mouse/psmouse-base.c
+++ b/drivers/input/mouse/psmouse-base.c
@@ -836,19 +836,15 @@ static int psmouse_extensions(struct psmouse *psmouse,
* Trackpads.
*/
if (max_proto > PSMOUSE_IMEX &&
- cypress_detect(psmouse, set_properties) == 0) {
- if (IS_ENABLED(CONFIG_MOUSE_PS2_CYPRESS)) {
- if (cypress_init(psmouse) == 0)
- return PSMOUSE_CYPRESS;
-
- /*
- * Finger Sensing Pad probe upsets some modules of
- * Cypress Trackpad, must avoid Finger Sensing Pad
- * probe if Cypress Trackpad device detected.
- */
- return PSMOUSE_PS2;
- }
+ psmouse_do_detect(cypress_detect, psmouse, set_properties) == 0) {
+ if (!set_properties || cypress_init(psmouse) == 0)
+ return PSMOUSE_CYPRESS;
+ /*
+ * Finger Sensing Pad probe upsets some modules of
+ * Cypress Trackpad, must avoid Finger Sensing Pad
+ * probe if Cypress Trackpad device detected.
+ */
max_proto = PSMOUSE_IMEX;
}