[RFC] Mapping Device Power States

Adam Belay
2005-04-07T21:25:50Z

[-- Attachment #1: Type: text/plain, Size: 1708 bytes --]

Linux supports a wide variety of hardware, each with different power
management characteristics and capabilities. However, power management
statistics (e.g. calling a power tick for determining an idling) are
generally gathered at the class device level. In order for class
devices to relate bus specific power states to their own state change
intentions, it may make sense to have a table mapping each bus level
power state to its corresponding generic Linux power state.

Another problem with having multiple separate states is that it is very
difficult to relate the power requirements of child devices when the
parent has a different set of bus level power states.

I would like to explore the possibility of defining a set of generic
power states, to which each bus level state can be mapped. It might be
as follows:

functional - the device is operational.
context - the current data/operations passing through the device
configuration - resources, firmware, settings done in *probe, etc.

POWER_ON: the device is fully functional
POWER_LIGHT: device context and configuration are maintained, but device
isn't functional.
POWER_MODERATE: device configuration is maintained, but the context is
not. The device isn't functional
POWER_DEEP: no device configuration or context is maintained, but device
is not fully off. The device is not functional.
POWER_OFF: no power is applied to the device. The device is not
functional.

Each lower state would save more power, but also require more latency
when returning to "POWER_ON". When a device is in one of the above
specific power mode classes, it's up to the device driver to control
more fine grained power transitions.

Comments?

Thanks,
Adam