Add reset API at usb_gadget_driver, and export it for other driver
use (eg, configfs).

Signed-off-by: Peter Chen <peter.c...@freescale.com>
---
 drivers/usb/gadget/composite.c |   13 ++++++++++++-
 include/linux/usb/composite.h  |    1 +
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c
index 6935a82..30ad3d5 100644
--- a/drivers/usb/gadget/composite.c
+++ b/drivers/usb/gadget/composite.c
@@ -1775,7 +1775,7 @@ done:
        return value;
 }
 
-void composite_disconnect(struct usb_gadget *gadget)
+static void __composite_disconnect(struct usb_gadget *gadget)
 {
        struct usb_composite_dev        *cdev = get_gadget_data(gadget);
        unsigned long                   flags;
@@ -1791,6 +1791,16 @@ void composite_disconnect(struct usb_gadget *gadget)
        spin_unlock_irqrestore(&cdev->lock, flags);
 }
 
+void composite_disconnect(struct usb_gadget *gadget)
+{
+       __composite_disconnect(gadget);
+       usb_gadget_disconnect(gadget);
+}
+
+void composite_reset(struct usb_gadget *gadget)
+{
+       __composite_disconnect(gadget);
+}
 /*-------------------------------------------------------------------------*/
 
 static ssize_t suspended_show(struct device *dev, struct device_attribute 
*attr,
@@ -2073,6 +2083,7 @@ static const struct usb_gadget_driver 
composite_driver_template = {
        .unbind         = composite_unbind,
 
        .setup          = composite_setup,
+       .reset          = composite_reset,
        .disconnect     = composite_disconnect,
 
        .suspend        = composite_suspend,
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h
index c330f5e..5e927d1 100644
--- a/include/linux/usb/composite.h
+++ b/include/linux/usb/composite.h
@@ -501,6 +501,7 @@ extern int usb_string_ids_n(struct usb_composite_dev *c, 
unsigned n);
 extern void composite_disconnect(struct usb_gadget *gadget);
 extern int composite_setup(struct usb_gadget *gadget,
                const struct usb_ctrlrequest *ctrl);
+extern void composite_reset(struct usb_gadget *gadget);
 
 /*
  * Some systems will need runtime overrides for the  product identifiers
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to