reset quirk at reconnect for Synaptics touchpads
Subsystems (2)
PATCH 1/1 reset quirk at reconnect for Synaptics touchpads
If a Synaptics touchpad can't be initialized (synaptics_init) and falls back to PS/2, it doesn't get a psmouse_reset() after resuming from suspend as it would get with a synaptics driver.
So check state of synaptics_hardware and reset this beast.
Signed-off-by Christoph Fritz <[email protected]>
--- drivers/input/mouse/psmouse-base.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-)
drivers/input/mouse/psmouse-base.c +9 -3
@@ -116,6 +116,9 @@ struct psmouse_protocol {int (*init)(struct psmouse *); }; +/* to handle some reset quirks */ +static bool synaptics_hardware = false; +/* * psmouse_process_byte() analyzes the PS/2 data stream and reports * relevant events to the input module once full packet has arrived.
@@ -597,7 +600,6 @@ static int cortron_detect(struct psmouse *psmouse, bool set_properties)static int psmouse_extensions (struct psmouse *psmouse,unsigned int max_proto,bool set_properties) { -bool synaptics_hardware = false;/* * We always check for lifebook because it does not disturb mouse
@@ -1401,10 +1403,14 @@ static int psmouse_reconnect(struct serio *serio)if (psmouse->reconnect) {if (psmouse->reconnect (psmouse)) goto out; - }else if (psmouse_probe (psmouse) <0 || + }else { +if (synaptics_hardware)/* is using plain PS/2 */ +psmouse_reset (psmouse); +if (psmouse_probe (psmouse) <0 || psmouse->type !=psmouse_extensions (psmouse, psmouse_max_proto, false)) { - goto out; + goto out; + } }/* ok, the device type (and capabilities) match the old one,
Signature · 1 line
1.5.6.5