aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/serio/i8042-io.h
diff options
context:
space:
mode:
authorMarcos Paulo de Souza <marcos.souza.org@gmail.com>2016-10-01 12:07:35 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2016-10-11 16:58:25 -0700
commit930e19248e9b61da36c967687ca79c4d5f977919 (patch)
tree40a11f8280090ffe6e5cc97b8283f6458d48874d /drivers/input/serio/i8042-io.h
parentInput: melfas_mip4 - add ic_name sysfs attribute (diff)
downloadlinux-dev-930e19248e9b61da36c967687ca79c4d5f977919.tar.xz
linux-dev-930e19248e9b61da36c967687ca79c4d5f977919.zip
Input: i8042 - skip selftest on ASUS laptops
On suspend/resume cycle, selftest is executed to reset i8042 controller. But when this is done in Asus devices, subsequent calls to detect/init functions to elantech driver fails. Skipping selftest fixes this problem. An easier step to reproduce this problem is adding i8042.reset=1 as a kernel parameter. On Asus laptops, it'll make the system to start with the touchpad already stuck, since psmouse_probe forcibly calls the selftest function. This patch was inspired by John Hiesey's change[1], but, since this problem affects a lot of models of Asus, let's avoid running selftests on them. All models affected by this problem: A455LD K401LB K501LB K501LX R409L V502LX X302LA X450LCP X450LD X455LAB X455LDB X455LF Z450LA [1]: https://marc.info/?l=linux-input&m=144312209020616&w=2 Fixes: "ETPS/2 Elantech Touchpad dies after resume from suspend" (https://bugzilla.kernel.org/show_bug.cgi?id=107971) Signed-off-by: Marcos Paulo de Souza <marcos.souza.org@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input/serio/i8042-io.h')
-rw-r--r--drivers/input/serio/i8042-io.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/input/serio/i8042-io.h b/drivers/input/serio/i8042-io.h
index a5eed2ade53d..34da81c006b6 100644
--- a/drivers/input/serio/i8042-io.h
+++ b/drivers/input/serio/i8042-io.h
@@ -81,7 +81,7 @@ static inline int i8042_platform_init(void)
return -EBUSY;
#endif
- i8042_reset = 1;
+ i8042_reset = I8042_RESET_ALWAYS;
return 0;
}