--- drivers/input/mouse/psmouse-base.c.dist 2005-03-02 08:37:50.000000000 +0100 +++ drivers/input/mouse/psmouse-base.c 2005-06-14 11:18:14.000000000 +0200 @@ -598,36 +598,53 @@ psmouse->ps2dev.flags = 0; serio_continue_rx(psmouse->ps2dev.serio); } + + /* - * psmouse_activate() enables the mouse so that we get motion reports from it. + * psmouse_deactivate() puts the mouse into poll mode so that we don't get motion + * reports from it unless we explicitely request it. */ -static void psmouse_activate(struct psmouse *psmouse) +static void psmouse_deactivate(struct psmouse *psmouse) { - if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) - printk(KERN_WARNING "psmouse.c: Failed to enable mouse on %s\n", + if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) + printk(KERN_WARNING "psmouse.c: Failed to deactivate mouse on %s\n", psmouse->ps2dev.serio->phys); - psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); + psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); } /* - * psmouse_deactivate() puts the mouse into poll mode so that we don't get motion - * reports from it unless we explicitely request it. + * psmouse_activate() enables the mouse so that we get motion reports from it. */ - -static void psmouse_deactivate(struct psmouse *psmouse) +/* +static void psmouse_activate(struct psmouse *psmouse) { - if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE)) - printk(KERN_WARNING "psmouse.c: Failed to deactivate mouse on %s\n", + if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) + printk(KERN_WARNING "psmouse.c: Failed to enable mouse on %s\n", psmouse->ps2dev.serio->phys); - psmouse_set_state(psmouse, PSMOUSE_CMD_MODE); + psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); +} */ +static void psmouse_activate(struct psmouse *psmouse) +{ + /* Deactivate all pass-through ports */ + struct serio *serio = psmouse->ps2dev.serio; + if ((serio->type & SERIO_TYPE) == SERIO_PS_PSTHRU) { + psmouse_deactivate(psmouse); + return; + } + if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE)) + printk(KERN_WARNING "psmouse.c: Failed to enable mouse on %s\n", + psmouse->ps2dev.serio->phys); + + psmouse_set_state(psmouse, PSMOUSE_ACTIVATED); } + /* * psmouse_cleanup() resets the mouse into power-on state. */