From 8bfbe29a487653b8b5013885eeb56ad6460f0923 Mon Sep 17 00:00:00 2001 From: David Lopo Date: Tue, 29 Apr 2008 10:12:37 +0100 Subject: [PATCH] --- yaml --- r: 95806 b: refs/heads/master c: a5e54b0dbb6a099793caf508b1d6c7d82f965ec3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/linux/usb/gadget.h | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 019782d5a720..d04238bb7fd1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4d0f8cbca3a97900f85b082064a63c7a5928bd7 +refs/heads/master: a5e54b0dbb6a099793caf508b1d6c7d82f965ec3 diff --git a/trunk/include/linux/usb/gadget.h b/trunk/include/linux/usb/gadget.h index d8128f7102c9..cf468fbdbf8e 100644 --- a/trunk/include/linux/usb/gadget.h +++ b/trunk/include/linux/usb/gadget.h @@ -114,6 +114,8 @@ struct usb_ep_ops { int (*dequeue) (struct usb_ep *ep, struct usb_request *req); int (*set_halt) (struct usb_ep *ep, int value); + int (*set_wedge) (struct usb_ep *ep); + int (*fifo_status) (struct usb_ep *ep); void (*fifo_flush) (struct usb_ep *ep); }; @@ -348,6 +350,25 @@ static inline int usb_ep_clear_halt(struct usb_ep *ep) return ep->ops->set_halt(ep, 0); } +/** + * usb_ep_set_wedge - sets the halt feature and ignores clear requests + * @ep: the endpoint being wedged + * + * Use this to stall an endpoint and ignore CLEAR_FEATURE(HALT_ENDPOINT) + * requests. If the gadget driver clears the halt status, it will + * automatically unwedge the endpoint. + * + * Returns zero on success, else negative errno. + */ +static inline int +usb_ep_set_wedge(struct usb_ep *ep) +{ + if (ep->ops->set_wedge) + return ep->ops->set_wedge(ep); + else + return ep->ops->set_halt(ep, 1); +} + /** * usb_ep_fifo_status - returns number of bytes in fifo, or error * @ep: the endpoint whose fifo status is being checked.