X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/de355530ae67247cbd0da700edb3a2a1dae884c2..378393581903b274cb7a4d18e0d978071a6b592d:/iokit/IOKit/pwr_mgt/RootDomain.h diff --git a/iokit/IOKit/pwr_mgt/RootDomain.h b/iokit/IOKit/pwr_mgt/RootDomain.h index acbb27fc5..8984051fe 100644 --- a/iokit/IOKit/pwr_mgt/RootDomain.h +++ b/iokit/IOKit/pwr_mgt/RootDomain.h @@ -25,6 +25,7 @@ #include #include +class IOPMPowerStateQueue; class RootDomainUserClient; #define kRootDomainSupportedFeatures "Supported Features" @@ -36,6 +37,23 @@ enum { kPCICantSleep = 0x00000004 }; +// Constants for use as arguments to the settings callback PMU/SMU defines +// with registerPMSettingsController +enum { + kIOPMAutoWakeSetting = 1, + kIOPMAutoPowerOnSetting, + kIOPMWakeOnRingSetting, + kIOPMAutoRestartOnPowerLossSetting, + kIOPMWakeOnLidSetting, + kIOPMWakeOnACChangeSetting, + kIOPMTimeZoneSetting +}; +typedef int IOPMSystemSettingType; + + + +typedef IOReturn (*IOPMSettingControllerCallback)(IOPMSystemSettingType arg_type, int arg_val, void *info); + extern "C" { IONotifier * registerSleepWakeInterest(IOServiceInterestHandler, void *, void * = 0); @@ -58,7 +76,6 @@ public: static IOPMrootDomain * construct( void ); virtual bool start( IOService * provider ); - virtual IOReturn newUserClient ( task_t, void *, UInt32, IOUserClient ** ); virtual IOReturn setAggressiveness ( unsigned long, unsigned long ); virtual IOReturn youAreRoot ( void ); virtual IOReturn sleepSystem ( void ); @@ -74,11 +91,15 @@ public: void wakeFromDoze( void ); void broadcast_it (unsigned long, unsigned long ); void publishFeature( const char *feature ); - + void unIdleDevice( IOService *, unsigned long ); + void announcePowerSourceChange( void ); + // Override of these methods for logging purposes. virtual IOReturn changePowerStateTo ( unsigned long ordinal ); virtual IOReturn changePowerStateToPriv ( unsigned long ordinal ); + IOReturn registerPMSettingController(IOPMSettingControllerCallback, void *); + private: class IORootParent * patriarch; // points to our parent @@ -106,11 +127,15 @@ private: static bool displayWranglerPublished( void * target, void * refCon, IOService * newService); + static bool batteryLocationPublished( void * target, void * refCon, + IOService * resourceService ); + void setQuickSpinDownTimeout ( void ); void adjustPowerState( void ); void restoreUserSpinDownTimeout ( void ); - + IOLock *featuresDictLock; // guards supportedFeatures + IOPMPowerStateQueue *pmPowerStateQueue; unsigned int user_spindown; // User's selected disk spindown value unsigned int systemBooting:1; @@ -126,8 +151,22 @@ private: unsigned int ignoringClamshellDuringWakeup:1; unsigned int reservedA:6; unsigned char reservedB[3]; - - thread_call_t diskSyncCalloutEntry; + + struct PMSettingCtrl { + IOPMSettingControllerCallback func; + void *refcon; + }; + + // Private helper to call PM setting controller + IOReturn setPMSetting(int type, OSNumber *); + + struct ExpansionData { + PMSettingCtrl *_settingController; + thread_call_t diskSyncCalloutEntry; + IONotifier *_batteryLocationNotifier; + IONotifier *_displayWranglerNotifier; + }; + ExpansionData *_reserved; IOOptionBits platformSleepSupport; };