Ignore a CRCTO error on a SETUP transaction in combination with STALLED or NAK.
This fixes problems with the GL641.
This commit is contained in:
parent
73fea8467b
commit
c6589d2082
@ -1,4 +1,4 @@
|
||||
/* $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 $ */
|
||||
/* $FreeBSD: src/sys/dev/usb/uhci.c,v 1.33 1999/11/17 22:33:41 n_hibma Exp $ */
|
||||
|
||||
/*
|
||||
@ -49,7 +49,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.175 2003/09/12 16:18:08 mycroft Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: uhci.c,v 1.176 2003/11/04 19:11:21 mycroft Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -1427,6 +1427,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)
|
||||
|
Loading…
Reference in New Issue
Block a user