X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/90556fb8d47e7b68fd301dde9dbb3ae7495cf323..378393581903b274cb7a4d18e0d978071a6b592d:/iokit/IOKit/IOService.h diff --git a/iokit/IOKit/IOService.h b/iokit/IOKit/IOService.h index 334fe25ff..71c47184e 100644 --- a/iokit/IOKit/IOService.h +++ b/iokit/IOKit/IOService.h @@ -314,12 +314,24 @@ public: virtual bool didTerminate( IOService * provider, IOOptionBits options, bool * defer ); + /* method available in Mac OS X 10.4 or later */ +/*! @function nextIdleTimeout + @abstract Allows subclasses to customize idle power management behavior. + @discussion Returns the next time that the device should idle into its next lower power state. Subclasses may override for custom idle behavior. + @param currentTime The current time + @param lastActivity The time of last activity on this device + @param powerState The device's current power state. + @result Returns the next time the device should idle off (in seconds, relative to the current time). */ + + virtual SInt32 nextIdleTimeout(AbsoluteTime currentTime, + AbsoluteTime lastActivity, unsigned int powerState); + private: OSMetaClassDeclareReservedUsed(IOService, 0); OSMetaClassDeclareReservedUsed(IOService, 1); OSMetaClassDeclareReservedUsed(IOService, 2); + OSMetaClassDeclareReservedUsed(IOService, 3); - OSMetaClassDeclareReservedUnused(IOService, 3); OSMetaClassDeclareReservedUnused(IOService, 4); OSMetaClassDeclareReservedUnused(IOService, 5); OSMetaClassDeclareReservedUnused(IOService, 6); @@ -1792,30 +1804,38 @@ private: IOReturn notifyAll ( bool is_prechange ); bool notifyChild ( IOPowerConnection * nextObject, bool is_prechange ); bool inform ( IOPMinformee * nextObject, bool is_prechange ); - void our_prechange_03 ( void ); - void our_prechange_04 ( void ); - void our_prechange_05 ( void ); - void our_prechange_1 ( void ); - void our_prechange_2 ( void ); - void our_prechange_3 ( void ); - void our_prechange_4 ( void ); - IOReturn parent_down_0 ( void ); - IOReturn parent_down_02 ( void ); - void parent_down_04 ( void ); - void parent_down_05 ( void ); - IOReturn parent_down_1 ( void ); - IOReturn parent_down_2 ( void ); - void parent_down_3 ( void ); - void parent_down_4 ( void ); - void parent_down_5 ( void ); - void parent_down_6 ( void ); - void parent_up_0 ( void ); - IOReturn parent_up_1 ( void ); - IOReturn parent_up_2 ( void ); - IOReturn parent_up_3 ( void ); - void parent_up_4 ( void ); - void parent_up_5 ( void ); - void parent_up_6 ( void ); + + // Power Management state machine + // power change initiated by driver + void OurChangeTellClientsPowerDown ( void ); + void OurChangeTellPriorityClientsPowerDown ( void ); + void OurChangeNotifyInterestedDriversWillChange ( void ); + void OurChangeSetPowerState ( void ); + void OurChangeWaitForPowerSettle ( void ); + void OurChangeNotifyInterestedDriversDidChange ( void ); + void OurChangeFinish ( void ); + + // downward power change initiated by a power parent + IOReturn ParentDownTellPriorityClientsPowerDown_Immediate ( void ); + IOReturn ParentDownNotifyInterestedDriversWillChange_Immediate ( void ); + void ParentDownTellPriorityClientsPowerDown_Delayed ( void ); + void ParentDownNotifyInterestedDriversWillChange_Delayed ( void ); + IOReturn ParentDownSetPowerState_Immediate ( void ); + IOReturn ParentDownWaitForPowerSettleAndNotifyDidChange_Immediate ( void ); + void ParentDownNotifyDidChangeAndAcknowledgeChange_Delayed ( void ); + void ParentDownSetPowerState_Delayed ( void ); + void ParentDownWaitForPowerSettle_Delayed ( void ); + void ParentDownAcknowledgeChange_Delayed ( void ); + + // upward power change initiated by a power parent + void ParentUpSetPowerState_Delayed ( void ); + IOReturn ParentUpSetPowerState_Immediate ( void ); + IOReturn ParentUpWaitForSettleTime_Immediate ( void ); + IOReturn ParentUpNotifyInterestedDriversDidChange_Immediate ( void ); + void ParentUpWaitForSettleTime_Delayed ( void ); + void ParentUpNotifyInterestedDriversDidChange_Delayed ( void ); + void ParentUpAcknowledgePowerChange_Delayed ( void ); + void all_done ( void ); void all_acked ( void ); void driver_acked ( void );