|
|
1.1 root 1: /*
2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1997 Apple Computer, Inc.
24: *
25: *
26: * HISTORY
27: *
28: * sdouglas 22 Oct 97 - first checked in.
29: * sdouglas 23 Jul 98 - start IOKit
30: */
31:
32: #ifndef _IOKIT_IODISPLAY_H
33: #define _IOKIT_IODISPLAY_H
34:
35: #include <IOKit/IOService.h>
36: #include <IOKit/graphics/IOFramebuffer.h>
37:
38: enum {
39: kIODisplayMaxPowerStates = 4
40: };
41:
42: struct DisplayPMVars // these are the private instance variables for power management
43: {
44: IOIndex connectIndex;
45: // control bytes we send to the framebuffer to control syncs
46: UInt32 syncControls[kIODisplayMaxPowerStates];
47: // mask bits that go with the control byte
48: UInt32 syncMask;
49: // current state of sync signals
50: UInt32 currentSyncs;
51: // highest state number normally, lowest usable state in emergency
52: unsigned long max_display_state;
53: bool displayIdle; // true if the display has had power lowered due to user inactivity
54: bool powerControllable; // false if no sync control available on video display
55: };
56:
57: class IODisplayConnect : public IOService
58: {
59: OSDeclareDefaultStructors(IODisplayConnect)
60:
61: private:
62: IOIndex connection;
63:
64: public:
65: virtual bool initWithConnection( IOIndex connection );
66: virtual IOFramebuffer * getFramebuffer( void );
67: virtual IOIndex getConnection( void );
68: virtual IOReturn getAttributeForConnection( IOIndex, IOSelect, UInt32 * );
69: virtual IOReturn setAttributeForConnection( IOIndex, IOSelect, UInt32 );
70: virtual void joinPMtree ( IOService * driver );
71: };
72:
73: class IODisplay : public IOService
74: {
75: OSDeclareAbstractStructors(IODisplay)
76:
77: private:
78:
79: // used to query the framebuffer controller
80: IODisplayConnect * connection;
81:
82: /* Reserved for future expansion. */
83: int _IODisplay_reserved[2];
84:
85: virtual void initForPM ( IOService * );
86:
87: virtual IOReturn setAggressiveness ( unsigned long, unsigned long newLevel );
88: virtual IOReturn setPowerState ( unsigned long, IOService* );
89: virtual unsigned long maxCapabilityForDomainState ( IOPMPowerFlags );
90: virtual unsigned long initialPowerStateForDomainState ( IOPMPowerFlags );
91: virtual unsigned long powerStateForDomainState ( IOPMPowerFlags );
92:
93: protected:
94: // pointer to protected instance variables for power management
95: struct DisplayPMVars * displayPMVars;
96:
97: public:
98: virtual IOService * probe( IOService * provider,
99: SInt32 * score );
100:
101: virtual bool start( IOService * provider );
102:
103: virtual IODisplayConnect * getConnection( void );
104:
105: virtual IOReturn getConnectFlagsForDisplayMode(
106: IODisplayModeID mode, UInt32 * flags ) = 0;
107:
108: virtual IOReturn getGammaTableByIndex(
109: UInt32 * channelCount, UInt32 * dataCount,
110: UInt32 * dataWidth, void ** data );
111:
112: virtual void dropOneLevel ( void );
113: virtual void makeDisplayUsable ( void );
114: IOReturn registerControllingDriver ( IOService*, IOPMPowerState*, unsigned long );
115: };
116:
117: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
118:
119: class AppleSenseDisplay : public IODisplay
120: {
121: OSDeclareDefaultStructors(AppleSenseDisplay)
122:
123: public:
124: virtual IOService * probe( IOService * provider,
125: SInt32 * score );
126:
127: virtual IOReturn getConnectFlagsForDisplayMode(
128: IODisplayModeID mode, UInt32 * flags );
129: };
130:
131: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
132:
133: class AppleNoSenseDisplay : public IODisplay
134: {
135: OSDeclareDefaultStructors(AppleNoSenseDisplay)
136:
137: public:
138: virtual IOReturn getConnectFlagsForDisplayMode(
139: IODisplayModeID mode, UInt32 * flags );
140: };
141:
142: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
143:
144: #endif /* ! _IOKIT_IODISPLAY_H */
145:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.