This patch adds resume event into gadgetfs.

Patch is against 2.6.17.

Feedback and comments are highly appreciated.

Signed-off-by: Milan Svoboda <[EMAIL PROTECTED]>
---

diff -uprN -X orig.bak.never.touch/Documentation/dontdiff 
orig.bak.never.touch/drivers/usb/gadget/inode.c 
new_gadget/drivers/usb/gadget/inode.c
--- orig.bak.never.touch/drivers/usb/gadget/inode.c     2006-06-19 
14:48:25.000000000 +0000
+++ new_gadget/drivers/usb/gadget/inode.c       2006-06-23 15:03:31.000000000 
+0000
@@ -1114,6 +1168,7 @@ next_event (struct dev_data *dev, enum u
                break;
        case GADGETFS_SETUP:            /* previous request timed out */
        case GADGETFS_SUSPEND:          /* same effect */
+       case GADGETFS_RESUME:           /* same effect */
                /* these events can't be repeated */
                for (i = 0; i != dev->ev_next; i++) {
                        if (dev->event [i].type != type)
@@ -1728,6 +1817,26 @@ gadgetfs_suspend (struct usb_gadget *gad
        spin_unlock (&dev->lock);
 }
 
+static void
+gadgetfs_resume (struct usb_gadget *gadget)
+{
+       struct dev_data         *dev = get_gadget_data (gadget);
+
+       INFO (dev, "resumed from state %d\n", dev->state);
+       spin_lock (&dev->lock);
+       switch (dev->state) {
+       case STATE_SETUP:               // VERY odd... host died??
+       case STATE_CONNECTED:
+       case STATE_UNCONNECTED:
+               next_event (dev, GADGETFS_RESUME);
+               ep0_readable (dev);
+               /* FALLTHROUGH */
+       default:
+               break;
+       }
+       spin_unlock (&dev->lock);
+}
+
 static struct usb_gadget_driver gadgetfs_driver = {
 #ifdef CONFIG_USB_GADGET_DUALSPEED
        .speed          = USB_SPEED_HIGH,
@@ -1740,6 +1849,7 @@ static struct usb_gadget_driver gadgetfs
        .setup          = gadgetfs_setup,
        .disconnect     = gadgetfs_disconnect,
        .suspend        = gadgetfs_suspend,
+       .resume         = gadgetfs_resume,
 
        .driver         = {
                .name           = (char *) shortname,
--- orig.bak/include/linux/usb_gadgetfs.h       2005-03-02 07:38:10.000000000 
+0000
+++ new_gadget.newest/include/linux/usb_gadgetfs.h      2006-06-15 
13:55:35.000000000 +0000
@@ -33,6 +33,7 @@ enum usb_gadgetfs_event_type {
        GADGETFS_DISCONNECT,
        GADGETFS_SETUP,
        GADGETFS_SUSPEND,
+       GADGETFS_RESUME,
        // and likely more !
 };
 
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to