Documentation/driver-api/usb/power-management.rst

Source file repositories/reference/linux-study-clean/Documentation/driver-api/usb/power-management.rst

File Facts

System
Linux kernel
Corpus path
Documentation/driver-api/usb/power-management.rst
Extension
.rst
Size
35394 bytes
Lines
799
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

.. _usb-power-management:

Power Management for USB
~~~~~~~~~~~~~~~~~~~~~~~~

:Author: Alan Stern <stern@rowland.harvard.edu>
:Date: Last-updated: February 2014

..
	Contents:
	---------
	* What is Power Management?
	* What is Remote Wakeup?
	* When is a USB device idle?
	* Forms of dynamic PM
	* The user interface for dynamic PM
	* Changing the default idle-delay time
	* Warnings
	* The driver interface for Power Management
	* The driver interface for autosuspend and autoresume
	* Other parts of the driver interface
	* Mutual exclusion
	* Interaction between dynamic PM and system PM
	* xHCI hardware link PM
	* USB Port Power Control
	* User Interface for Port Power Control
	* Suggested Userspace Port Power Policy


What is Power Management?
-------------------------

Power Management (PM) is the practice of saving energy by suspending
parts of a computer system when they aren't being used.  While a
component is ``suspended`` it is in a nonfunctional low-power state; it
might even be turned off completely.  A suspended component can be
``resumed`` (returned to a functional full-power state) when the kernel
needs to use it.  (There also are forms of PM in which components are
placed in a less functional but still usable state instead of being
suspended; an example would be reducing the CPU's clock rate.  This
document will not discuss those other forms.)

When the parts being suspended include the CPU and most of the rest of
the system, we speak of it as a "system suspend".  When a particular
device is turned off while the system as a whole remains running, we
call it a "dynamic suspend" (also known as a "runtime suspend" or
"selective suspend").  This document concentrates mostly on how
dynamic PM is implemented in the USB subsystem, although system PM is
covered to some extent (see ``Documentation/power/*.rst`` for more
information about system PM).

System PM support is present only if the kernel was built with
``CONFIG_SUSPEND`` or ``CONFIG_HIBERNATION`` enabled.  Dynamic PM support

for USB is present whenever
the kernel was built with ``CONFIG_PM`` enabled.

[Historically, dynamic PM support for USB was present only if the
kernel had been built with ``CONFIG_USB_SUSPEND`` enabled (which depended on
``CONFIG_PM_RUNTIME``).  Starting with the 3.10 kernel release, dynamic PM
support for USB was present whenever the kernel was built with
``CONFIG_PM_RUNTIME`` enabled.  The ``CONFIG_USB_SUSPEND`` option had been
eliminated.]


What is Remote Wakeup?
----------------------

When a device has been suspended, it generally doesn't resume until
the computer tells it to.  Likewise, if the entire computer has been

Annotation

Implementation Notes