diff options
Diffstat (limited to 'drivers/usb/gadget/epautoconf.c')
| -rw-r--r-- | drivers/usb/gadget/epautoconf.c | 25 | 
1 files changed, 21 insertions, 4 deletions
| diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c index 6399c106a3a5..30fdab0ae383 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -53,13 +53,13 @@   * the restrictions that may apply. Some combinations of driver   * and hardware won't be able to autoconfigure.   * - * On success, this returns an un-claimed usb_ep, and modifies the endpoint + * On success, this returns an claimed usb_ep, and modifies the endpoint   * descriptor bEndpointAddress.  For bulk endpoints, the wMaxPacket value   * is initialized as if the endpoint were used at full speed and   * the bmAttribute field in the ep companion descriptor is   * updated with the assigned number of streams if it is   * different from the original value. To prevent the endpoint - * from being returned by a later autoconfig call, claim it by + * from being returned by a later autoconfig call, claims it by   * assigning ep->claimed to true.   *   * On failure, this returns a null endpoint descriptor. @@ -154,10 +154,10 @@ EXPORT_SYMBOL_GPL(usb_ep_autoconfig_ss);   * USB controller, and it can't know all the restrictions that may apply.   * Some combinations of driver and hardware won't be able to autoconfigure.   * - * On success, this returns an un-claimed usb_ep, and modifies the endpoint + * On success, this returns an claimed usb_ep, and modifies the endpoint   * descriptor bEndpointAddress.  For bulk endpoints, the wMaxPacket value   * is initialized as if the endpoint were used at full speed.  To prevent - * the endpoint from being returned by a later autoconfig call, claim it + * the endpoint from being returned by a later autoconfig call, claims it   * by assigning ep->claimed to true.   *   * On failure, this returns a null endpoint descriptor. @@ -172,6 +172,23 @@ struct usb_ep *usb_ep_autoconfig(  EXPORT_SYMBOL_GPL(usb_ep_autoconfig);  /** + * usb_ep_autoconfig_release - releases endpoint and set it to initial state + * @ep: endpoint which should be released + * + * This function can be used during function bind for endpoints obtained + * from usb_ep_autoconfig(). It unclaims endpoint claimed by + * usb_ep_autoconfig() to make it available for other functions. Endpoint + * which was released is no longer invalid and shouldn't be used in + * context of function which released it. + */ +void usb_ep_autoconfig_release(struct usb_ep *ep) +{ +	ep->claimed = false; +	ep->driver_data = NULL; +} +EXPORT_SYMBOL_GPL(usb_ep_autoconfig_release); + +/**   * usb_ep_autoconfig_reset - reset endpoint autoconfig state   * @gadget: device for which autoconfig state will be reset   * |