Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ef110b24 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: psmouse - reset all types of mice before reconnecting



Synaptics hardware requires resetting device after suspend to ram
in order for the device to be operational. The reset lives in
synaptics-specific reconnect handler, but it is not being invoked
if synaptics support is disabled and the device is handled as a
standard PS/2 device (bare or IntelliMouse protocol).

Let's add reset into generic reconnect handler as well.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 504e8bee
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -1394,6 +1394,7 @@ static int psmouse_reconnect(struct serio *serio)
	struct psmouse *psmouse = serio_get_drvdata(serio);
	struct psmouse *parent = NULL;
	struct serio_driver *drv = serio->drv;
	unsigned char type;
	int rc = -1;

	if (!drv || !psmouse) {
@@ -1413,9 +1414,14 @@ static int psmouse_reconnect(struct serio *serio)
	if (psmouse->reconnect) {
		if (psmouse->reconnect(psmouse))
			goto out;
	} else if (psmouse_probe(psmouse) < 0 ||
		   psmouse->type != psmouse_extensions(psmouse,
						psmouse_max_proto, false)) {
	} else {
		psmouse_reset(psmouse);

		if (psmouse_probe(psmouse) < 0)
			goto out;

		type = psmouse_extensions(psmouse, psmouse_max_proto, false);
		if (psmouse->type != type)
			goto out;
	}