
Hi Kishon,
Made changes in gadget.h that is required after adding udc-core.c except changes that might break other platforms.
Signed-off-by: Kishon Vijay Abraham I kishon@ti.com
include/linux/usb/gadget.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+)
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 9bccd45..1960958 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h @@ -396,6 +396,7 @@ static inline void usb_ep_fifo_flush(struct usb_ep *ep) /*-------------------------------------------------------------------------*/ struct usb_gadget; +struct usb_gadget_driver;
/* the rest of the api to the controller hardware: device operations,
- which don't involve endpoints (or i/o).
@@ -409,6 +410,9 @@ struct usb_gadget_ops { int (*pullup) (struct usb_gadget *, int is_on); int (*ioctl)(struct usb_gadget *, unsigned code, unsigned long param);
- int (*udc_start)(struct usb_gadget *,
struct usb_gadget_driver *);
- int (*udc_stop)(struct usb_gadget *);
};
/** @@ -459,6 +463,7 @@ struct usb_gadget { struct usb_ep *ep0; struct list_head ep_list; /* of usb_ep */ enum usb_device_speed speed;
- enum usb_device_state state; unsigned is_dualspeed:1; unsigned is_otg:1; unsigned is_a_peripheral:1;
@@ -686,6 +691,7 @@ static inline int usb_gadget_disconnect(struct usb_gadget *gadget) /**
- struct usb_gadget_driver - driver for usb 'slave' devices
- @function: String describing the gadget's function
- @speed: Highest speed the driver handles.
- @bind: Invoked when the driver is bound to a gadget, usually
- after registering the driver.
@@ -707,6 +713,8 @@ static inline int usb_gadget_disconnect(struct usb_gadget *gadget)
- Called in a context that permits sleeping.
- @suspend: Invoked on USB suspend. May be called in_interrupt.
- @resume: Invoked on USB resume. May be called in_interrupt.
- @reset: Invoked on USB bus reset. It is mandatory for all gadget
drivers
- and should be called in_interrupt.
- Devices are disabled till a gadget driver successfully bind()s,
which
- means the driver will handle setup() requests needed to enumerate
(and @@ -753,6 +761,7 @@ static inline int usb_gadget_disconnect(struct usb_gadget *gadget)
- power is maintained.
*/ struct usb_gadget_driver {
- char *function; enum usb_device_speed speed; int (*bind)(struct usb_gadget *); void (*unbind)(struct usb_gadget *);
@@ -761,6 +770,7 @@ struct usb_gadget_driver { void (*disconnect)(struct usb_gadget *); void (*suspend)(struct usb_gadget *); void (*resume)(struct usb_gadget *);
- void (*reset)(struct usb_gadget *);
};
@@ -801,6 +811,10 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver); */ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver);
+int usb_add_gadget_udc_release(struct device *parent,
struct usb_gadget *gadget, void (*release)(struct
device *dev)); +int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget); +void usb_del_gadget_udc(struct usb_gadget *gadget); /*-------------------------------------------------------------------------*/
/* utility to simplify dealing with string descriptors */ @@ -847,6 +861,35 @@ int usb_gadget_config_buf(const struct usb_config_descriptor *config, void *buf, unsigned buflen, const struct usb_descriptor_header **desc); /*-------------------------------------------------------------------------*/ +/* utility to simplify map/unmap of usb_requests to/from DMA */
+extern int usb_gadget_map_request(struct usb_gadget *gadget,
struct usb_request *req, int
is_in); + +extern void usb_gadget_unmap_request(struct usb_gadget *gadget,
struct usb_request *req, int
is_in); + +/*-------------------------------------------------------------------------*/
+/* utility to set gadget state properly */
+extern void usb_gadget_set_state(struct usb_gadget *gadget,
enum usb_device_state state);
+/*-------------------------------------------------------------------------*/
+/* utility to tell udc core that the bus reset occurs */ +extern void usb_gadget_udc_reset(struct usb_gadget *gadget,
struct usb_gadget_driver *driver);
+/*-------------------------------------------------------------------------*/
+/* utility to give requests back to the gadget layer */
+extern void usb_gadget_giveback_request(struct usb_ep *ep,
struct usb_request *req);
+/*-------------------------------------------------------------------------*/
/* utility wrapping a simple endpoint selection policy */
Reviewed-by: Lukasz Majewski l.majewski@samsung.com