Root/
Source at commit 1166 created 13 years 10 days ago. By meklort, Fixed recent Makefile changes. Please do not use /Users/evan/SourceCode/tmp/chameleon/trunk or VPATH. the *only* time you should use /Users/evan/SourceCode/tmp/chameleon/trunk is when setting the SRCROOT variable. Also note that very soon make pkg is going to be removed. The pkg build script in trunk is very out of date. Instead please use the package maker at http://forge.voodooprojects.org/p/chameleonApplications/. Once this is ready for trunk it will be merged. | |
---|---|
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-1998 Apple Computer, Inc.␊ |
24 | *␊ |
25 | *␊ |
26 | * HISTORY␊ |
27 | *␊ |
28 | * sdouglas 22 Oct 97 - first checked in.␊ |
29 | * sdouglas 24 Jul 98 - start IOKit.␊ |
30 | * sdouglas 15 Dec 98 - cpp.␊ |
31 | *␊ |
32 | */␊ |
33 | ␊ |
34 | #ifndef _IOKIT_IONDRVFRAMEBUFFER_H␊ |
35 | #define _IOKIT_IONDRVFRAMEBUFFER_H␊ |
36 | ␊ |
37 | #include <IOKit/graphics/IOFramebuffer.h>␊ |
38 | #include <IOKit/ndrvsupport/IOMacOSVideo.h>␊ |
39 | #include <IOKit/ndrvsupport/IONDRVSupport.h>␊ |
40 | ␊ |
41 | #define kIONDRVDisableKey "AAPL,disable-ndrv"␊ |
42 | ␊ |
43 | class IONDRVFramebuffer : public IOFramebuffer␊ |
44 | {␊ |
45 | OSDeclareDefaultStructors(IONDRVFramebuffer)␊ |
46 | ␊ |
47 | protected:␊ |
48 | /*! @struct ExpansionData␊ |
49 | @discussion This structure will be used to expand the capablilties of this class in the future.␊ |
50 | */ ␊ |
51 | struct ExpansionData { };␊ |
52 | ␊ |
53 | /*! @var reserved␊ |
54 | Reserved for future use. (Internal use only) */␊ |
55 | ExpansionData * reserved;␊ |
56 | ␊ |
57 | protected:␊ |
58 | ␊ |
59 | IOService * nub;␊ |
60 | class IONDRV * ndrv;␊ |
61 | ␊ |
62 | // current configuration␊ |
63 | IODisplayModeID currentDisplayMode;␊ |
64 | IOIndex currentDepth;␊ |
65 | IOIndex currentPage;␊ |
66 | UInt8 __reservedE;␊ |
67 | ␊ |
68 | IOPhysicalAddress physicalFramebuffer;␊ |
69 | IODeviceMemory * vramRange;␊ |
70 | ␊ |
71 | UInt8 gammaWidth;␊ |
72 | UInt8 __reservedD;␊ |
73 | UInt8 lastGrayMode;␊ |
74 | VDClutBehavior lastClutSetting;␊ |
75 | UInt8 __reservedC;␊ |
76 | ␊ |
77 | bool consoleDevice;␊ |
78 | UInt32 powerState;␊ |
79 | UInt32 ndrvState;␊ |
80 | SInt32 ndrvEnter;␊ |
81 | OSArray * detailedTimings;␊ |
82 | UInt32 detailedTimingsSeed;␊ |
83 | UInt32 * detailedTimingsCurrent;␊ |
84 | ␊ |
85 | IODeviceMemory * vramMemory;␊ |
86 | ␊ |
87 | VDResolutionInfoRec cachedVDResolution;␊ |
88 | ␊ |
89 | struct _VSLService * vslServices;␊ |
90 | ␊ |
91 | UInt32 accessFlags;␊ |
92 | unsigned int shouldDoI2CPower:1;␊ |
93 | unsigned int online:1;␊ |
94 | unsigned int avJackState:1;␊ |
95 | unsigned int grayMode:1;␊ |
96 | unsigned int platformSleep:1;␊ |
97 | unsigned int forceReadEDID:1;␊ |
98 | unsigned int supportsProbe:1;␊ |
99 | unsigned int __reservedB:25;␊ |
100 | ␊ |
101 | IOService * device;␊ |
102 | ␊ |
103 | UInt32 __reservedA[29];␊ |
104 | ␊ |
105 | private:␊ |
106 | struct IONDRVFramebufferPrivate * __private;␊ |
107 | ␊ |
108 | public:␊ |
109 | virtual IOReturn doDriverIO( UInt32 commandID, void * contents,␊ |
110 | UInt32 commandCode, UInt32 commandKind );␊ |
111 | private:␊ |
112 | OSMetaClassDeclareReservedUsed(IONDRVFramebuffer, 0);␊ |
113 | ␊ |
114 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 1);␊ |
115 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 2);␊ |
116 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 3);␊ |
117 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 4);␊ |
118 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 5);␊ |
119 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 6);␊ |
120 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 7);␊ |
121 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 8);␊ |
122 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 9);␊ |
123 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 10);␊ |
124 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 11);␊ |
125 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 12);␊ |
126 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 13);␊ |
127 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 14);␊ |
128 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 15);␊ |
129 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 16);␊ |
130 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 17);␊ |
131 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 18);␊ |
132 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 19);␊ |
133 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 20);␊ |
134 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 21);␊ |
135 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 22);␊ |
136 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 23);␊ |
137 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 24);␊ |
138 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 25);␊ |
139 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 26);␊ |
140 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 27);␊ |
141 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 28);␊ |
142 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 29);␊ |
143 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 30);␊ |
144 | OSMetaClassDeclareReservedUnused(IONDRVFramebuffer, 31);␊ |
145 | ␊ |
146 | private:␊ |
147 | ␊ |
148 | void initForPM ( void );␊ |
149 | ␊ |
150 | virtual unsigned long maxCapabilityForDomainState( IOPMPowerFlags domainState );␊ |
151 | virtual unsigned long initialPowerStateForDomainState( IOPMPowerFlags domainState );␊ |
152 | virtual unsigned long powerStateForDomainState( IOPMPowerFlags domainState );␊ |
153 | ␊ |
154 | virtual IOReturn checkDriver( void );␊ |
155 | virtual UInt32 iterateAllModes( IODisplayModeID * displayModeIDs );␊ |
156 | virtual IOReturn getResInfoForMode( IODisplayModeID modeID,␊ |
157 | IODisplayModeInformation * theInfo );␊ |
158 | virtual IOReturn getResInfoForArbMode( IODisplayModeID modeID,␊ |
159 | IODisplayModeInformation * theInfo );␊ |
160 | IOReturn getResInfoForDetailed( IODisplayModeID modeID,␊ |
161 | VDDetailedTimingRec * detailed,␊ |
162 | IODisplayModeInformation * info );␊ |
163 | IOIndex mapDepthIndex( IODisplayModeID modeID, IOIndex depth, bool fromDepthMode );␊ |
164 | virtual IOReturn validateDisplayMode(␊ |
165 | IODisplayModeID mode, IOOptionBits flags,␊ |
166 | VDDetailedTimingRec ** detailed );␊ |
167 | virtual IOReturn setDetailedTiming(␊ |
168 | IODisplayModeID mode, IOOptionBits options,␊ |
169 | void * description, IOByteCount descripSize );␊ |
170 | virtual void getCurrentConfiguration( void );␊ |
171 | static const IOTVector * _undefinedSymbolHandler( void * self, ␊ |
172 | const char * libraryName, const char * symbolName );␊ |
173 | static bool _videoJackStateChangeHandler( void * target, void * ref,␊ |
174 | IOService * newService, IONotifier * notifier );␊ |
175 | static void _avProbeAction( OSObject * p0, IOTimerEventSource * evtSrc );␊ |
176 | void displayI2CPower( bool enable );␊ |
177 | IOReturn ndrvSetPowerState( UInt32 newState );␊ |
178 | IOReturn ndrvUpdatePowerState( void );␊ |
179 | IOReturn ndrvSetDisplayPowerState( UInt32 newState );␊ |
180 | static IOReturn _probeAction( IONDRVFramebuffer * self, IOOptionBits options );␊ |
181 | bool searchOfflineMode( IODisplayModeID * offlineMode );␊ |
182 | IOReturn processConnectChange( uintptr_t * value );␊ |
183 | IOReturn setMirror( IONDRVFramebuffer * other );␊ |
184 | IOReturn setConnectionFlags( void );␊ |
185 | bool getOnlineState( void );␊ |
186 | IOReturn ndrvGetSetFeature( UInt32 feature, uintptr_t newValue, uintptr_t * currentValue );␊ |
187 | static IOReturn _doControl( IONDRVFramebuffer * self, UInt32 code, void * params );␊ |
188 | static IOReturn _doStatus( IONDRVFramebuffer * self, UInt32 code, void * params );␊ |
189 | static IOReturn extControl( OSObject * owner, void * code, void * params );␊ |
190 | static IOReturn extStatus( OSObject * owner, void * code, void * params );␊ |
191 | IOReturn createI2C( void );␊ |
192 | void setInfoProperties( void );␊ |
193 | ␊ |
194 | public:␊ |
195 | virtual IOReturn doControl( UInt32 code, void * params );␊ |
196 | virtual IOReturn doStatus( UInt32 code, void * params );␊ |
197 | ␊ |
198 | public:␊ |
199 | ␊ |
200 | virtual IOService * probe( IOService * provider,␊ |
201 | SInt32 * score );␊ |
202 | ␊ |
203 | virtual bool start( IOService * provider );␊ |
204 | ␊ |
205 | virtual void stop( IOService * provider );␊ |
206 | ␊ |
207 | virtual void free( void );␊ |
208 | ␊ |
209 | virtual IOReturn setProperties( OSObject * properties );␊ |
210 | ␊ |
211 | virtual IOReturn requestProbe( IOOptionBits options );␊ |
212 | ␊ |
213 | virtual IOReturn enableController( void );␊ |
214 | ␊ |
215 | virtual IODeviceMemory * makeSubRange( IOPhysicalAddress start,␊ |
216 | IOPhysicalLength length );␊ |
217 | virtual IODeviceMemory * getApertureRange( IOPixelAperture aperture );␊ |
218 | virtual IODeviceMemory * getVRAMRange( void );␊ |
219 | ␊ |
220 | virtual IODeviceMemory * findVRAM( void );␊ |
221 | ␊ |
222 | virtual bool isConsoleDevice( void );␊ |
223 | ␊ |
224 | virtual const IOTVector * undefinedSymbolHandler( const char * libraryName,␊ |
225 | const char * symbolName );␊ |
226 | ␊ |
227 | virtual const char * getPixelFormats( void );␊ |
228 | ␊ |
229 | // Array of supported display modes␊ |
230 | virtual IOItemCount getDisplayModeCount( void );␊ |
231 | virtual IOReturn getDisplayModes( IODisplayModeID * allDisplayModes );␊ |
232 | ␊ |
233 | // Info about a display mode␊ |
234 | virtual IOReturn getInformationForDisplayMode( IODisplayModeID displayMode,␊ |
235 | IODisplayModeInformation * info );␊ |
236 | ␊ |
237 | // Mask of pixel formats available in mode and depth␊ |
238 | virtual UInt64 getPixelFormatsForDisplayMode( IODisplayModeID displayMode,␊ |
239 | IOIndex depth );␊ |
240 | ␊ |
241 | virtual IOReturn getPixelInformation(␊ |
242 | IODisplayModeID displayMode, IOIndex depth,␊ |
243 | IOPixelAperture aperture, IOPixelInformation * pixelInfo );␊ |
244 | ␊ |
245 | // Framebuffer info␊ |
246 | ␊ |
247 | // Current display mode and depth␊ |
248 | virtual IOReturn getCurrentDisplayMode( IODisplayModeID * displayMode,␊ |
249 | IOIndex * depth );␊ |
250 | ␊ |
251 | // Set display mode and depth␊ |
252 | virtual IOReturn setDisplayMode( IODisplayModeID displayMode,␊ |
253 | IOIndex depth );␊ |
254 | ␊ |
255 | // For pages␊ |
256 | virtual IOReturn setApertureEnable( IOPixelAperture aperture,␊ |
257 | IOOptionBits enable );␊ |
258 | ␊ |
259 | virtual IOReturn setStartupDisplayMode( IODisplayModeID displayMode,␊ |
260 | IOIndex depth );␊ |
261 | virtual IOReturn getStartupDisplayMode( IODisplayModeID * displayMode,␊ |
262 | IOIndex * depth );␊ |
263 | ␊ |
264 | //// CLUTs␊ |
265 | ␊ |
266 | virtual IOReturn setCLUTWithEntries( IOColorEntry * colors, UInt32 index,␊ |
267 | UInt32 numEntries, IOOptionBits options );␊ |
268 | ␊ |
269 | //// Gamma␊ |
270 | ␊ |
271 | virtual IOReturn setGammaTable( UInt32 channelCount, UInt32 dataCount,␊ |
272 | UInt32 dataWidth, void * data );␊ |
273 | ␊ |
274 | //// Display mode timing information␊ |
275 | ␊ |
276 | virtual IOReturn getTimingInfoForDisplayMode( IODisplayModeID displayMode,␊ |
277 | IOTimingInformation * info );␊ |
278 | ␊ |
279 | //// Detailed timing information␊ |
280 | ␊ |
281 | virtual IOReturn validateDetailedTiming(␊ |
282 | void * description, IOByteCount descripSize );␊ |
283 | ␊ |
284 | virtual IOReturn setDetailedTimings( OSArray * array );␊ |
285 | ␊ |
286 | //// Controller attributes␊ |
287 | ␊ |
288 | virtual IOReturn setAttribute( IOSelect attribute, uintptr_t value );␊ |
289 | virtual IOReturn getAttribute( IOSelect attribute, uintptr_t * value );␊ |
290 | ␊ |
291 | //// Connections␊ |
292 | ␊ |
293 | virtual IOItemCount getConnectionCount( void );␊ |
294 | ␊ |
295 | virtual IOReturn getAttributeForConnection( IOIndex connectIndex,␊ |
296 | IOSelect attribute, uintptr_t * value );␊ |
297 | ␊ |
298 | virtual IOReturn setAttributeForConnection( IOIndex connectIndex,␊ |
299 | IOSelect attribute, uintptr_t info );␊ |
300 | ␊ |
301 | // Apple sensing␊ |
302 | ␊ |
303 | virtual IOReturn getAppleSense( IOIndex connectIndex,␊ |
304 | UInt32 * senseType,␊ |
305 | UInt32 * primary,␊ |
306 | UInt32 * extended,␊ |
307 | UInt32 * displayType );␊ |
308 | ␊ |
309 | virtual IOReturn connectFlags( IOIndex connectIndex,␊ |
310 | IODisplayModeID displayMode, IOOptionBits * flags );␊ |
311 | ␊ |
312 | //// IOHighLevelDDCSense␊ |
313 | ␊ |
314 | virtual bool hasDDCConnect( IOIndex connectIndex );␊ |
315 | virtual IOReturn getDDCBlock( IOIndex connectIndex, UInt32 blockNumber,␊ |
316 | IOSelect blockType, IOOptionBits options,␊ |
317 | UInt8 * data, IOByteCount * length );␊ |
318 | ␊ |
319 | //// Interrupts␊ |
320 | ␊ |
321 | virtual IOReturn registerForInterruptType( IOSelect interruptType,␊ |
322 | IOFBInterruptProc proc, OSObject * target, void * ref,␊ |
323 | void ** interruptRef );␊ |
324 | virtual IOReturn unregisterInterrupt( void * interruptRef );␊ |
325 | virtual IOReturn setInterruptState( void * interruptRef, UInt32 state );␊ |
326 | ␊ |
327 | //// HW Cursors␊ |
328 | ␊ |
329 | virtual IOReturn setCursorImage( void * cursorImage );␊ |
330 | virtual IOReturn setCursorState( SInt32 x, SInt32 y, bool visible );␊ |
331 | ␊ |
332 | //// I2C calls␊ |
333 | ␊ |
334 | virtual IOReturn doI2CRequest( UInt32 bus, IOI2CBusTiming * timing, IOI2CRequest * request );␊ |
335 | ␊ |
336 | //// VSL calls␊ |
337 | ␊ |
338 | static OSStatus VSLNewInterruptService(␊ |
339 | void * entryID,␊ |
340 | UInt32 serviceType,␊ |
341 | _VSLService ** serviceID );␊ |
342 | static OSStatus VSLDisposeInterruptService( _VSLService * serviceID );␊ |
343 | static OSStatus VSLDoInterruptService( _VSLService * serviceID );␊ |
344 | static Boolean VSLPrepareCursorForHardwareCursor(␊ |
345 | void * cursorRef,␊ |
346 | IOHardwareCursorDescriptor * hwDesc,␊ |
347 | IOHardwareCursorInfo * hwCursorInfo );␊ |
348 | };␊ |
349 | ␊ |
350 | #endif /* ! _IOKIT_IONDRVFRAMEBUFFER_H */␊ |
351 | ␊ |
352 | ␊ |
353 |