#ifndef _IOKIT_IOPM_H
#define _IOKIT_IOPM_H
#define IOPMMaxPowerStates 10
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
};
enum {
kClamshellClosedEventMask = (1<<0), kDockingBarEventMask = (1<<1), kACPlugEventMask = (1<<2), kFrontPanelButtonEventMask = (1<<3), kBatteryStatusEventMask = (1<<4) };
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) };
enum {
kPMHasWakeupTimerMask = (1<<0), kPMHasSharedModemPortMask = (1<<1), kPMHasProcessorCyclingMask = (1<<2), kPMMustProcessorCycleMask = (1<<3), kPMHasReducedSpeedMask = (1<<4), kPMDynamicSpeedChangeMask = (1<<5), kPMHasSCSIDiskModeMask = (1<<6), kPMCanGetBatteryTimeMask = (1<<7), kPMCanWakeupOnRingMask = (1<<8), kPMHasDimmingSupportMask = (1<<9), kPMHasStartupTimerMask = (1<<10), kPMHasChargeNotificationMask = (1<<11), kPMHasDimSuspendSupportMask = (1<<12), kPMHasWakeOnNetActivityMask = (1<<13), kPMHasWakeOnLidMask = (1<<14), kPMCanPowerOffPCIBusMask = (1<<15), kPMHasDeepSleepMask = (1<<16), kPMHasSleepMask = (1<<17), kPMSupportsServerModeAPIMask = (1<<18), kPMHasUPSIntegrationMask = (1<<19) };
enum {
kPMHasExtdBattInfoMask = (1<<0), kPMHasBatteryIDMask = (1<<1), kPMCanSwitchPowerMask = (1<<2), kPMHasCelsiusCyclingMask = (1<<3), kPMHasBatteryPredictionMask = (1<<4), kPMHasPowerLevelsMask = (1<<5), kPMHasSleepCPUSpeedMask = (1<<6), kPMHasBtnIntHandlersMask = (1<<7), kPMHasSCSITermPowerMask = (1<<8), kPMHasADBButtonHandlersMask = (1<<9), kPMHasICTControlMask = (1<<10), kPMHasLegacyDesktopSleepMask = (1<<11), kPMHasDeepIdleMask = (1<<12), kPMOpenLidPreventsSleepMask = (1<<13), kPMClosedLidCausesSleepMask = (1<<14), kPMHasFanControlMask = (1<<15), kPMHasThermalControlMask = (1<<16), kPMHasVStepSpeedChangeMask = (1<<17), kPMEnvironEventsPolledMask = (1<<18) };
#define kStdDesktopPMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasDimmingSupportMask |\
kPMHasStartupTimerMask |\
kPMSupportsServerModeAPIMask |\
kPMHasUPSIntegrationMask
#define kStdDesktopPrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasICTControlMask |\
kPMHasLegacyDesktopSleepMask
#define kStdDesktopNumBatteries 0
#define kWallstreetPMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasReducedSpeedMask |\
kPMDynamicSpeedChangeMask |\
kPMHasSCSIDiskModeMask |\
kPMCanGetBatteryTimeMask |\
kPMHasDimmingSupportMask |\
kPMHasChargeNotificationMask |\
kPMHasDimSuspendSupportMask |\
kPMHasSleepMask
#define kWallstreetPrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasBatteryIDMask |\
kPMCanSwitchPowerMask |\
kPMHasADBButtonHandlersMask |\
kPMHasSCSITermPowerMask |\
kPMHasICTControlMask |\
kPMClosedLidCausesSleepMask |\
kPMEnvironEventsPolledMask
#define kStdPowerBookPMFeatures kWallstreetPMFeatures
#define kStdPowerBookPrivPMFeatures kWallstreetPrivPMFeatures
#define kStdPowerBookNumBatteries 2
#define k101PMFeatures kPMHasWakeupTimerMask |\
kPMHasProcessorCyclingMask |\
kPMHasReducedSpeedMask |\
kPMDynamicSpeedChangeMask |\
kPMHasSCSIDiskModeMask |\
kPMCanGetBatteryTimeMask |\
kPMHasDimmingSupportMask |\
kPMHasChargeNotificationMask |\
kPMHasDimSuspendSupportMask |\
kPMHasSleepMask |\
kPMHasUPSIntegrationMask
#define k101PrivPMFeatures kPMHasExtdBattInfoMask |\
kPMHasBatteryIDMask |\
kPMCanSwitchPowerMask |\
kPMHasADBButtonHandlersMask |\
kPMHasSCSITermPowerMask |\
kPMHasICTControlMask |\
kPMClosedLidCausesSleepMask |\
kPMEnvironEventsPolledMask
#define IOPMNoErr 0 // normal return
#define IOPMAckImplied 0 // acknowledgement of power state change is implied
#define IOPMWillAckLater 1 // acknowledgement of power state change will come later
#define IOPMBadSpecification 4 // unrecognized specification parameter
#define IOPMNoSuchState 5 // no power state matches search specification
#define IOPMCannotRaisePower 6 // a device cannot change its power for some reason
#define IOPMParameterError 7 // requested state doesn't exist
#define IOPMNotYetInitialized 8 // device not yet fully hooked into power management "graph"
enum {
kPMGeneralAggressiveness = 0,
kPMMinutesToDim,
kPMMinutesToSpinDown,
kPMMinutesToSleep,
kPMEthernetWakeOnLANSettings,
kPMSetProcessorSpeed,
kPMPowerSource
};
#define kMaxType kPMEthernetWakeOnLANSettings
enum {
kIOPMInternalPower = 1,
kIOPMExternalPower
};
#define kAppleClamshellStateKey "AppleClamshellState"
#define kIOREMSleepEnabledKey "REMSleepEnabled"
#define kIOBatteryInfoKey "IOBatteryInfo"
#define kIOBatteryCurrentChargeKey "Current"
#define kIOBatteryCapacityKey "Capacity"
#define kIOBatteryFlagsKey "Flags"
#define kIOBatteryVoltageKey "Voltage"
#define kIOBatteryAmperageKey "Amperage"
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)
enum {
kACInstalled = kIOBatteryChargerConnect,
kBatteryCharging = kIOBatteryCharge,
kBatteryInstalled = kIOBatteryInstalled,
kUPSInstalled = (1<<3),
kBatteryAtWarn = (1<<4),
kBatteryDepleted = (1<<5),
kACnoChargeCapability = (1<<6), kRawLowBattery = (1<<7), kForceLowSpeed = (1<<8) };
#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