diff options
Diffstat (limited to 'sys/dev/usb/usbdi.c')
-rw-r--r-- | sys/dev/usb/usbdi.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/usb/usbdi.c b/sys/dev/usb/usbdi.c index c461d70c787..e875158358e 100644 --- a/sys/dev/usb/usbdi.c +++ b/sys/dev/usb/usbdi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: usbdi.c,v 1.75 2014/11/01 00:41:33 mpi Exp $ */ +/* $OpenBSD: usbdi.c,v 1.76 2015/01/09 12:07:50 mpi Exp $ */ /* $NetBSD: usbdi.c,v 1.103 2002/09/27 15:37:38 provos Exp $ */ /* $FreeBSD: src/sys/dev/usb/usbdi.c,v 1.28 1999/11/17 22:33:49 n_hibma Exp $ */ @@ -596,7 +596,7 @@ usbd_clear_endpoint_stall_async(struct usbd_pipe *pipe) USETW(req.wValue, UF_ENDPOINT_HALT); USETW(req.wIndex, pipe->endpoint->edesc->bEndpointAddress); USETW(req.wLength, 0); - err = usbd_do_request_async(dev, &req, 0); + err = usbd_do_request_async(dev, &req, 0, 0, 0); return (err); } @@ -979,7 +979,7 @@ usbd_do_request_async_cb(struct usbd_xfer *xfer, void *priv, */ usbd_status usbd_do_request_async(struct usbd_device *dev, usb_device_request_t *req, - void *data) + void *data, void *priv, usbd_callback callback) { struct usbd_xfer *xfer; usbd_status err; @@ -987,8 +987,10 @@ usbd_do_request_async(struct usbd_device *dev, usb_device_request_t *req, xfer = usbd_alloc_xfer(dev); if (xfer == NULL) return (USBD_NOMEM); - usbd_setup_default_xfer(xfer, dev, 0, USBD_DEFAULT_TIMEOUT, req, - data, UGETW(req->wLength), 0, usbd_do_request_async_cb); + if (callback == NULL) + callback = usbd_do_request_async_cb; + usbd_setup_default_xfer(xfer, dev, priv, USBD_DEFAULT_TIMEOUT, req, + data, UGETW(req->wLength), 0, callback); err = usbd_transfer(xfer); if (err != USBD_IN_PROGRESS) { usbd_free_xfer(xfer); |