IOPMpowerState.h Reference

Declared in
IOPMpowerState.h

Overview

Defines the struct IOPMPowerState that power managed drivers should use to describe their power states.

Included Headers

  • <IOKit/pwr_mgt/IOPM.h>

Data Types

See the Overview section above for header-level documentation.

IOPMPowerState

Describes a device's power state.

struct IOPMPowerState {
   unsigned long version;
   IOPMPowerFlags capabilityFlags;
   IOPMPowerFlags outputPowerCharacter;
   IOPMPowerFlags inputPowerRequirement;
   unsigned long staticPower;
   unsigned long stateOrder;
   unsigned long powerToAttain;
   unsigned long timeToAttain;
   unsigned long settleUpTime;
   unsigned long timeToLower;
   unsigned long settleDownTime;
   unsigned long powerDomainBudget;
};
Fields
version

Defines version number of this struct. Just use the value "1" when defining an IOPMPowerState.

capabilityFlags

Describes the capability of the device in this state.

outputPowerCharacter

Describes the power provided in this state.

inputPowerRequirement

Describes the input power required in this state.

staticPower

Describes average consumption in milliwatts. Unused; drivers may specify 0.

stateOrder

Valid in version kIOPMPowerStateVersion2 or greater of this structure. Defines ordering of power states independently of the power state ordinal.

powerToAttain

Describes dditional power to attain this state from next lower state (in milliWatts). Unused; drivers may specify 0.

timeToAttain

Describes time required to enter this state from next lower state (in microseconds). Unused; drivers may specify 0.

settleUpTime

Describes settle time required after entering this state from next lower state (microseconds). Unused; drivers may specify 0.

timeToLower

Describes time required to enter next lower state from this one (microseconds). Unused; drivers may specify 0.

settleDownTime

Settle time required after entering next lower state from this state (microseconds). Unused; drivers may specify 0.

powerDomainBudget

Describes power in milliWatts a domain in this state can deliver to its children. Unused; drivers may specify 0. }

Discussion

To take part in system power management, drivers should define an array of 2 or more power states and pass it to kernel power management through IOService::registerPowerDriver.