|
|
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-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:
40: class IONDRVFramebuffer : public IOFramebuffer
41: {
42: OSDeclareDefaultStructors(IONDRVFramebuffer)
43:
44: protected:
45:
46: IOService * nub;
47: class IONDRV * ndrv;
48:
49: // current configuration
50: IODisplayModeID currentDisplayMode;
51: IOIndex currentDepth;
52: IOIndex currentPage;
53: bool directMode;
54:
55: IOPhysicalAddress physicalFramebuffer;
56: IODeviceMemory * vramRange;
57:
58: IOIndex startAt8;
59: UInt8 grayMode;
60: UInt8 lastGrayMode;
61: VDClutBehavior lastClutSetting;
62:
63: bool consoleDevice;
64: UInt32 ndrvState;
65: SInt32 ndrvEnter;
66:
67: IODeviceMemory * vramMemory;
68:
69: VDResolutionInfoRec cachedVDResolution;
70:
71: struct _VSLService * vslServices;
72:
73: private:
74:
75: void initForPM ( void );
76: IOReturn setPowerState( unsigned long, IOService* );
77: unsigned long maxCapabilityForDomainState( IOPMPowerFlags );
78: unsigned long initialPowerStateForDomainState( IOPMPowerFlags );
79: unsigned long powerStateForDomainState( IOPMPowerFlags );
80:
81: virtual IOReturn checkDriver( void );
82: virtual UInt32 iterateAllModes( IODisplayModeID * displayModeIDs );
83: virtual IOReturn getResInfoForMode( IODisplayModeID modeID,
84: VDResolutionInfoRec ** theInfo );
85: virtual void getCurrentConfiguration( void );
86:
87: public:
88: virtual IOReturn doControl( UInt32 code, void * params );
89: virtual IOReturn doStatus( UInt32 code, void * params );
90:
91: public:
92:
93: virtual IOService * probe( IOService * provider,
94: SInt32 * score );
95:
96: virtual bool start( IOService * provider );
97:
98: virtual void free( void );
99:
100: virtual IOReturn enableController( void );
101:
102: virtual IODeviceMemory * makeSubRange( IOPhysicalAddress start,
103: IOPhysicalLength length );
104: virtual IODeviceMemory * getApertureRange( IOPixelAperture aperture );
105: virtual IODeviceMemory * getVRAMRange( void );
106:
107: virtual IODeviceMemory * findVRAM( void );
108:
109: virtual bool isConsoleDevice( void );
110:
111: virtual const char * getPixelFormats( void );
112:
113: // Array of supported display modes
114: virtual IOItemCount getDisplayModeCount( void );
115: virtual IOReturn getDisplayModes( IODisplayModeID * allDisplayModes );
116:
117: // Info about a display mode
118: virtual IOReturn getInformationForDisplayMode( IODisplayModeID displayMode,
119: IODisplayModeInformation * info );
120:
121: // Mask of pixel formats available in mode and depth
122: virtual UInt64 getPixelFormatsForDisplayMode( IODisplayModeID displayMode,
123: IOIndex depth );
124:
125: virtual IOReturn getPixelInformation(
126: IODisplayModeID displayMode, IOIndex depth,
127: IOPixelAperture aperture, IOPixelInformation * pixelInfo );
128:
129: // Framebuffer info
130:
131: // Current display mode and depth
132: virtual IOReturn getCurrentDisplayMode( IODisplayModeID * displayMode,
133: IOIndex * depth );
134:
135: // Set display mode and depth
136: virtual IOReturn setDisplayMode( IODisplayModeID displayMode,
137: IOIndex depth );
138:
139: // For pages
140: virtual IOReturn setApertureEnable( IOPixelAperture aperture,
141: IOOptionBits enable );
142:
143: virtual IOReturn setStartupDisplayMode( IODisplayModeID displayMode,
144: IOIndex depth );
145: virtual IOReturn getStartupDisplayMode( IODisplayModeID * displayMode,
146: IOIndex * depth );
147:
148: //// CLUTs
149:
150: virtual IOReturn setCLUTWithEntries( IOColorEntry * colors, UInt32 index,
151: UInt32 numEntries, IOOptionBits options );
152:
153: //// Gamma
154:
155: virtual IOReturn setGammaTable( UInt32 channelCount, UInt32 dataCount,
156: UInt32 dataWidth, void * data );
157:
158: //// Display mode timing information
159:
160: virtual IOReturn getTimingInfoForDisplayMode( IODisplayModeID displayMode,
161: IOTimingInformation * info );
162:
163: //// Controller attributes
164:
165: virtual IOReturn getAttribute( IOSelect attribute, UInt32 * value );
166:
167: //// Connections
168:
169: virtual IOItemCount getConnectionCount( void );
170:
171: virtual IOReturn getAttributeForConnection( IOIndex connectIndex,
172: IOSelect attribute, UInt32 * value );
173:
174: virtual IOReturn setAttributeForConnection( IOIndex connectIndex,
175: IOSelect attribute, UInt32 info );
176:
177: // Apple sensing
178:
179: virtual IOReturn getAppleSense( IOIndex connectIndex,
180: UInt32 * senseType,
181: UInt32 * primary,
182: UInt32 * extended,
183: UInt32 * displayType );
184:
185: virtual IOReturn connectFlags( IOIndex connectIndex,
186: IODisplayModeID displayMode, IOOptionBits * flags );
187:
188: //// IOHighLevelDDCSense
189:
190: virtual bool hasDDCConnect( IOIndex connectIndex );
191: virtual IOReturn getDDCBlock( IOIndex connectIndex, UInt32 blockNumber,
192: IOSelect blockType, IOOptionBits options,
193: UInt8 * data, IOByteCount * length );
194:
195: //// Interrupts
196:
197: virtual IOReturn registerForInterruptType( IOSelect interruptType,
198: IOFBInterruptProc proc, OSObject * target, void * ref,
199: void ** interruptRef );
200: virtual IOReturn unregisterInterrupt( void * interruptRef );
201: virtual IOReturn setInterruptState( void * interruptRef, UInt32 state );
202:
203: //// HW Cursors
204:
205: virtual IOReturn setCursorImage( void * cursorImage );
206: virtual IOReturn setCursorState( SInt32 x, SInt32 y, bool visible );
207:
208: //// VSL calls
209:
210: static OSStatus VSLNewInterruptService(
211: void * entryID,
212: UInt32 serviceType,
213: _VSLService ** serviceID );
214: static OSStatus VSLDisposeInterruptService( _VSLService * serviceID );
215: static OSStatus VSLDoInterruptService( _VSLService * serviceID );
216: static Boolean VSLPrepareCursorForHardwareCursor(
217: void * cursorRef,
218: IOHardwareCursorDescriptor * hwDesc,
219: IOHardwareCursorInfo * hwCursorInfo );
220: };
221:
222: #endif /* ! _IOKIT_IONDRVFRAMEBUFFER_H */
223:
224:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.