#ifndef _IOKIT_IODISPLAY_H
#define _IOKIT_IODISPLAY_H
#include <IOKit/IOService.h>
#include <IOKit/graphics/IOFramebuffer.h>
extern const OSSymbol * gIODisplayParametersKey;
extern const OSSymbol * gIODisplayGUIDKey;
extern const OSSymbol * gIODisplayValueKey;
extern const OSSymbol * gIODisplayMinValueKey;
extern const OSSymbol * gIODisplayMaxValueKey;
extern const OSSymbol * gIODisplayContrastKey;
extern const OSSymbol * gIODisplayBrightnessKey;
extern const OSSymbol * gIODisplayHorizontalPositionKey;
extern const OSSymbol * gIODisplayHorizontalSizeKey;
extern const OSSymbol * gIODisplayVerticalPositionKey;
extern const OSSymbol * gIODisplayVerticalSizeKey;
extern const OSSymbol * gIODisplayTrapezoidKey;
extern const OSSymbol * gIODisplayPincushionKey;
extern const OSSymbol * gIODisplayParallelogramKey;
extern const OSSymbol * gIODisplayRotationKey;
extern const OSSymbol * gIODisplayParametersCommitKey;
extern const OSSymbol * gIODisplayParametersDefaultKey;
enum {
kIODisplayMaxPowerStates = 4
};
struct DisplayPMVars {
IOIndex connectIndex;
UInt32 syncControls[kIODisplayMaxPowerStates];
UInt32 syncMask;
UInt32 currentSyncs;
unsigned long max_display_state;
bool displayIdle; bool powerControllable; };
class IODisplayConnect : public IOService
{
OSDeclareDefaultStructors(IODisplayConnect)
private:
IOIndex connection;
public:
virtual bool initWithConnection( IOIndex connection );
virtual IOFramebuffer * getFramebuffer( void );
virtual IOIndex getConnection( void );
virtual IOReturn getAttributeForConnection( IOIndex, IOSelect, UInt32 * );
virtual IOReturn setAttributeForConnection( IOIndex, IOSelect, UInt32 );
virtual void joinPMtree ( IOService * driver );
};
class IODisplay : public IOService
{
OSDeclareAbstractStructors(IODisplay)
public:
static void initialize( void );
private:
IODisplayConnect * connection;
protected:
struct DisplayPMVars * displayPMVars;
int _IODisplay_reserved[2];
virtual void initForPM ( IOService * );
virtual IOReturn setProperties( OSObject * properties );
virtual IOReturn setAggressiveness ( unsigned long, unsigned long newLevel );
virtual IOReturn setPowerState ( unsigned long, IOService* );
virtual unsigned long maxCapabilityForDomainState ( IOPMPowerFlags );
virtual unsigned long initialPowerStateForDomainState ( IOPMPowerFlags );
virtual unsigned long powerStateForDomainState ( IOPMPowerFlags );
public:
virtual IOService * probe( IOService * provider,
SInt32 * score );
virtual bool start( IOService * provider );
virtual IODisplayConnect * getConnection( void );
virtual IOReturn getConnectFlagsForDisplayMode(
IODisplayModeID mode, UInt32 * flags ) = 0;
virtual IOReturn getGammaTableByIndex(
UInt32 * channelCount, UInt32 * dataCount,
UInt32 * dataWidth, void ** data );
virtual void dropOneLevel ( void );
virtual void makeDisplayUsable ( void );
IOReturn registerPowerDriver ( IOService*, IOPMPowerState*, unsigned long );
};
class AppleSenseDisplay : public IODisplay
{
OSDeclareDefaultStructors(AppleSenseDisplay)
public:
virtual IOService * probe( IOService * provider,
SInt32 * score );
virtual IOReturn getConnectFlagsForDisplayMode(
IODisplayModeID mode, UInt32 * flags );
};
class AppleNoSenseDisplay : public IODisplay
{
OSDeclareDefaultStructors(AppleNoSenseDisplay)
public:
virtual IOReturn getConnectFlagsForDisplayMode(
IODisplayModeID mode, UInt32 * flags );
};
#endif