diff options
author | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-09-24 15:09:29 +0530 |
---|---|---|
committer | Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> | 2013-10-04 12:01:20 +0530 |
commit | 50302c3eb9933d1ba122be58cdf65001dd3bf028 (patch) | |
tree | d9ec2a640e128ac2539128eea9503cd4257557f5 | |
parent | 7f5d67ca5f9a50d1c2169e5b2417e60b1b7d3967 (diff) | |
download | SLOF-50302c3eb9933d1ba122be58cdf65001dd3bf028.zip SLOF-50302c3eb9933d1ba122be58cdf65001dd3bf028.tar.gz SLOF-50302c3eb9933d1ba122be58cdf65001dd3bf028.tar.bz2 |
usb-core: Add CLEAR FEATURE api
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
-rw-r--r-- | lib/libusb/usb-core.c | 19 | ||||
-rw-r--r-- | lib/libusb/usb-core.h | 3 |
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/libusb/usb-core.c b/lib/libusb/usb-core.c index 308ddaa..6fad631 100644 --- a/lib/libusb/usb-core.c +++ b/lib/libusb/usb-core.c @@ -308,6 +308,25 @@ static int usb_set_config(struct usb_dev *dev, uint8_t cfg_value) return usb_send_ctrl(dev->control, &req, NULL); } +static int usb_clear_halt(struct usb_pipe *pipe) +{ + struct usb_dev_req req; + struct usb_dev *dev; + + if (pipe && pipe->dev) { + dev = pipe->dev; + dprintf("Clearing port %d dir %d type %d\n", + pipe->epno, pipe->dir, pipe->type); + req.bmRequestType = REQT_DIR_OUT | REQT_REC_EP; + req.bRequest = REQ_CLEAR_FEATURE; + req.wValue = FEATURE_ENDPOINT_HALT; + req.wIndex = cpu_to_le16(pipe->epno | pipe->dir); + req.wLength = 0; + return usb_send_ctrl(dev->control, &req, NULL); + } + return false; +} + int usb_dev_populate_pipe(struct usb_dev *dev, struct usb_ep_descr *ep, void *buf, size_t len) { diff --git a/lib/libusb/usb-core.h b/lib/libusb/usb-core.h index 5914a64..75aa0f9 100644 --- a/lib/libusb/usb-core.h +++ b/lib/libusb/usb-core.h @@ -136,6 +136,9 @@ struct usb_pipe { #define REQ_SET_INTERFACE 11 #define REQ_SYNCH_FRAME 12 +#define FEATURE_DEVICE_REMOTE_WAKEUP 1 +#define FEATURE_ENDPOINT_HALT 0 + #define REQT_REC_DEVICE 0 #define REQT_REC_INTERFACE 1 #define REQT_REC_EP 2 |