Input: vmmouse - fix absolute device registration
We should set device's capabilities first, and then register it, otherwise various handlers already present in the kernel will not be able to connect to the device. Reported-by: Lauri Kasanen <cand@gmx.com> Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
Родитель
015bb5e134
Коммит
d4f1b06d68
|
@ -458,8 +458,6 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||||
priv->abs_dev = abs_dev;
|
priv->abs_dev = abs_dev;
|
||||||
psmouse->private = priv;
|
psmouse->private = priv;
|
||||||
|
|
||||||
input_set_capability(rel_dev, EV_REL, REL_WHEEL);
|
|
||||||
|
|
||||||
/* Set up and register absolute device */
|
/* Set up and register absolute device */
|
||||||
snprintf(priv->phys, sizeof(priv->phys), "%s/input1",
|
snprintf(priv->phys, sizeof(priv->phys), "%s/input1",
|
||||||
psmouse->ps2dev.serio->phys);
|
psmouse->ps2dev.serio->phys);
|
||||||
|
@ -475,10 +473,6 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||||
abs_dev->id.version = psmouse->model;
|
abs_dev->id.version = psmouse->model;
|
||||||
abs_dev->dev.parent = &psmouse->ps2dev.serio->dev;
|
abs_dev->dev.parent = &psmouse->ps2dev.serio->dev;
|
||||||
|
|
||||||
error = input_register_device(priv->abs_dev);
|
|
||||||
if (error)
|
|
||||||
goto init_fail;
|
|
||||||
|
|
||||||
/* Set absolute device capabilities */
|
/* Set absolute device capabilities */
|
||||||
input_set_capability(abs_dev, EV_KEY, BTN_LEFT);
|
input_set_capability(abs_dev, EV_KEY, BTN_LEFT);
|
||||||
input_set_capability(abs_dev, EV_KEY, BTN_RIGHT);
|
input_set_capability(abs_dev, EV_KEY, BTN_RIGHT);
|
||||||
|
@ -488,6 +482,13 @@ int vmmouse_init(struct psmouse *psmouse)
|
||||||
input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0);
|
input_set_abs_params(abs_dev, ABS_X, 0, VMMOUSE_MAX_X, 0, 0);
|
||||||
input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0);
|
input_set_abs_params(abs_dev, ABS_Y, 0, VMMOUSE_MAX_Y, 0, 0);
|
||||||
|
|
||||||
|
error = input_register_device(priv->abs_dev);
|
||||||
|
if (error)
|
||||||
|
goto init_fail;
|
||||||
|
|
||||||
|
/* Add wheel capability to the relative device */
|
||||||
|
input_set_capability(rel_dev, EV_REL, REL_WHEEL);
|
||||||
|
|
||||||
psmouse->protocol_handler = vmmouse_process_byte;
|
psmouse->protocol_handler = vmmouse_process_byte;
|
||||||
psmouse->disconnect = vmmouse_disconnect;
|
psmouse->disconnect = vmmouse_disconnect;
|
||||||
psmouse->reconnect = vmmouse_reconnect;
|
psmouse->reconnect = vmmouse_reconnect;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче