Source to iokit/IOKit/graphics/IODisplay.h
/*
* Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
*
* @APPLE_LICENSE_HEADER_START@
*
* The contents of this file constitute Original Code as defined in and
* are subject to the Apple Public Source License Version 1.1 (the
* "License"). You may not use this file except in compliance with the
* License. Please obtain a copy of the License at
* http://www.apple.com/publicsource and read it before using this file.
*
* This Original Code and all software distributed under the License are
* distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
* License for the specific language governing rights and limitations
* under the License.
*
* @APPLE_LICENSE_HEADER_END@
*/
/*
* Copyright (c) 1997 Apple Computer, Inc.
*
*
* HISTORY
*
* sdouglas 22 Oct 97 - first checked in.
* sdouglas 23 Jul 98 - start IOKit
*/
#ifndef _IOKIT_IODISPLAY_H
#define _IOKIT_IODISPLAY_H
#include <IOKit/IOService.h>
#include <IOKit/graphics/IOFramebuffer.h>
enum {
kIODisplayMaxPowerStates = 4
};
struct DisplayPMVars // these are the private instance variables for power management
{
IOIndex connectIndex;
// control bytes we send to the framebuffer to control syncs
UInt32 syncControls[kIODisplayMaxPowerStates];
// mask bits that go with the control byte
UInt32 syncMask;
// current state of sync signals
UInt32 currentSyncs;
// highest state number normally, lowest usable state in emergency
unsigned long max_display_state;
bool displayIdle; // true if the display has had power lowered due to user inactivity
bool powerControllable; // false if no sync control available on video display
};
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)
private:
// used to query the framebuffer controller
IODisplayConnect * connection;
/* Reserved for future expansion. */
int _IODisplay_reserved[2];
virtual void initForPM ( IOService * );
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 );
protected:
// pointer to protected instance variables for power management
struct DisplayPMVars * displayPMVars;
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 registerControllingDriver ( 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 /* ! _IOKIT_IODISPLAY_H */