]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/usb-skeleton.c
ipg: Kconfig whitepaces/tab damages
[linux-2.6-omap-h63xx.git] / drivers / usb / usb-skeleton.c
index 59973aecd96828269bf7b72d6e6575726a111ee0..c815a40e167f33f7427f0c908514e0e93b685b7d 100644 (file)
@@ -125,6 +125,7 @@ static int skel_open(struct inode *inode, struct file *file)
 
        /* save our object in the file's private structure */
        file->private_data = dev;
+       mutex_unlock(&dev->io_mutex);
 
 exit:
        return retval;
@@ -467,12 +468,35 @@ static int skel_resume (struct usb_interface *intf)
        return 0;
 }
 
+static int skel_pre_reset(struct usb_interface *intf)
+{
+       struct usb_skel *dev = usb_get_intfdata(intf);
+
+       mutex_lock(&dev->io_mutex);
+       skel_draw_down(dev);
+
+       return 0;
+}
+
+static int skel_post_reset(struct usb_interface *intf)
+{
+       struct usb_skel *dev = usb_get_intfdata(intf);
+
+       /* we are sure no URBs are active - no locking needed */
+       dev->errors = -EPIPE;
+       mutex_unlock(&dev->io_mutex);
+
+       return 0;
+}
+
 static struct usb_driver skel_driver = {
        .name =         "skeleton",
        .probe =        skel_probe,
        .disconnect =   skel_disconnect,
        .suspend =      skel_suspend,
        .resume =       skel_resume,
+       .pre_reset =    skel_pre_reset,
+       .post_reset =   skel_post_reset,
        .id_table =     skel_table,
        .supports_autosuspend = 1,
 };