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