AudioHardwarePower.h [plain text]
#ifndef _AUDIOHARDWAREPOWER_H_
#define _AUDIOHARDWAREPOWER_H_
#include "AudioHardwareCommon.h"
#include "AppleOnboardAudio.h"
enum{
kBasePowerObject, kProj6PowerObject = 6, kProj7PowerObject, kProj8PowerObject, kProj10PowerObject = 10, kProj14PowerObject = 14, kProj16PowerObject = 16 };
#pragma mark -
class AudioPowerObject : public OSObject {
OSDeclareDefaultStructors(AudioPowerObject);
public:
static AudioPowerObject* createAudioPowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOn();
virtual IOReturn setHardwarePowerOff();
virtual Boolean wantsIdleCalls (void) {return FALSE;}
virtual void setIdlePowerState (void) {return;}
virtual void setFullPowerState (void) {return;}
virtual UInt32 GetTimeToChangePowerState (IOAudioDevicePowerState oldPowerState, IOAudioDevicePowerState newPowerState) {return 0;}
protected:
virtual bool init(AppleOnboardAudio *pluginRef);
virtual void free();
IODeviceMemory *powerReg;
AppleOnboardAudio *audioPluginRef;
short hardwareType;
OSArray *OutputPortMuteStates;
};
#pragma mark -
class AudioProj10PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj10PowerObject);
public:
static AudioProj10PowerObject* createAudioProj10PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOn();
virtual IOReturn setHardwarePowerOff();
virtual void setIdlePowerState (void);
virtual void setFullPowerState (void);
private:
bool init(AppleOnboardAudio *pluginRef);
enum {
durationMillisecond = 1,
kTime10ms = durationMillisecond * 10, kDefaultPowerObjectReg = 0x80800000, kPowerObjectOffset = 0x0000006F, kPowerObjectMask = 0x02, kPowerOn = 0x05, kPowerOff = 0x04 };
};
#pragma mark -
class AudioProj6PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj6PowerObject);
public:
static AudioProj6PowerObject* createAudioProj6PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
virtual void setIdlePowerState (void);
virtual void setFullPowerState (void);
bool init(AppleOnboardAudio *pluginRef);
private:
UInt32 *powerObjectReg;
enum {
durationMillisecond = 1,
kTime10ms = durationMillisecond * 10, kDefaultPowerObjectReg = 0xF3000000, kPowerObjectOffset = 0x00000038, kPowerObjectMask = 0x00003000, kPowerOn = 0x00002000, kPowerOff = 0x00001000, kPowerPWDBit = 0x00001000, kPowerClkBit = 0x00002000
};
};
#pragma mark -
class AudioProj4PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj4PowerObject);
public:
static AudioProj4PowerObject* createAudioProj4PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
private:
UInt32 *powerObjectReg;
enum {
durationMillisecond =1,
kTime10ms = durationMillisecond * 10, kDefaultPowerObjectReg = 0x80800000, kPowerObjectOffset = 0x00000038, kPowerObjectMask = 0x00100000, kPowerOn = 0x00100000, kPowerOff = 0x00100000, kPowerYosemite = 0x00100000 };
};
#pragma mark -
class AudioProj8PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj8PowerObject);
public:
static AudioProj8PowerObject* createAudioProj8PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
virtual void setIdlePowerState (void);
virtual void setFullPowerState (void);
private:
bool init(AppleOnboardAudio *pluginRef);
};
#pragma mark -
class AudioProj7PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj7PowerObject);
public:
static AudioProj7PowerObject* createAudioProj7PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
private:
bool init(AppleOnboardAudio *pluginRef);
UInt8 *powerObjectReg; UInt32 layoutID; Boolean restoreProgOut; UInt32 oldProgOut;
enum {
durationMillisecond = 1,
kTime10ms = durationMillisecond * 10, kTime100ms = durationMillisecond * 100, kTime500ms = durationMillisecond * 500, kDefaultPowerObjectReg = 0x80800000, kPowerObjectOffset = 0x0000006F, kPowerObjectMask = 0x02, kPowerOn = 0x05, kPowerOff = 0x04 };
};
#pragma mark -
class AudioProj14PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj14PowerObject);
public:
static AudioProj14PowerObject* createAudioProj14PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
virtual void setIdlePowerState (void);
virtual void setFullPowerState (void);
virtual UInt32 GetTimeToChangePowerState (IOAudioDevicePowerState oldPowerState, IOAudioDevicePowerState newPowerState);
private:
bool init(AppleOnboardAudio *pluginRef);
};
#pragma mark -
class AudioProj16PowerObject : public AudioPowerObject {
OSDeclareDefaultStructors(AudioProj16PowerObject);
public:
static AudioProj16PowerObject* createAudioProj16PowerObject(AppleOnboardAudio *pluginRef);
virtual IOReturn setHardwarePowerOff();
virtual IOReturn setHardwarePowerOn();
virtual Boolean wantsIdleCalls (void);
virtual void setIdlePowerState (void);
virtual void setFullPowerState (void);
virtual UInt32 GetTimeToChangePowerState (IOAudioDevicePowerState oldPowerState, IOAudioDevicePowerState newPowerState);
private:
bool init(AppleOnboardAudio *pluginRef);
};
#endif