diff options
| author | Tatyana Brokhman <tlinder@codeaurora.org> | 2011-06-29 16:41:50 +0300 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-07-01 14:27:05 -0700 | 
| commit | bdb64d727216b49a18c2b8337658adc6b2db82ea (patch) | |
| tree | 93215946a88413fabb656d0cb868a86b2c72c8c1 /include/linux/usb/composite.h | |
| parent | 35a0e0bf6f6b2b900d461e9f35c286953b2b1afc (diff) | |
| download | olio-linux-3.10-bdb64d727216b49a18c2b8337658adc6b2db82ea.tar.xz olio-linux-3.10-bdb64d727216b49a18c2b8337658adc6b2db82ea.zip  | |
usb: gadget: add SuperSpeed support to the Gadget Framework
SuperSpeed USB has defined a new descriptor, called
the Binary Device Object Store (BOS) Descriptor. It
has also changed a bit the definition of SET_FEATURE
and GET_STATUS requests to add USB3-specific details.
This patch implements both changes to the Composite
Gadget Framework.
[ balbi@ti.com : slight changes to commit log
		 fixed a compile error on ARM ]
Signed-off-by: Tatyana Brokhman <tlinder@codeaurora.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/usb/composite.h')
| -rw-r--r-- | include/linux/usb/composite.h | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index a3e72dfa699..a316fba7351 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h @@ -59,6 +59,10 @@ struct usb_configuration;   * @hs_descriptors: Table of high speed descriptors, using interface and   *	string identifiers assigned during @bind().  If this pointer is null,   *	the function will not be available at high speed. + * @ss_descriptors: Table of super speed descriptors, using interface and + *	string identifiers assigned during @bind(). If this + *	pointer is null after initiation, the function will not + *	be available at super speed.   * @config: assigned when @usb_add_function() is called; this is the   *	configuration with which this function is associated.   * @bind: Before the gadget can register, all of its functions bind() to the @@ -77,6 +81,10 @@ struct usb_configuration;   * @setup: Used for interface-specific control requests.   * @suspend: Notifies functions when the host stops sending USB traffic.   * @resume: Notifies functions when the host restarts USB traffic. + * @get_status: Returns function status as a reply to + *	GetStatus() request when the recepient is Interface. + * @func_suspend: callback to be called when + *	SetFeature(FUNCTION_SUSPEND) is reseived   *   * A single USB function uses one or more interfaces, and should in most   * cases support operation at both full and high speeds.  Each function is @@ -106,6 +114,7 @@ struct usb_function {  	struct usb_gadget_strings	**strings;  	struct usb_descriptor_header	**descriptors;  	struct usb_descriptor_header	**hs_descriptors; +	struct usb_descriptor_header	**ss_descriptors;  	struct usb_configuration	*config; @@ -132,6 +141,10 @@ struct usb_function {  	void			(*suspend)(struct usb_function *);  	void			(*resume)(struct usb_function *); +	/* USB 3.0 additions */ +	int			(*get_status)(struct usb_function *); +	int			(*func_suspend)(struct usb_function *, +						u8 suspend_opt);  	/* private: */  	/* internals */  	struct list_head		list; @@ -219,6 +232,7 @@ struct usb_configuration {  	struct list_head	list;  	struct list_head	functions;  	u8			next_interface_id; +	unsigned		superspeed:1;  	unsigned		highspeed:1;  	unsigned		fullspeed:1;  	struct usb_function	*interface[MAX_CONFIG_INTERFACES];  |