#ifndef _IOKIT_IOPM_H
#define _IOKIT_IOPM_H
#include <IOKit/IOTypes.h>
#include <IOKit/IOMessage.h>
#include <IOKit/IOReturn.h>
#ifdef __ppc__
#include <IOKit/pwr_mgt/IOPMDeprecated.h>
#endif
enum {
kIOPMMaxPowerStates = 10,
IOPMMaxPowerStates = kIOPMMaxPowerStates
};
typedef unsigned long IOPMPowerFlags;
enum {
kIOPMClockNormal = 0x0004,
kIOPMClockRunning = 0x0008,
kIOPMAuxPowerOn = 0x0020,
kIOPMPagingAvailable = 0x0020,
kIOPMPassThrough = 0x0100,
kIOPMDoze = 0x0400,
kIOPMSoftSleep = 0x0400,
kIOPMSleep = 0x0001,
kIOPMRestart = 0x0080,
kIOPMPowerOn = 0x0002,
kIOPMPreventSystemSleep = 0x0010,
kIOPMPreventIdleSleep = 0x0040,
kIOPMNotAttainable = 0x0001,
kIOPMChildClamp = 0x0080,
kIOPMChildClamp2 = 0x0200,
kIOPMDeviceUsable = 0x8000,
kIOPMMaxPerformance = 0x4000,
kIOPMContextRetained = 0x2000,
kIOPMConfigRetained = 0x1000,
kIOPMSleepCapability = 0x0004,
kIOPMRestartCapability = 0x0080,
kIOPMNotPowerManaged = 0x0800,
kIOPMStaticPowerValid = 0x0800,
kIOPMCapabilitiesMask = kIOPMPowerOn | kIOPMDeviceUsable |
kIOPMMaxPerformance | kIOPMContextRetained |
kIOPMConfigRetained | kIOPMSleepCapability |
kIOPMRestartCapability
};
enum {
IOPMNotAttainable = kIOPMNotAttainable,
IOPMPowerOn = kIOPMPowerOn,
IOPMClockNormal = kIOPMClockNormal,
IOPMClockRunning = kIOPMClockRunning,
IOPMAuxPowerOn = kIOPMAuxPowerOn,
IOPMDeviceUsable = kIOPMDeviceUsable,
IOPMMaxPerformance = kIOPMMaxPerformance,
IOPMContextRetained = kIOPMContextRetained,
IOPMConfigRetained = kIOPMConfigRetained,
IOPMNotPowerManaged = kIOPMNotPowerManaged,
IOPMPagingAvailable = kIOPMPagingAvailable,
IOPMSoftSleep = kIOPMSoftSleep
};
enum {
kIOPMNextHigherState = 1,
kIOPMHighestState = 2,
kIOPMNextLowerState = 3,
kIOPMLowestState = 4
};
enum {
IOPMNextHigherState = kIOPMNextHigherState,
IOPMHighestState = kIOPMHighestState,
IOPMNextLowerState = kIOPMNextLowerState,
IOPMLowestState = kIOPMLowestState
};
enum {
kIOPMBroadcastAggressiveness = 1,
kIOPMUnidleDevice
};
enum {
kIOPMUnknown = 0xFFFF
};
#define kAppleClamshellStateKey "AppleClamshellState"
#define kAppleClamshellCausesSleepKey "AppleClamshellCausesSleep"
enum {
kClamshellStateBit = (1 << 0),
kClamshellSleepBit = (1 << 1)
};
#define kIOPMMessageClamshellStateChange \
iokit_family_msg(sub_iokit_powermanagement, 0x100)
#define kIOPMMessageFeatureChange \
iokit_family_msg(sub_iokit_powermanagement, 0x110)
enum {
kInflowForciblyEnabledBit = (1 << 0)
};
#define kIOPMMessageInternalBatteryFullyDischarged \
iokit_family_msg(sub_iokit_powermanagement, 0x120)
enum {
kIOPMSleepNow = (1<<0), kIOPMAllowSleep = (1<<1), kIOPMPreventSleep = (1<<2), kIOPMPowerButton = (1<<3), kIOPMClamshellClosed = (1<<4), kIOPMPowerEmergency = (1<<5), kIOPMDisableClamshell = (1<<6), kIOPMEnableClamshell = (1<<7), kIOPMProcessorSpeedChange = (1<<8), kIOPMOverTemp = (1<<9), kIOPMClamshellOpened = (1<<10) };
enum {
kIOPMNoErr = 0,
kIOPMAckImplied = 0,
kIOPMWillAckLater = 1,
kIOPMBadSpecification = 4,
kIOPMNoSuchState = 5,
kIOPMCannotRaisePower = 6,
kIOPMParameterError = 7,
kIOPMNotYetInitialized = 8,
IOPMNoErr = kIOPMNoErr,
IOPMAckImplied = kIOPMAckImplied,
IOPMWillAckLater = kIOPMWillAckLater,
IOPMBadSpecification = kIOPMBadSpecification,
IOPMNoSuchState = kIOPMNoSuchState,
IOPMCannotRaisePower = kIOPMCannotRaisePower,
IOPMParameterError = kIOPMParameterError,
IOPMNotYetInitialized = kIOPMNotYetInitialized
};
#define kIOPMPSExternalConnectedKey "ExternalConnected"
#define kIOPMPSExternalChargeCapableKey "ExternalChargeCapable"
#define kIOPMPSBatteryInstalledKey "BatteryInstalled"
#define kIOPMPSIsChargingKey "IsCharging"
#define kIOPMFullyChargedKey "FullyCharged"
#define kIOPMPSAtWarnLevelKey "AtWarnLevel"
#define kIOPMPSAtCriticalLevelKey "AtCriticalLevel"
#define kIOPMPSCurrentCapacityKey "CurrentCapacity"
#define kIOPMPSMaxCapacityKey "MaxCapacity"
#define kIOPMPSDesignCapacityKey "DesignCapacity"
#define kIOPMPSTimeRemainingKey "TimeRemaining"
#define kIOPMPSAmperageKey "Amperage"
#define kIOPMPSVoltageKey "Voltage"
#define kIOPMPSCycleCountKey "CycleCount"
#define kIOPMPSMaxErrKey "MaxErr"
#define kIOPMPSAdapterInfoKey "AdapterInfo"
#define kIOPMPSLocationKey "Location"
#define kIOPMPSErrorConditionKey "ErrorCondition"
#define kIOPMPSManufacturerKey "Manufacturer"
#define kIOPMPSManufactureDateKey "ManufactureDate"
#define kIOPMPSModelKey "Model"
#define kIOPMPSSerialKey "Serial"
#define kIOPMDeviceNameKey "DeviceName"
#define kIOPMPSLegacyBatteryInfoKey "LegacyBatteryInfo"
#define kIOPMPSBatteryHealthKey "BatteryHealth"
#define kIOPMPSHealthConfidenceKey "HealthConfidence"
enum {
kIOPMPSLocationLeft = 1001,
kIOPMPSLocationRight = 1002
};
enum {
kIOPMUndefinedValue = 0,
kIOPMPoorValue = 1,
kIOPMFairValue = 2,
kIOPMGoodValue = 3
};
#define kIOPMPSInvalidWakeSecondsKey "BatteryInvalidWakeSeconds"
#define kIOPMPSPostChargeWaitSecondsKey "PostChargeWaitSeconds"
#define kIOPMPSPostDishargeWaitSecondsKey "PostDischargeWaitSeconds"
#define kIOPMSettingWakeOnRingKey "Wake On Modem Ring"
#define kIOPMSettingRestartOnPowerLossKey "Automatic Restart On Power Loss"
#define kIOPMSettingWakeOnACChangeKey "Wake On AC Change"
#define kIOPMSettingSleepOnPowerButtonKey "Sleep On Power Button"
#define kIOPMSettingWakeOnClamshellKey "Wake On Clamshell Open"
#define kIOPMSettingReduceBrightnessKey "ReduceBrightness"
#define kIOPMSettingDisplaySleepUsesDimKey "Display Sleep Uses Dim"
#define kIOPMSettingTimeZoneOffsetKey "TimeZoneOffsetSeconds"
#define kIOPMSettingAutoWakeSecondsKey "wake"
#define kIOPMSettingAutoWakeCalendarKey "WakeByCalendarDate"
#define kIOPMSettingAutoPowerSecondsKey "poweron"
#define kIOPMSettingAutoPowerCalendarKey "PowerByCalendarDate"
#define kIOPMSettingDebugWakeRelativeKey "WakeRelativeToSleep"
#define kIOPMSettingDebugPowerRelativeKey "PowerRelativeToShutdown"
struct IOPMCalendarStruct {
UInt32 year;
UInt8 month;
UInt8 day;
UInt8 hour;
UInt8 minute;
UInt8 second;
};
typedef struct IOPMCalendarStruct IOPMCalendarStruct;
enum {
kPMGeneralAggressiveness = 0,
kPMMinutesToDim,
kPMMinutesToSpinDown,
kPMMinutesToSleep,
kPMEthernetWakeOnLANSettings,
kPMSetProcessorSpeed,
kPMPowerSource,
kPMMotionSensor,
kPMLastAggressivenessType
};
#define kMaxType (kPMLastAggressivenessType-1)
enum {
kIOPMInternalPower = 1,
kIOPMExternalPower
};
#define kIOREMSleepEnabledKey "REMSleepEnabled"
#define kIOBatteryInfoKey "IOBatteryInfo"
#define kIOBatteryCurrentChargeKey "Current"
#define kIOBatteryCapacityKey "Capacity"
#define kIOBatteryFlagsKey "Flags"
#define kIOBatteryVoltageKey "Voltage"
#define kIOBatteryAmperageKey "Amperage"
#define kIOBatteryCycleCountKey "Cycle Count"
enum {
kIOBatteryInstalled = (1 << 2),
kIOBatteryCharge = (1 << 1),
kIOBatteryChargerConnect = (1 << 0)
};
#define kIOPMMessageBatteryStatusHasChanged iokit_family_msg(sub_iokit_pmu, 0x100)
#define kIOPMUMessageLegacyAutoWake iokit_family_msg(sub_iokit_pmu, 0x200)
#define kIOPMUMessageLegacyAutoPower iokit_family_msg(sub_iokit_pmu, 0x210)
#define IOPM_POWER_SOURCE_REV 2
enum {
kIOPMACInstalled = kIOBatteryChargerConnect,
kIOPMBatteryCharging = kIOBatteryCharge,
kIOPMBatteryInstalled = kIOBatteryInstalled,
kIOPMUPSInstalled = (1<<3),
kIOPMBatteryAtWarn = (1<<4),
kIOPMBatteryDepleted = (1<<5),
kIOPMACnoChargeCapability = (1<<6), kIOPMRawLowBattery = (1<<7), kIOPMForceLowSpeed = (1<<8), kIOPMClosedClamshell = (1<<9), kIOPMClamshellStateOnWake = (1<<10) };
#if KERNEL && __cplusplus
class IOService;
enum {
kIOPowerEmergencyLevel = 1000
};
enum {
kIOPMSubclassPolicy,
kIOPMSuperclassPolicy1
};
struct stateChangeNote{
IOPMPowerFlags stateFlags;
unsigned long stateNum;
void * powerRef;
};
typedef struct stateChangeNote stateChangeNote;
struct IOPowerStateChangeNotification {
void * powerRef;
unsigned long returnValue;
unsigned long stateNumber;
IOPMPowerFlags stateFlags;
};
typedef struct IOPowerStateChangeNotification IOPowerStateChangeNotification;
typedef IOPowerStateChangeNotification sleepWakeNote;
extern void IOPMRegisterDevice(const char *, IOService *);
#endif
#endif