diff options
Diffstat (limited to 'include/linux/usb/gadget.h')
-rw-r--r-- | include/linux/usb/gadget.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index dd1571d..fc450a7 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -131,6 +131,7 @@ struct usb_ep_ops { * @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. + * @maxburst: The maximum burst size. * @driver_data:for use by the gadget driver. all other fields are * read-only to gadget drivers. * @@ -145,6 +146,9 @@ struct usb_ep { const struct usb_ep_ops *ops; struct list_head ep_list; unsigned maxpacket:16; + + unsigned numstreams:5; + unsigned maxburst:4; }; /*-------------------------------------------------------------------------*/ @@ -416,6 +420,13 @@ static inline void usb_ep_fifo_flush(struct usb_ep *ep) /*-------------------------------------------------------------------------*/ +struct usb_dcd_config_params { + __u8 bU1devExitLat; /* U1 Device exit Latency */ +#define USB_DEFAULT_U1_DEV_EXIT_LAT 0x01 /* Less then 1 microsec */ + __le16 bU2DevExitLat; /* U2 Device exit Latency */ +#define USB_DEFAULT_U2_DEV_EXIT_LAT 0x1F4 /* Less then 500 microsec */ +}; + struct usb_gadget; /* the rest of the api to the controller hardware: device operations, @@ -430,6 +441,7 @@ struct usb_gadget_ops { int (*pullup) (struct usb_gadget *, int is_on); int (*ioctl)(struct usb_gadget *, unsigned code, unsigned long param); + void (*get_config_params)(struct usb_dcd_config_params *); }; /** @@ -521,6 +533,24 @@ static inline int gadget_is_dualspeed(struct usb_gadget *g) } /** + * gadget_is_superspeed() - return true if the hardware handles + * supperspeed + * @g: controller that might support supper speed + */ +static inline int gadget_is_superspeed(struct usb_gadget *g) +{ +#ifdef CONFIG_USB_GADGET_SUPERSPEED + /* + * runtime test would check "g->is_superspeed" ... that might be + * useful to work around hardware bugs, but is mostly pointless + */ + return 1; +#else + return 0; +#endif +} + +/** * gadget_is_otg - return true iff the hardware is OTG-ready * @g: controller that might have a Mini-AB connector * @@ -671,6 +701,7 @@ static inline int usb_gadget_vbus_disconnect(struct usb_gadget *gadget) */ static inline int usb_gadget_connect(struct usb_gadget *gadget) { + printk(KERN_DEBUG "usb: %s\n", __func__); if (!gadget->ops->pullup) return -EOPNOTSUPP; return gadget->ops->pullup(gadget, 1); @@ -693,6 +724,7 @@ static inline int usb_gadget_connect(struct usb_gadget *gadget) */ static inline int usb_gadget_disconnect(struct usb_gadget *gadget) { + printk(KERN_DEBUG "usb: %s\n", __func__); if (!gadget->ops->pullup) return -EOPNOTSUPP; return gadget->ops->pullup(gadget, 0); |