ChangeSet 1.1832.55.39, 2004/09/09 10:03:05-07:00, [EMAIL PROTECTED]

[PATCH] USB: Add OTG support to g_file_storage

This patch adds minimal USB On-The-Go support (mainly just an extra
descriptor) to the File-Storage Gadget.  The changes were based on the
additions made to the Gadget Zero driver.


Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>


 drivers/usb/gadget/file_storage.c |   26 +++++++++++++++++++++++---
 1 files changed, 23 insertions(+), 3 deletions(-)


diff -Nru a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
--- a/drivers/usb/gadget/file_storage.c 2004-10-19 08:17:05 -07:00
+++ b/drivers/usb/gadget/file_storage.c 2004-10-19 08:17:05 -07:00
@@ -248,7 +248,7 @@
 
 #define DRIVER_DESC            "File-backed Storage Gadget"
 #define DRIVER_NAME            "g_file_storage"
-#define DRIVER_VERSION         "28 July 2004"
+#define DRIVER_VERSION         "31 August 2004"
 
 static const char longname[] = DRIVER_DESC;
 static const char shortname[] = DRIVER_NAME;
@@ -866,6 +866,14 @@
        .bMaxPower =            1,      // self-powered
 };
 
+static struct usb_otg_descriptor
+otg_desc = {
+       .bLength =              sizeof(otg_desc),
+       .bDescriptorType =      USB_DT_OTG,
+
+       .bmAttributes =         USB_OTG_SRP,
+};
+
 /* There is only one interface. */
 
 static struct usb_interface_descriptor
@@ -914,6 +922,7 @@
 };
 
 static const struct usb_descriptor_header *fs_function[] = {
+       (struct usb_descriptor_header *) &otg_desc,
        (struct usb_descriptor_header *) &intf_desc,
        (struct usb_descriptor_header *) &fs_bulk_in_desc,
        (struct usb_descriptor_header *) &fs_bulk_out_desc,
@@ -976,6 +985,7 @@
 };
 
 static const struct usb_descriptor_header *hs_function[] = {
+       (struct usb_descriptor_header *) &otg_desc,
        (struct usb_descriptor_header *) &intf_desc,
        (struct usb_descriptor_header *) &hs_bulk_in_desc,
        (struct usb_descriptor_header *) &hs_bulk_out_desc,
@@ -1018,9 +1028,10 @@
  * and with code managing interfaces and their altsettings.  They must
  * also handle different speeds and other-speed requests.
  */
-static int populate_config_buf(enum usb_device_speed speed,
+static int populate_config_buf(struct usb_gadget *gadget,
                u8 *buf, u8 type, unsigned index)
 {
+       enum usb_device_speed                   speed = gadget->speed;
        int                                     len;
        const struct usb_descriptor_header      **function;
 
@@ -1036,6 +1047,10 @@
 #endif
                function = fs_function;
 
+       /* for now, don't advertise srp-only devices */
+       if (!gadget->is_otg)
+               function++;
+
        len = usb_gadget_config_buf(&config_desc, buf, EP0_BUFSIZE, function);
        ((struct usb_config_descriptor *) buf)->bDescriptorType = type;
        return len;
@@ -1366,7 +1381,7 @@
 #ifdef CONFIG_USB_GADGET_DUALSPEED
                get_config:
 #endif
-                       value = populate_config_buf(fsg->gadget->speed,
+                       value = populate_config_buf(fsg->gadget,
                                        req->buf,
                                        ctrl->wValue >> 8,
                                        ctrl->wValue & 0xff);
@@ -3895,6 +3910,11 @@
        hs_bulk_out_desc.bEndpointAddress = fs_bulk_out_desc.bEndpointAddress;
        hs_intr_in_desc.bEndpointAddress = fs_intr_in_desc.bEndpointAddress;
 #endif
+
+       if (gadget->is_otg) {
+               otg_desc.bmAttributes |= USB_OTG_HNP,
+               config_desc.bmAttributes |= USB_CONFIG_ATT_WAKEUP;
+       }
 
        rc = -ENOMEM;
 



-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to