|
@@ -140,11 +140,30 @@ struct usb_ep_ops {
|
|
|
void (*fifo_flush) (struct usb_ep *ep);
|
|
|
};
|
|
|
|
|
|
+/**
|
|
|
+ * struct usb_ep_caps - endpoint capabilities description
|
|
|
+ * @type_control:Endpoint supports control type (reserved for ep0).
|
|
|
+ * @type_iso:Endpoint supports isochronous transfers.
|
|
|
+ * @type_bulk:Endpoint supports bulk transfers.
|
|
|
+ * @type_int:Endpoint supports interrupt transfers.
|
|
|
+ * @dir_in:Endpoint supports IN direction.
|
|
|
+ * @dir_out:Endpoint supports OUT direction.
|
|
|
+ */
|
|
|
+struct usb_ep_caps {
|
|
|
+ unsigned type_control:1;
|
|
|
+ unsigned type_iso:1;
|
|
|
+ unsigned type_bulk:1;
|
|
|
+ unsigned type_int:1;
|
|
|
+ unsigned dir_in:1;
|
|
|
+ unsigned dir_out:1;
|
|
|
+};
|
|
|
+
|
|
|
/**
|
|
|
* struct usb_ep - device side representation of USB endpoint
|
|
|
* @name:identifier for the endpoint, such as "ep-a" or "ep9in-bulk"
|
|
|
* @ops: Function pointers used to access hardware-specific operations.
|
|
|
* @ep_list:the gadget's ep_list holds all of its endpoints
|
|
|
+ * @caps:The structure describing types and directions supported by endoint.
|
|
|
* @maxpacket:The maximum packet size used on this endpoint. The initial
|
|
|
* value can sometimes be reduced (hardware allowing), according to
|
|
|
* the endpoint descriptor used to configure the endpoint.
|
|
@@ -167,12 +186,14 @@ struct usb_ep_ops {
|
|
|
* gadget->ep_list. the control endpoint (gadget->ep0) is not in that list,
|
|
|
* and is accessed only in response to a driver setup() callback.
|
|
|
*/
|
|
|
+
|
|
|
struct usb_ep {
|
|
|
void *driver_data;
|
|
|
|
|
|
const char *name;
|
|
|
const struct usb_ep_ops *ops;
|
|
|
struct list_head ep_list;
|
|
|
+ struct usb_ep_caps caps;
|
|
|
bool claimed;
|
|
|
unsigned maxpacket:16;
|
|
|
unsigned maxpacket_limit:16;
|