 +int ALPS_process_byte(struct psmouse *psmouse, struct pt_regs *regs);
 +#endif
 diff -puN drivers/input/mouse/psmouse-base.c~alps drivers/input/mouse/psmouse-base.c
---- linux/drivers/input/mouse/psmouse-base.c~alps	2004-04-22 23:33:12.000000000 +0200
-+++ linux-petero/drivers/input/mouse/psmouse-base.c	2004-04-22 23:33:12.000000000 +0200
+--- linux/drivers/input/mouse/psmouse-base.c~alps	2004-06-08 23:17:59.943956800 +0200
++++ linux-petero/drivers/input/mouse/psmouse-base.c	2004-06-08 23:27:27.101735712 +0200
 @@ -21,6 +21,7 @@
  #include "psmouse.h"
  #include "synaptics.h"

 5 files changed, 164 insertions(+), 1 deletion(-)

diff -puN drivers/input/mouse/Makefile~alps drivers/input/mouse/Makefile
--- linux/drivers/input/mouse/Makefile~alps	2004-04-22 23:33:12.000000000 +0200
+++ linux-petero/drivers/input/mouse/Makefile	2004-04-22 23:33:12.000000000 +0200
@@ -15,4 +15,4 @@ obj-$(CONFIG_MOUSE_PS2)		+= psmouse.o
 obj-$(CONFIG_MOUSE_SERIAL)	+= sermouse.o
 obj-$(CONFIG_MOUSE_VSXXXAA)	+= vsxxxaa.o

 
 MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
 MODULE_DESCRIPTION("PS/2 mouse driver");
@@ -203,6 +204,10 @@ static irqreturn_t psmouse_interrupt(str
 		}
 	}
 
+	if ((psmouse_max_proto > PSMOUSE_PS2) &&
+	    !ALPS_process_byte(psmouse, regs))
+		goto out;
+
 	rc = psmouse->protocol_handler(psmouse, regs);
 
 	switch (rc) {
@@ -595,6 +600,9 @@ static void psmouse_initialize(struct ps
  */
 
 	psmouse_command(psmouse, param, PSMOUSE_CMD_SETSTREAM);
