shithub: riscv

Download patch

ref: d1be5e163c98c99b3b610dc5f4715455d506ba22
parent: e56affb840a369ccca365ce6f0c83a55b99224bc
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Thu Jan 2 06:07:06 EST 2014

ps2mouse: retry disable packet streaming command 0xf5

disabling mouse packet streaming command 0xf5 can fail
when a packet is currently transmitted.

this can be seen when one moves the mouse while running:

while(){echo accelerated >/dev/mousectl; sleep 0.5}

--- a/sys/src/9/pc/mouse.c
+++ b/sys/src/9/pc/mouse.c
@@ -260,9 +260,19 @@
 static void
 setstream(int on)
 {
+	int i;
+
 	switch(mousetype){
 	case MousePS2:
-		i8042auxcmd(on ? 0xF4 : 0xF5);
+		/*
+		 * disabling streaming can fail when
+		 * a packet is currently transmitted.
+		 */
+		for(i=0; i<4; i++){
+			if(i8042auxcmd(on ? 0xF4 : 0xF5) != -1)
+				break;
+			delay(50);
+		}
 		break;
 	}
 }
--