Re: hid powersave by autosuspend #2

Alan Stern <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On Tue, 6 Feb 2007, Oliver Neukum wrote:

> Hi,
> 
> this fixes the issue with output in the hid driver. I can now get keyboards
> to sleep. It is still not perfect, but an important step. Comments?
> 
> 	Regards
> 		Oliver
> 
> PS: against vanilla 2.6.20

I'd really prefer to see something like the patch below added instead of 
your idle timer.  (Note: not even compile-tested!)

With this infrastructure in place, all you have to do is

	set_bit(USB_DF_DEVICE_BUSY, &hid_to_usb_dev(hid)->dflags);

whenever an event occurs.  No messing around with extra timers.

Alan Stern



Index: usb-2.6/drivers/usb/core/usb.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/usb.c
+++ usb-2.6/drivers/usb/core/usb.c
@@ -209,8 +209,13 @@ static void usb_autosuspend_work(struct 
 		container_of(work, struct usb_device, autosuspend.work);
 
 	usb_pm_lock(udev);
-	udev->auto_pm = 1;
-	usb_suspend_both(udev, PMSG_SUSPEND);
+	if (test_and_clear_bit(USB_DF_DEVICE_BUSY, &udev->dflags))
+		queue_delayed_work(ksuspend_usb_wq, &udev->autosuspend,
+				USB_AUTOSUSPEND_DELAY);
+	else {
+		udev->auto_pm = 1;
+		usb_suspend_both(udev, PMSG_SUSPEND);
+	}
 	usb_pm_unlock(udev);
 }
 
Index: usb-2.6/include/linux/usb.h
===================================================================
--- usb-2.6.orig/include/linux/usb.h
+++ usb-2.6/include/linux/usb.h
@@ -389,6 +389,9 @@ struct usb_device {
 
 	int pm_usage_cnt;		/* usage counter for autosuspend */
 	u32 quirks;			/* quirks of the whole device */
+	unsigned long dflags;		/* device-wide atomic bitflags */
+#define USB_DF_DEVICE_BUSY	0
+
 #ifdef CONFIG_PM
 	struct delayed_work autosuspend; /* for delayed autosuspends */
 	struct mutex pm_mutex;		/* protects PM operations */


-------------------------------------------------------------------------
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
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.