On Wed, 31 Jan 2007, Oliver Neukum wrote:

> Hi,
> 
> this preliminary patch should suspend your mouse, if it supports remote
> wakeup. In fact it should do this to all devices which are HID, claimed by
> the input layer and support remote wakeup.
> 
> It works for me with my mouse. I've tested letting it autosuspend and
> resume. It survives going to a text console, init 3 and hotplugging.
> Anything else is untested. I think it'll crash and burn with PID devices.
> I am working on that.
> 
> I am pretty sure that it actually goes to sleep taking the root hub with it.
> I'd be interested in knowing how much power it really saves. Short of
> running dry my laptop's battery I have no way of telling.
> 
> You need to compile with EXPERIMENTAL & USB_SUSPEND.
> 
>       Regards
>               Oliver

This looks more complicated than it should be.  In particular, the 
addition of a new "idle" timer should not be needed.

We already have an autosuspend timer: the one embedded in the autosuspend
delayed_work struct inside struct usb_device.  What you really want to do
is make the delay configurable per-device instead of relying on a fixed
constant USB_AUTOSUSPEND_DELAY.  Doing things that way would remove a
tremendous amount of complexity from your patch.

In fact, I have already been considering making USB_AUTOSUSPEND_DELAY and 
module parameter for usbcore.  The idea is this: Some device must not be 
autosuspended.  Maybe the device can't handle it, maybe its upstream hub 
doesn't work right,...  There's even the case of a broken BIOS which 
unilaterally restarts a suspended EHCI controller!

Anyway, userspace has to be able to tell the kernel not to suspend these 
devices, _before_ the default autosuspend has already kicked in.  At 
boot-up time this can't be done; userspace is too busy with start-up tasks 
and other initializations and 2 seconds is just not enough time.

If the user could put usbcore.autosuspend_delay=60 on the boot command 
line, then it would be possible to prevent some devices from being 
autosuspended.

Alan Stern

P.S.: Nowadays we're supposed to use DEFINE_SPINLOCK().


-------------------------------------------------------------------------
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