Am Mittwoch, 7. Februar 2007 22:44 schrieb Alan Stern:
> On Wed, 7 Feb 2007, Oliver Neukum wrote:
> 
> > Am Mittwoch, 7. Februar 2007 18:40 schrieb Alan Stern:
> > > On Wed, 7 Feb 2007, Oliver Neukum wrote:
> > 
> > > > So the answer would not be the largest delay, but the largest delay
> > > > currently requested to be active.
> > > 
> > > We haven't yet defined how a driver can request an interface delay to be
> > > active or inactive.  The simplest way to do it is this: The interface
> > > delay value is active if it is > 0.  When the interface driver just wants
> > > the thing to be suspended (like when an HID device is closed), it can set
> > > its delay to 0.  And of course, 0 will be the default value for interface
> > > delays, whereas USB_AUTOSUSPEND_DELAY will be the default value for the
> > > extra per-device delay.  Thus non-PM-aware drivers, or drivers that don't 
> > > use the new delay value, will continue to work as before.
> > > 
> > > This way using the maximum delay value should do exactly what you want.  
> > > Right?
> > 
> > A driver has trouble setting this value sanely. HID can tell that the device
> > may go to sleep without delay or with the device (interface) specific delay.
> > Whether that delay should be 3s or 5min is unclear. My mouse wakes up
> > only if I press a button. Having it fall asleep after 10s of idleness is 
> > irritating.
> > The keyboard wakes up upon every key press, why not 2s?
> > The value must come from user space, presumably through sysfs. Therefore
> > the decision to actually use that value must be a separate flag.
> 
> This is sounding somewhat confused.  Or maybe I'm confused.
> 
> Since we suspend entire devices, and not single interfaces, any value
> coming from userspace will have to refer to the entire device.  So are you

No, user space can set values for each interface.

User space can know which value would be the best for each interface,
but it doesn't know which interfaces want to be autosuspended when idle
at all.

If you will each interface would have three states

3) don't autosuspend
2) autosuspend when idle, delay = x
1) autosuspend immediately

The whole device is in the state dictated by the maximum of these values.
In case the device is in state 2, a delay must be chosen. You need to take
the maximum of the interfaces in that state. To do so each interface needs
its own delay.

        Regards
                Oliver

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