|
@@ -24,6 +24,7 @@
|
|
*/
|
|
*/
|
|
|
|
|
|
#include <linux/module.h>
|
|
#include <linux/module.h>
|
|
|
|
+#include <linux/delay.h>
|
|
#include <linux/dmi.h>
|
|
#include <linux/dmi.h>
|
|
#include <linux/input/mt.h>
|
|
#include <linux/input/mt.h>
|
|
#include <linux/serio.h>
|
|
#include <linux/serio.h>
|
|
@@ -1220,6 +1221,16 @@ static int synaptics_reconnect(struct psmouse *psmouse)
|
|
|
|
|
|
do {
|
|
do {
|
|
psmouse_reset(psmouse);
|
|
psmouse_reset(psmouse);
|
|
|
|
+ if (retry) {
|
|
|
|
+ /*
|
|
|
|
+ * On some boxes, right after resuming, the touchpad
|
|
|
|
+ * needs some time to finish initializing (I assume
|
|
|
|
+ * it needs time to calibrate) and start responding
|
|
|
|
+ * to Synaptics-specific queries, so let's wait a
|
|
|
|
+ * bit.
|
|
|
|
+ */
|
|
|
|
+ ssleep(1);
|
|
|
|
+ }
|
|
error = synaptics_detect(psmouse, 0);
|
|
error = synaptics_detect(psmouse, 0);
|
|
} while (error && ++retry < 3);
|
|
} while (error && ++retry < 3);
|
|
|
|
|