summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2003-11-10 00:08:41 +0000
committerjoe <joe@FreeBSD.org>2003-11-10 00:08:41 +0000
commite5da636735e4c89ec3568ea66dbd3301112845e3 (patch)
tree3a3a1d77415816c009fbe3306afff834436036ba /sys/dev/usb
parent6b8c93a1ab61f538389afce571a2652990e06206 (diff)
downloadFreeBSD-src-e5da636735e4c89ec3568ea66dbd3301112845e3.zip
FreeBSD-src-e5da636735e4c89ec3568ea66dbd3301112845e3.tar.gz
MFNetBSD:
revision 1.176 date: 2003/11/04 19:11:21; author: mycroft; Ignore a CRCTO error on a SETUP transaction in combination with STALLED or NAK. This fixes problems with the GL641.
Diffstat (limited to 'sys/dev/usb')
-rw-r--r--sys/dev/usb/uhci.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/usb/uhci.c b/sys/dev/usb/uhci.c
index 81b4ff1..15162f0 100644
--- a/sys/dev/usb/uhci.c
+++ b/sys/dev/usb/uhci.c
@@ -4,6 +4,7 @@
* $NetBSD: uhci.c,v 1.172 2003/02/23 04:19:26 simonb Exp $
* $NetBSD: uhci.c,v 1.173 2003/05/13 04:41:59 gson Exp $
* $NetBSD: uhci.c,v 1.175 2003/09/12 16:18:08 mycroft Exp $
+ * $NetBSD: uhci.c,v 1.176 2003/11/04 19:11:21 mycroft Exp $
*/
#include <sys/cdefs.h>
@@ -1433,6 +1434,15 @@ uhci_idone(uhci_intr_info_t *ii)
if (UHCI_TD_GET_PID(le32toh(std->td.td_token)) !=
UHCI_TD_PID_SETUP)
actlen += UHCI_TD_GET_ACTLEN(status);
+ else {
+ /*
+ * UHCI will report CRCTO in addition to a STALL or NAK
+ * for a SETUP transaction. See section 3.2.2, "TD
+ * CONTROL AND STATUS".
+ */
+ if (status & (UHCI_TD_STALLED | UHCI_TD_NAK))
+ status &= ~UHCI_TD_CRCTO;
+ }
}
/* If there are left over TDs we need to update the toggle. */
if (std != NULL)
OpenPOWER on IntegriCloud