Date: Thu, 27 Jul 2006 18:23:12 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 102576 for review Message-ID: <200607271823.k6RINC9M007354@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=102576 Change 102576 by hselasky@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]);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607271823.k6RINC9M007354>