Hi,

this implements autosuspend for usb printers. It compiles and is tested.

        Regards
                Oliver

Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]>
--

--- a/drivers/usb/class/usblp.c 2007-01-18 14:12:27.000000000 +0100
+++ b/drivers/usb/class/usblp.c 2007-01-18 14:42:03.000000000 +0100
@@ -398,6 +398,9 @@
        retval = 0;
 #endif
 
+       retval = usb_autopm_get_interface(intf);
+       if (retval < 0)
+               goto out;
        usblp->used = 1;
        file->private_data = usblp;
 
@@ -442,6 +445,7 @@
        usblp->used = 0;
        if (usblp->present) {
                usblp_unlink_urbs(usblp);
+               usb_autopm_put_interface(usblp->intf);
        } else          /* finish cleanup from disconnect */
                usblp_cleanup (usblp);
        mutex_unlock (&usblp_mutex);
@@ -1203,14 +1207,9 @@
 {
        struct usblp *usblp = usb_get_intfdata (intf);
 
-       /* this races against normal access and open */
-       mutex_lock (&usblp_mutex);
-       mutex_lock (&usblp->mut);
        /* we take no more IO */
        usblp->sleeping = 1;
        usblp_unlink_urbs(usblp);
-       mutex_unlock (&usblp->mut);
-       mutex_unlock (&usblp_mutex);
 
        return 0;
 }
@@ -1220,15 +1219,9 @@
        struct usblp *usblp = usb_get_intfdata (intf);
        int r;
 
-       mutex_lock (&usblp_mutex);
-       mutex_lock (&usblp->mut);
-
        usblp->sleeping = 0;
        r = handle_bidir (usblp);
 
-       mutex_unlock (&usblp->mut);
-       mutex_unlock (&usblp_mutex);
-
        return r;
 }
 
@@ -1251,6 +1244,7 @@
        .suspend =      usblp_suspend,
        .resume =       usblp_resume,
        .id_table =     usblp_ids,
+       .supports_autosuspend = 1,
 };
 
 static int __init usblp_init(void)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
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