From fa67653afbd35c85cfae8e3a47830d8c35232623 Mon Sep 17 00:00:00 2001 From: Dmitry Torokhov Date: Thu, 13 May 2010 00:42:23 -0700 Subject: [PATCH] --- yaml --- r: 190823 b: refs/heads/master c: ef110b24e28f36620f63dab94708a17c7e267358 h: refs/heads/master i: 190821: ae6e8c07ee5172598f5008c483874bfbc49819e0 190819: 7ced5be776a5d043f4e925c0f8a763620cf67669 190815: 7d6eb99daae5b4c7f275c34633fb4e4c3835e7ed v: v3 --- [refs] | 2 +- trunk/drivers/input/mouse/psmouse-base.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 000e435b69f0..5e1c55d0a3e1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 504e8beed161bd11a2c6cbb8aaf352c14d39b5bb +refs/heads/master: ef110b24e28f36620f63dab94708a17c7e267358 diff --git a/trunk/drivers/input/mouse/psmouse-base.c b/trunk/drivers/input/mouse/psmouse-base.c index cbc807264940..a3c97315a473 100644 --- a/trunk/drivers/input/mouse/psmouse-base.c +++ b/trunk/drivers/input/mouse/psmouse-base.c @@ -1394,6 +1394,7 @@ static int psmouse_reconnect(struct serio *serio) struct psmouse *psmouse = serio_get_drvdata(serio); struct psmouse *parent = NULL; struct serio_driver *drv = serio->drv; + unsigned char type; int rc = -1; if (!drv || !psmouse) { @@ -1413,10 +1414,15 @@ static int psmouse_reconnect(struct serio *serio) if (psmouse->reconnect) { if (psmouse->reconnect(psmouse)) goto out; - } else if (psmouse_probe(psmouse) < 0 || - psmouse->type != psmouse_extensions(psmouse, - psmouse_max_proto, false)) { - goto out; + } else { + psmouse_reset(psmouse); + + if (psmouse_probe(psmouse) < 0) + goto out; + + type = psmouse_extensions(psmouse, psmouse_max_proto, false); + if (psmouse->type != type) + goto out; } /* ok, the device type (and capabilities) match the old one,