Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/IOKit/graphics/IODisplay.h

Source at commit 1129 created 12 years 11 months ago.
By meklort, Change options.o so that it reloads the system config as well. Also change it so that it uses that config for variables (NOTE: if the calue exists in chameleonConfig, it's used instead.
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#ifndef _IOKIT_IODISPLAY_H
24#define _IOKIT_IODISPLAY_H
25
26#include <IOKit/IOService.h>
27#include <IOKit/graphics/IOFramebuffer.h>
28
29extern const OSSymbol * gIODisplayParametersKey;
30extern const OSSymbol * gIODisplayGUIDKey;
31
32extern const OSSymbol * gIODisplayValueKey;
33extern const OSSymbol * gIODisplayMinValueKey;
34extern const OSSymbol * gIODisplayMaxValueKey;
35
36extern const OSSymbol * gIODisplayContrastKey;
37extern const OSSymbol * gIODisplayBrightnessKey;
38extern const OSSymbol * gIODisplayHorizontalPositionKey;
39extern const OSSymbol * gIODisplayHorizontalSizeKey;
40extern const OSSymbol * gIODisplayVerticalPositionKey;
41extern const OSSymbol * gIODisplayVerticalSizeKey;
42extern const OSSymbol * gIODisplayTrapezoidKey;
43extern const OSSymbol * gIODisplayPincushionKey;
44extern const OSSymbol * gIODisplayParallelogramKey;
45extern const OSSymbol * gIODisplayRotationKey;
46extern const OSSymbol * gIODisplayOverscanKey;
47extern const OSSymbol * gIODisplayVideoBestKey;
48
49extern const OSSymbol * gIODisplayParametersTheatreModeKey;
50extern const OSSymbol * gIODisplayParametersTheatreModeWindowKey;
51
52extern const OSSymbol * gIODisplayMCCSVersionKey;
53extern const OSSymbol * gIODisplayTechnologyTypeKey;
54extern const OSSymbol * gIODisplayUsageTimeKey;
55extern const OSSymbol * gIODisplayFirmwareLevelKey;
56
57extern const OSSymbol * gIODisplaySpeakerVolumeKey;
58extern const OSSymbol * gIODisplaySpeakerSelectKey;
59extern const OSSymbol * gIODisplayMicrophoneVolumeKey;
60extern const OSSymbol * gIODisplayAmbientLightSensorKey;
61extern const OSSymbol * gIODisplayAudioMuteAndScreenBlankKey;
62extern const OSSymbol * gIODisplayAudioTrebleKey;
63extern const OSSymbol * gIODisplayAudioBassKey;
64extern const OSSymbol * gIODisplayAudioBalanceLRKey;
65extern const OSSymbol * gIODisplayAudioProcessorModeKey;
66extern const OSSymbol * gIODisplayPowerModeKey;
67extern const OSSymbol * gIODisplayManufacturerSpecificKey;
68
69extern const OSSymbol * gIODisplayParametersCommitKey;
70extern const OSSymbol * gIODisplayParametersDefaultKey;
71extern const OSSymbol * gIODisplayParametersFlushKey;
72
73enum {
74 kIODisplayNumPowerStates = 4,
75 kIODisplayMaxPowerState = kIODisplayNumPowerStates - 1
76};
77
78// these are the private instance variables for power management
79struct DisplayPMVars
80{
81 UInt32 currentState;
82 // highest state number normally, lowest usable state in emergency
83 unsigned long maxState;
84 // true if the display has had power lowered due to user inactivity
85 bool displayIdle;
86};
87
88class IODisplayConnect : public IOService
89{
90 OSDeclareDefaultStructors(IODisplayConnect)
91
92private:
93 IOIndex connection;
94
95protected:
96/*! @struct ExpansionData
97 @discussion This structure will be used to expand the capablilties of this class in the future.
98 */
99 struct ExpansionData { };
100
101/*! @var reserved
102 Reserved for future use. (Internal use only) */
103 ExpansionData * reserved;
104
105public:
106 virtual bool initWithConnection( IOIndex connection );
107 virtual IOFramebuffer * getFramebuffer( void );
108 virtual IOIndex getConnection( void );
109 virtual IOReturn getAttributeForConnection( IOSelect selector, uintptr_t * value );
110 virtual IOReturn setAttributeForConnection( IOSelect selector, uintptr_t value );
111 virtual void joinPMtree ( IOService * driver );
112};
113
114class IODisplay : public IOService
115{
116 OSDeclareAbstractStructors(IODisplay)
117
118public:
119 static void initialize( void );
120
121protected:
122 // used to query the framebuffer controller
123 IODisplayConnect * fConnection;
124 class IODisplayParameterHandler * fParameterHandler;
125 void * __resv;
126 IONotifier * fNotifier;
127
128 // pointer to protected instance variables for power management
129 struct DisplayPMVars * fDisplayPMVars;
130
131 // reserved for future expansion
132 void * _IODisplay_reserved[32];
133
134public:
135 virtual IOService * probe( IOService * provider,
136 SInt32 * score );
137
138 virtual bool start( IOService * provider );
139 virtual void stop( IOService * provider );
140 virtual void free();
141
142 virtual IODisplayConnect * getConnection( void );
143
144 virtual IOReturn getConnectFlagsForDisplayMode(
145 IODisplayModeID mode, UInt32 * flags );
146
147 virtual IOReturn getGammaTableByIndex(
148 UInt32 * channelCount, UInt32 * dataCount,
149 UInt32 * dataWidth, void ** data );
150
151 virtual IOReturn readFramebufferEDID( void );
152
153 //
154 virtual IOReturn framebufferEvent( IOFramebuffer * framebuffer,
155 IOIndex event, void * info );
156
157 // parameter setting
158 virtual IOReturn setProperties( OSObject * properties );
159 virtual bool setForKey( OSDictionary * params, const OSSymbol * key,
160 SInt32 value, SInt32 min, SInt32 max );
161
162 static bool addParameter( OSDictionary * params, const OSSymbol * paramName, SInt32 min, SInt32 max );
163 static bool setParameter( OSDictionary * params, const OSSymbol * paramName, SInt32 value );
164 static OSDictionary * getIntegerRange( OSDictionary * params, const OSSymbol * sym,
165 SInt32 * value, SInt32 * min, SInt32 * max );
166
167 // low level set/get
168 virtual bool doIntegerSet( OSDictionary * params,
169 const OSSymbol * paramName, UInt32 value );
170 virtual bool doDataSet( const OSSymbol * paramName, OSData * value );
171 virtual bool doUpdate( void );
172
173 // power management methods
174 virtual IOReturn setPowerState( unsigned long, IOService * );
175 virtual unsigned long maxCapabilityForDomainState( IOPMPowerFlags );
176 virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlags );
177 virtual unsigned long powerStateForDomainState( IOPMPowerFlags );
178
179 //
180 virtual void initPowerManagement( IOService * provider);
181 virtual void dropOneLevel( void );
182 virtual void makeDisplayUsable( void );
183
184private:
185 OSMetaClassDeclareReservedUnused(IODisplay, 0);
186 OSMetaClassDeclareReservedUnused(IODisplay, 1);
187 OSMetaClassDeclareReservedUnused(IODisplay, 2);
188 OSMetaClassDeclareReservedUnused(IODisplay, 3);
189 OSMetaClassDeclareReservedUnused(IODisplay, 4);
190 OSMetaClassDeclareReservedUnused(IODisplay, 5);
191 OSMetaClassDeclareReservedUnused(IODisplay, 6);
192 OSMetaClassDeclareReservedUnused(IODisplay, 7);
193 OSMetaClassDeclareReservedUnused(IODisplay, 8);
194 OSMetaClassDeclareReservedUnused(IODisplay, 9);
195 OSMetaClassDeclareReservedUnused(IODisplay, 10);
196 OSMetaClassDeclareReservedUnused(IODisplay, 11);
197 OSMetaClassDeclareReservedUnused(IODisplay, 12);
198 OSMetaClassDeclareReservedUnused(IODisplay, 13);
199 OSMetaClassDeclareReservedUnused(IODisplay, 14);
200 OSMetaClassDeclareReservedUnused(IODisplay, 15);
201 OSMetaClassDeclareReservedUnused(IODisplay, 16);
202 OSMetaClassDeclareReservedUnused(IODisplay, 17);
203 OSMetaClassDeclareReservedUnused(IODisplay, 18);
204 OSMetaClassDeclareReservedUnused(IODisplay, 19);
205
206private:
207 static IOReturn _framebufferEvent( OSObject * self, void * ref,
208 IOFramebuffer *framebuffer, IOIndex event, void * info );
209
210 bool addParameterHandler( IODisplayParameterHandler * parameterHandler );
211 bool removeParameterHandler( IODisplayParameterHandler * parameterHandler );
212 static bool updateNumber( OSDictionary * params, const OSSymbol * key, SInt32 value );
213};
214
215/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
216
217class IOBacklightDisplay : public IODisplay
218{
219 OSDeclareDefaultStructors(IOBacklightDisplay)
220
221protected:
222 // User preferred brightness level
223 SInt32 fCurrentUserBrightness;
224 SInt32 fCurrentBrightness;
225 UInt32 fCurrentPowerState;
226 SInt32 fMinBrightness;
227 SInt32 fMaxBrightness;
228 UInt16 fMaxBrightnessLevel[kIODisplayNumPowerStates];
229
230public:
231 virtual IOService * probe( IOService *, SInt32 * );
232 virtual void stop( IOService * provider );
233 virtual IOReturn setPowerState( unsigned long, IOService * );
234 virtual unsigned long maxCapabilityForDomainState( IOPMPowerFlags );
235 virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlags );
236 virtual unsigned long powerStateForDomainState( IOPMPowerFlags );
237
238 //
239 virtual void initPowerManagement( IOService * );
240
241public:
242 virtual bool doIntegerSet( OSDictionary * params,
243 const OSSymbol * paramName, UInt32 value );
244 virtual bool doUpdate( void );
245 virtual void makeDisplayUsable( void );
246 virtual bool setBrightness( SInt32 value );
247
248private:
249 void handlePMSettingCallback(const OSSymbol *, OSObject *, uintptr_t);
250
251 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 0);
252 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 1);
253 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 2);
254 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 3);
255 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 4);
256 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 5);
257 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 6);
258 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 7);
259 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 8);
260 OSMetaClassDeclareReservedUnused(IOBacklightDisplay, 9);
261};
262
263/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
264
265class IODisplayParameterHandler : public IOService
266{
267 OSDeclareDefaultStructors(IODisplayParameterHandler)
268
269public:
270 virtual bool setDisplay( IODisplay * display ) = 0;
271 virtual bool doIntegerSet( OSDictionary * params,
272 const OSSymbol * paramName, UInt32 value ) = 0;
273 virtual bool doDataSet( const OSSymbol * paramName, OSData * value ) = 0;
274 virtual bool doUpdate( void ) = 0;
275
276private:
277 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 0);
278 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 1);
279 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 2);
280 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 3);
281 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 4);
282 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 5);
283 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 6);
284 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 7);
285 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 8);
286 OSMetaClassDeclareReservedUnused(IODisplayParameterHandler, 9);
287};
288
289/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
290
291#endif /* ! _IOKIT_IODISPLAY_H */
292
293

Archive Download this file

Revision: 1129