diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2010-01-08 12:57:02 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-02 14:54:11 -0800 |
commit | 5899f1e020c8d53b2b6fbd6a6cf39c891ccdfade (patch) | |
tree | acd9041996aa81db4bdc9a30fe1926e511d7eb77 /drivers/usb/core/quirks.c | |
parent | 088f7fec8a0e683db72fd8826c5d3ab914e197b1 (diff) | |
download | talos-op-linux-5899f1e020c8d53b2b6fbd6a6cf39c891ccdfade.tar.gz talos-op-linux-5899f1e020c8d53b2b6fbd6a6cf39c891ccdfade.zip |
USB: change handling of negative autosuspend delays
This patch (as1327) changes the way negative autosuspend delays
prevent device from autosuspending. The current code checks for
negative values explicitly in the autosuspend_check() routine. The
updated code keeps things from getting that far by using
usb_autoresume_device() to increment the usage counter when a negative
delay is set, and by using usb_autosuspend_device() to decrement the
usage counter when a non-negative delay is set.
This complicates the set_autosuspend() attribute method code slightly,
but it will reduce the overall power management overhead.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/quirks.c')
-rw-r--r-- | drivers/usb/core/quirks.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 4314f259524b..f073c5cb4e7b 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c @@ -103,11 +103,21 @@ void usb_detect_quirks(struct usb_device *udev) dev_dbg(&udev->dev, "USB quirks for this device: %x\n", udev->quirks); +#ifdef CONFIG_USB_SUSPEND + /* By default, disable autosuspend for all devices. The hub driver * will enable it for hubs. */ usb_disable_autosuspend(udev); + /* Autosuspend can also be disabled if the initial autosuspend_delay + * is negative. + */ + if (udev->autosuspend_delay < 0) + usb_autoresume_device(udev); + +#endif + /* For the present, all devices default to USB-PERSIST enabled */ #if 0 /* was: #ifdef CONFIG_PM */ /* Hubs are automatically enabled for USB-PERSIST */ |