PERFORCE change 102576 for review

Hans Petter Selasky hselasky at FreeBSD.org
Thu Jul 27 18:23:15 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=102576

Change 102576 by hselasky at hselasky_mini_itx on 2006/07/27 18:22:38

	It appears some USB devices are broken, and does not work after clearing
	STALL on the INTERRUPT pipe. Hence the DATA-TOGGLE bit is not important when
	only short packets are sent, with length less than wMaxPacketSize, only clear 
	stall on BULK endpoints, and INTERRUPT endpoints that transfer more than 
	wMaxPacketSize bytes, per transfer.

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb/ubsa.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/ukbd.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/ulpt.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/umodem.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/ums.c#9 edit
.. //depot/projects/usb/src/sys/dev/usb/uplcom.c#8 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#13 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#11 edit
.. //depot/projects/usb/src/sys/dev/usb/uvisor.c#7 edit
.. //depot/projects/usb/src/sys/dev/usb/uvscom.c#9 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb/ubsa.c#7 (text+ko) ====

@@ -745,8 +745,7 @@
 
 	/* clear stall first: */
 	sc->sc_flag |= (UBSA_FLAG_WRITE_STALL|
-			UBSA_FLAG_READ_STALL|
-			UBSA_FLAG_INTR_STALL);
+			UBSA_FLAG_READ_STALL);
 
 	usbd_transfer_start(sc->sc_xfer[4]);
 	return 0;

==== //depot/projects/usb/src/sys/dev/usb/ukbd.c#9 (text+ko) ====

@@ -705,10 +705,6 @@
 	    genkbd_diag(kbd, bootverbose);
 	}
 
-	/* clear stall first */
-
-	sc->sc_flags |= UKBD_FLAG_INTR_STALL;
-
 	/* start the keyboard */
 
 	usbd_transfer_start(sc->sc_xfer[0]);

==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#11 (text+ko) ====


==== //depot/projects/usb/src/sys/dev/usb/umodem.c#9 (text+ko) ====

@@ -538,8 +538,7 @@
 
 	/* clear stall first */
 	sc->sc_flag |= (UMODEM_FLAG_READ_STALL|
-			UMODEM_FLAG_WRITE_STALL|
-			UMODEM_FLAG_INTR_STALL);
+			UMODEM_FLAG_WRITE_STALL);
 
 	if (sc->sc_xfer_intr[0]) {
 	    usbd_transfer_start(sc->sc_xfer_intr[0]);

==== //depot/projects/usb/src/sys/dev/usb/ums.c#9 (text+ko) ====

@@ -735,10 +735,6 @@
 	sc->sc_status.dz = 0;
 	/* sc->sc_status.dt = 0; */
 
-	/* clear stall first */
-
-	sc->sc_flags |= UMS_FLAG_INTR_STALL;
-
 	/* start interrupt transfer */
 
 	usbd_transfer_start(sc->sc_xfer[0]);

==== //depot/projects/usb/src/sys/dev/usb/uplcom.c#8 (text+ko) ====

@@ -776,8 +776,7 @@
 	DPRINTF(0, "sc=%p\n", sc);
 
 	/* clear stall first */
-	sc->sc_flag |= (UPLCOM_FLAG_INTR_STALL|
-			UPLCOM_FLAG_READ_STALL|
+	sc->sc_flag |= (UPLCOM_FLAG_READ_STALL|
 			UPLCOM_FLAG_WRITE_STALL);
 
 	usbd_transfer_start(sc->sc_xfer_intr[0]);

==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#13 (text+ko) ====


==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#11 (text+ko) ====


==== //depot/projects/usb/src/sys/dev/usb/uvisor.c#7 (text+ko) ====


==== //depot/projects/usb/src/sys/dev/usb/uvscom.c#9 (text+ko) ====

@@ -473,10 +473,6 @@
 	    goto detach;
 	}
 
-	/* clear stall first */
-
-	sc->sc_flag |= UVSCOM_FLAG_INTR_STALL;
-
 	/* start interrupt pipe */
 
 	usbd_transfer_start(sc->sc_xfer[4]);


More information about the p4-projects mailing list