On Wed, Aug 07, 2019 at 10:29:50AM -0400, Alan Stern wrote:
> It has been requested that usbfs should implement runtime power
> management, instead of forcing the device to remain at full power as
> long as the device file is open.  This patch introduces that new
> feature.
> 
> It does so by adding three new usbfs ioctls:
> 
>       USBDEVFS_FORBID_SUSPEND: Prevents the device from going into
>       runtime suspend (and causes a resume if the device is already
>       suspended).
> 
>       USBDEVFS_ALLOW_SUSPEND: Allows the device to go into runtime
>       suspend.  Some time may elapse before the device actually is
>       suspended, depending on things like the autosuspend delay.
> 
>       USBDEVFS_WAIT_FOR_RESUME: Blocks until the call is interrupted
>       by a signal or at least one runtime resume has occurred since
>       the most recent ALLOW_SUSPEND ioctl call (which may mean
>       immediately, even if the device is currently suspended).  In
>       the latter case, the device is prevented from suspending again
>       just as if FORBID_SUSPEND was called before the ioctl returns.
> 
> For backward compatibility, when the device file is first opened
> runtime suspends are forbidden.  The userspace program can then allow
> suspends whenever it wants, and either resume the device directly (by
> forbidding suspends again) or wait for a resume from some other source
> (such as a remote wakeup).  URBs submitted to a suspended device will
> fail or will complete with an appropriate error code.
> 
> This combination of ioctls is sufficient for user programs to have
> nearly the same degree of control over a device's runtime power
> behavior as kernel drivers do.
> 
> Still lacking is documentation for the new ioctls.  I intend to add it
> later, after the existing documentation for the usbfs userspace API is
> straightened out into a reasonable form.
> 
> Suggested-by: Mayuresh Kulkarni <mkulka...@opensource.cirrus.com>
> Signed-off-by: Alan Stern <st...@rowland.harvard.edu>
> 
> ---
> 
> v2: Return -EINTR instead of -ERESTARTSYS when proc_wait_for_resume()
> is interrupted by a signal.

Looks great, thanks for doing this.  Now queued up.

greg k-h

Reply via email to