summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/ugen.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/usb/ugen.c')
-rw-r--r--sys/dev/usb/ugen.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c
index 31726f5..3e3327d 100644
--- a/sys/dev/usb/ugen.c
+++ b/sys/dev/usb/ugen.c
@@ -1,4 +1,4 @@
-/* $NetBSD: ugen.c,v 1.51 2001/11/13 07:59:32 augustss Exp $ */
+/* $NetBSD: ugen.c,v 1.57 2002/02/11 15:11:49 augustss Exp $ */
/* $FreeBSD$ */
/*
@@ -487,6 +487,7 @@ ugenopen(dev_t dev, int flag, int mode, usb_proc_ptr p)
usbd_free_xfer(sce->isoreqs[i].xfer);
return (ENOMEM);
case UE_CONTROL:
+ sce->timeout = USBD_DEFAULT_TIMEOUT;
return (EINVAL);
}
}
@@ -1112,18 +1113,9 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd,
sce->state &= ~UGEN_SHORT_OK;
return (0);
case USB_SET_TIMEOUT:
- if (endpt == USB_CONTROL_ENDPOINT) {
- /* XXX the lower levels don't support this yet. */
- return (EINVAL);
- }
sce = &sc->sc_endpoints[endpt][IN];
if (sce == NULL)
return (EINVAL);
-
- if (sce->pipeh == NULL) {
- printf("ugenioctl: USB_SET_TIMEOUT, no pipe\n");
- return (EIO);
- }
sce->timeout = *(int *)addr;
return (0);
default:
@@ -1316,8 +1308,9 @@ ugen_do_ioctl(struct ugen_softc *sc, int endpt, u_long cmd,
goto ret;
}
}
+ sce = &sc->sc_endpoints[endpt][IN];
err = usbd_do_request_flags(sc->sc_udev, &ur->ucr_request,
- ptr, ur->ucr_flags, &ur->ucr_actlen);
+ ptr, ur->ucr_flags, &ur->ucr_actlen, sce->timeout);
if (err) {
error = EIO;
goto ret;
OpenPOWER on IntegriCloud