diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/usb/usb_subr.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c index adeb436..c0e1442 100644 --- a/sys/dev/usb/usb_subr.c +++ b/sys/dev/usb/usb_subr.c @@ -818,9 +818,14 @@ usbd_setup_pipe(usbd_device_handle dev, usbd_interface_handle iface, /* Clear any stall and make sure DATA0 toggle will be used next. */ if (UE_GET_ADDR(ep->edesc->bEndpointAddress) != USB_CONTROL_ENDPOINT) { err = usbd_clear_endpoint_stall(p); - /* Some devices reject this command, so ignore a STALL. */ - if (err && err != USBD_STALLED) { - printf("usbd_setup_pipe: failed to start endpoint, %s\n", usbd_errstr(err)); + /* + * Some devices reject this command, so ignore a STALL. */ + * Some device just time out on this command, so ignore + * that too. + */ + if (err && err != USBD_STALLED && err != USBD_TIMEOUT) { + printf("usbd_setup_pipe: failed to start " + "endpoint, %s\n", usbd_errstr(err)); return (err); } } |