]>
Commit | Line | Data |
---|---|---|
02306000 GKH |
1 | From 04bb1719c4de94700056241d4c0fe3c1413f5aff Mon Sep 17 00:00:00 2001 |
2 | From: Ondrej Zary <linux@rainbow-software.org> | |
3 | Date: Tue, 3 Apr 2018 10:24:34 -0700 | |
4 | Subject: Input: i8042 - enable MUX on Sony VAIO VGN-CS series to fix touchpad | |
5 | ||
6 | From: Ondrej Zary <linux@rainbow-software.org> | |
7 | ||
8 | commit 04bb1719c4de94700056241d4c0fe3c1413f5aff upstream. | |
9 | ||
10 | The touch sensor buttons on Sony VAIO VGN-CS series laptops (e.g. | |
11 | VGN-CS31S) are a separate PS/2 device. As the MUX is disabled for all | |
12 | VAIO machines by the nomux blacklist, the data from touch sensor | |
13 | buttons and touchpad are combined. The protocol used by the buttons is | |
14 | probably similar to the touchpad protocol (both are Synaptics) so both | |
15 | devices get enabled. The controller combines the data, creating a mess | |
16 | which results in random button clicks, touchpad stopping working and | |
17 | lost sync error messages: | |
18 | psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 4 | |
19 | psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1 | |
20 | psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1 | |
21 | psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1 | |
22 | psmouse serio1: TouchPad at isa0060/serio1/input0 lost sync at byte 1 | |
23 | psmouse serio1: issuing reconnect request | |
24 | ||
25 | Add a new i8042_dmi_forcemux_table whitelist with VGN-CS. | |
26 | With MUX enabled, touch sensor buttons are detected as separate device | |
27 | (and left disabled as there's currently no driver), fixing all touchpad | |
28 | problems. | |
29 | ||
30 | Signed-off-by: Ondrej Zary <linux@rainbow-software.org> | |
31 | Cc: stable@vger.kernel.org | |
32 | Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> | |
33 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
34 | ||
35 | --- | |
36 | drivers/input/serio/i8042-x86ia64io.h | 17 +++++++++++++++++ | |
37 | 1 file changed, 17 insertions(+) | |
38 | ||
39 | --- a/drivers/input/serio/i8042-x86ia64io.h | |
40 | +++ b/drivers/input/serio/i8042-x86ia64io.h | |
41 | @@ -712,6 +712,20 @@ static const struct dmi_system_id __init | |
42 | { } | |
43 | }; | |
44 | ||
45 | +static const struct dmi_system_id i8042_dmi_forcemux_table[] __initconst = { | |
46 | + { | |
47 | + /* | |
48 | + * Sony Vaio VGN-CS series require MUX or the touch sensor | |
49 | + * buttons will disturb touchpad operation | |
50 | + */ | |
51 | + .matches = { | |
52 | + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), | |
53 | + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-CS"), | |
54 | + }, | |
55 | + }, | |
56 | + { } | |
57 | +}; | |
58 | + | |
59 | /* | |
60 | * Some Wistron based laptops need us to explicitly enable the 'Dritek | |
61 | * keyboard extension' to make their extra keys start generating scancodes. | |
62 | @@ -1124,6 +1138,9 @@ static int __init i8042_platform_init(vo | |
63 | if (dmi_check_system(i8042_dmi_nomux_table)) | |
64 | i8042_nomux = true; | |
65 | ||
66 | + if (dmi_check_system(i8042_dmi_forcemux_table)) | |
67 | + i8042_nomux = false; | |
68 | + | |
69 | if (dmi_check_system(i8042_dmi_notimeout_table)) | |
70 | i8042_notimeout = true; | |
71 |