Make it possible to specify the request flags when issuing a raw USB request.
This commit is contained in:
parent
16b49a78c6
commit
3064141641
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ugen.c,v 1.5 1998/12/26 12:53:01 augustss Exp $ */
|
||||
/* $NetBSD: ugen.c,v 1.6 1998/12/29 03:13:10 augustss Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -835,7 +835,8 @@ ugenioctl(dev, cmd, addr, flag, p)
|
|||
goto ret;
|
||||
}
|
||||
}
|
||||
r = usbd_do_request(sc->sc_udev, &ur->request, ptr);
|
||||
r = usbd_do_request_flags(sc->sc_udev, &ur->request,
|
||||
ptr, ur->flags);
|
||||
if (r) {
|
||||
error = EIO;
|
||||
goto ret;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: usb.c,v 1.8 1998/12/28 02:20:28 augustss Exp $ */
|
||||
/* $NetBSD: usb.c,v 1.9 1998/12/29 03:13:10 augustss Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -343,11 +343,12 @@ usbioctl(dev, cmd, data, flag, p)
|
|||
usbd_status r;
|
||||
int error = 0;
|
||||
|
||||
DPRINTF(("usbioctl: USB_REQUEST addr=%d len=%d\n", addr, len));
|
||||
if (len < 0 || len > 32768)
|
||||
return EINVAL;
|
||||
return (EINVAL);
|
||||
if (addr < 0 || addr >= USB_MAX_DEVICES ||
|
||||
sc->sc_bus->devices[addr] == 0)
|
||||
return EINVAL;
|
||||
return (EINVAL);
|
||||
if (len != 0) {
|
||||
iov.iov_base = (caddr_t)ur->data;
|
||||
iov.iov_len = len;
|
||||
|
@ -367,8 +368,8 @@ usbioctl(dev, cmd, data, flag, p)
|
|||
goto ret;
|
||||
}
|
||||
}
|
||||
r = usbd_do_request(sc->sc_bus->devices[addr],
|
||||
&ur->request, ptr);
|
||||
r = usbd_do_request_flags(sc->sc_bus->devices[addr],
|
||||
&ur->request, ptr, ur->flags);
|
||||
if (r) {
|
||||
error = EIO;
|
||||
goto ret;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: usb.h,v 1.11 1998/12/28 12:35:27 augustss Exp $ */
|
||||
/* $NetBSD: usb.h,v 1.12 1998/12/29 03:13:10 augustss Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -368,6 +368,9 @@ struct usb_ctl_request {
|
|||
int addr;
|
||||
usb_device_request_t request;
|
||||
void *data;
|
||||
int flags;
|
||||
/* XXX must match flags in usbdi.h */
|
||||
#define USBD_SHORT_XFER_OK 0x04
|
||||
};
|
||||
|
||||
struct usb_alt_interface {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: usbdi.c,v 1.16 1998/12/28 20:14:00 augustss Exp $ */
|
||||
/* $NetBSD: usbdi.c,v 1.17 1998/12/29 03:13:10 augustss Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -1034,6 +1034,16 @@ usbd_do_request(dev, req, data)
|
|||
usbd_device_handle dev;
|
||||
usb_device_request_t *req;
|
||||
void *data;
|
||||
{
|
||||
return (usbd_do_request_flags(dev, req, data, 0));
|
||||
}
|
||||
|
||||
usbd_status
|
||||
usbd_do_request_flags(dev, req, data, flags)
|
||||
usbd_device_handle dev;
|
||||
usb_device_request_t *req;
|
||||
void *data;
|
||||
u_int16_t flags;
|
||||
{
|
||||
usbd_request_handle reqh;
|
||||
usbd_status r;
|
||||
|
@ -1050,7 +1060,7 @@ usbd_do_request(dev, req, data)
|
|||
return (USBD_NOMEM);
|
||||
r = usbd_setup_default_request(
|
||||
reqh, dev, 0, USBD_DEFAULT_TIMEOUT, req, data,
|
||||
UGETW(req->wLength), 0, 0);
|
||||
UGETW(req->wLength), flags, 0);
|
||||
if (r != USBD_NORMAL_COMPLETION)
|
||||
goto bad;
|
||||
r = usbd_sync_transfer(reqh);
|
||||
|
|
Loading…
Reference in New Issue