summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/input/mouse/olpc.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/input/mouse/olpc.c b/drivers/input/mouse/olpc.c
index f127dc081d39..dc24e351b463 100644
--- a/drivers/input/mouse/olpc.c
+++ b/drivers/input/mouse/olpc.c
@@ -245,8 +245,12 @@ static int hgpk_force_recalibrate(struct psmouse *psmouse)
if (ps2_command(ps2dev, NULL, 0xf5) ||
ps2_command(ps2dev, NULL, 0xf5) ||
ps2_command(ps2dev, NULL, 0xe6) ||
- ps2_command(ps2dev, NULL, 0xf5))
+ ps2_command(ps2dev, NULL, 0xf5)) {
+ psmouse_set_state(psmouse, PSMOUSE_ACTIVATED);
+ queue_delayed_work(kpsmoused_wq, &priv->recalib_wq,
+ msecs_to_jiffies(500));
return -1;
+ }
/* according to ALPS, 150mS is required for recalibration */
@@ -258,8 +262,12 @@ static int hgpk_force_recalibrate(struct psmouse *psmouse)
* we may need to work around that here.
*/
- if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE))
+ if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE)) {
+ psmouse_set_state(psmouse, PSMOUSE_ACTIVATED);
+ queue_delayed_work(kpsmoused_wq, &priv->recalib_wq,
+ msecs_to_jiffies(500));
return -1;
+ }
psmouse_set_state(psmouse, PSMOUSE_ACTIVATED);