]> err.no Git - linux-2.6/commitdiff
USB Gadget: documentation update
authorAlan Stern <stern@rowland.harvard.edu>
Mon, 2 Jun 2008 20:26:48 +0000 (16:26 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 21 Jul 2008 22:16:27 +0000 (15:16 -0700)
This patch (as1102) clarifies two points in the USB Gadget kerneldoc:

Request completion callbacks are always made with interrupts
disabled;

Device controllers may not support STALLing the status stage
of a control transfer after the data stage is over.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
include/linux/usb/gadget.h

index 0ebedaec075de8289dd6c3fb0f771c06cf5fe3bd..0460a746480ccf338e4f1a714099968e86e52b49 100644 (file)
@@ -33,7 +33,8 @@ struct usb_ep;
  * @short_not_ok: When reading data, makes short packets be
  *     treated as errors (queue stops advancing till cleanup).
  * @complete: Function called when request completes, so this request and
- *     its buffer may be re-used.
+ *     its buffer may be re-used.  The function will always be called with
+ *     interrupts disabled, and it must not sleep.
  *     Reads terminate with a short packet, or when the buffer fills,
  *     whichever comes first.  When writes terminate, some data bytes
  *     will usually still be in flight (often in a hardware fifo).
@@ -271,7 +272,10 @@ static inline void usb_ep_free_request(struct usb_ep *ep,
  * (Note that some USB device controllers disallow protocol stall responses
  * in some cases.)  When control responses are deferred (the response is
  * written after the setup callback returns), then usb_ep_set_halt() may be
- * used on ep0 to trigger protocol stalls.
+ * used on ep0 to trigger protocol stalls.  Depending on the controller,
+ * it may not be possible to trigger a status-stage protocol stall when the
+ * data stage is over, that is, from within the response's completion
+ * routine.
  *
  * For periodic endpoints, like interrupt or isochronous ones, the usb host
  * arranges to poll once per interval, and the gadget driver usually will