Chameleon

Chameleon Svn Source Tree

Root/branches/meklortOld/i386/libsaio/vbe.h

Source at commit 1146 created 12 years 10 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 2.0 (the "License"). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
12 * this file.
13 *
14 * The Original Code and all software distributed under the License are
15 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
20 * under the License.
21 *
22 * @APPLE_LICENSE_HEADER_END@
23 */
24// Copyright 1997 by Apple Computer, Inc., all rights reserved.
25/* Copyright 1996-1997 NeXT Software, Inc.
26 *
27 * vesa.h - mode info obtained via int10
28 *
29 * Revision History
30 * ----------------
31 * 30 Jul 1996 Doug Mitchell at NeXT
32 * Created.
33 */
34
35#ifndef __LIBSAIO_VBE_H
36#define __LIBSAIO_VBE_H
37
38#define MIN_VESA_VERSION 0x200
39
40#define SEG(address) \
41 ((unsigned short)(((unsigned long)address & 0xffff0000) >> 4))
42
43#define OFF(address) \
44 ((unsigned short)((unsigned long)address & 0x0000ffff))
45
46#define VBEMakeUInt32(x) \
47 (((unsigned long)x##_high << 24) | \
48 ((unsigned long)x##_2 << 16) | \
49 ((unsigned long)x##_1 << 8) | \
50 (unsigned long)x##_low)
51
52#define VBEDecodeFP(t, fp) \
53 ((t)(((fp ## _low) | ((fp ## _1 ) << 8)) + \
54 (((fp ## _2) << 4) | ((fp ## _high ) << 12))))
55
56/*
57 * Functions
58 */
59enum {
60 funcGetControllerInfo = 0x4F00,
61 funcGetModeInfo = 0x4F01,
62 funcSetMode = 0x4F02,
63 funcGetCurrentMode = 0x4F03,
64 funcSaveRestoreState = 0x4F04,
65 funcWindowControl = 0x4F05,
66 funcGetSetScanLineLength = 0x4F06,
67 funcGetSetDisplayStart = 0x4F07,
68 funcGetSetPaletteFormat = 0x4F08,
69 funcGetSetPaletteData = 0x4F09,
70 funcGetProtModeInterdace = 0x4F0A,
71 funcGetSetPixelClock = 0x4F0B,
72funcGetEDID = 0x4F15
73
74};
75
76enum {
77 subfuncSet = 0x00,
78 subfuncGet = 0x01,
79 subfuncSetSecondary = 0x02,
80 subfuncGetSecondary = 0x03
81};
82
83/*
84 * errors.
85 */
86enum {
87 errSuccess = 0,
88 errFuncFailed = 1,
89 errFuncNotSupported = 2,
90 errFuncInvalid = 3
91};
92
93/*
94 * Per-controller info, returned in function 4f00.
95 */
96typedef struct {
97 unsigned char VESASignature[4];
98 unsigned short VESAVersion;
99 /*
100 * Avoid packing problem...
101 */
102 unsigned char OEMStringPtr_low;
103 unsigned char OEMStringPtr_1;
104 unsigned char OEMStringPtr_2;
105 unsigned char OEMStringPtr_high;
106 unsigned char Capabilities_low;
107 unsigned char Capabilities_1;
108 unsigned char Capabilities_2;
109 unsigned char Capabilities_high;
110 unsigned char VideoModePtr_low;
111 unsigned char VideoModePtr_1;
112 unsigned char VideoModePtr_2;
113 unsigned char VideoModePtr_high;
114 unsigned short TotalMemory;
115 unsigned char Reserved[236];
116 unsigned char OEMData[256];
117} VBEInfoBlock;
118
119/*
120 * Capabilites
121 */
122enum {
123 capDACWidthIsSwitchableBit = (1 << 0), /* 1 = yes; 0 = no */
124 capControllerIsNotVGACompatableBit = (1 << 1), /* 1 = no; 0 = yes */
125 capOldRAMDAC = (1 << 2) /* 1 = yes; 0 = no */
126};
127
128/*
129 * Per-mode info, returned in function 4f02.
130 */
131typedef struct {
132 unsigned short ModeAttributes;
133 unsigned char WinAAttributes;
134 unsigned char WinBAttributes;
135 unsigned short WinGranularity;
136 unsigned short WinSize;
137 unsigned short WinASegment;
138 unsigned short WinABegment;
139 void * WinFuncPtr;
140 unsigned short BytesPerScanline;
141 unsigned short XResolution;
142 unsigned short YResolution;
143 unsigned char XCharSize;
144 unsigned char YCharSize;
145 unsigned char NumberOfPlanes;
146 unsigned char BitsPerPixel;
147 unsigned char NumberOfBanks;
148 unsigned char MemoryModel;
149 unsigned char BankSize;
150 unsigned char NumberOfImagePages;
151 unsigned char Reserved;
152 unsigned char RedMaskSize;
153 unsigned char RedFieldPosition;
154 unsigned char GreenMaskSize;
155 unsigned char GreenFieldPosition;
156 unsigned char BlueMaskSize;
157 unsigned char BlueFieldPosition;
158 unsigned char RsvdMaskSize;
159 unsigned char RsvdFieldPosition;
160 unsigned char DirectColorModeInfo;
161 unsigned char PhysBasePtr_low;
162 unsigned char PhysBasePtr_1;
163 unsigned char PhysBasePtr_2;
164 unsigned char PhysBasePtr_high;
165 void * OffScreenMemOffset;
166 unsigned short OffScreenMemSize;
167 unsigned char Reserved1[206];
168} VBEModeInfoBlock;
169
170/*
171 * ModeAttributes bits
172 */
173enum {
174 maModeIsSupportedBit = (1 << 0), /* mode is supported */
175 maExtendedInfoAvailableBit = (1 << 1), /* extended info available */
176 maOutputFuncSupportedBit = (1 << 2), /* output functions supported */
177 maColorModeBit = (1 << 3), /* 1 = color; 0 = mono */
178 maGraphicsModeBit = (1 << 4), /* 1 = graphics; 0 = text */
179 maModeIsNotVGACompatableBit = (1 << 5), /* 1 = not compat; 0 = compat */
180 maVGAMemoryModeNotAvailBit = (1 << 6), /* 1 = not avail; 0 = avail */
181 maLinearFrameBufferAvailBit = (1 << 7) /* 1 = avail; 0 = not avail */
182};
183
184/*
185 * Modes
186 */
187enum {
188 mode640x400x256 = 0x100,
189 mode640x480x256 = 0x101,
190 mode800x600x16 = 0x102,
191 mode800x600x256 = 0x103,
192 mode1024x768x16 = 0x104,
193 mode1024x768x256 = 0x105,
194 mode1280x1024x16 = 0x106,
195 mode1280x1024x256 = 0x107,
196 mode80Cx60R = 0x108,
197 mode132Cx25R = 0x109,
198 mode132Cx43R = 0x10A,
199 mode132Cx50R = 0x10B,
200 mode132Cx60R = 0x10C,
201 mode320x200x555 = 0x10D,
202 mode320x200x565 = 0x10E,
203 mode320x200x888 = 0x10F,
204 mode640x480x555 = 0x110,
205 mode640x480x565 = 0x111,
206 mode640x480x888 = 0x112,
207 mode800x600x555 = 0x113,
208 mode800x600x565 = 0x114,
209 mode800x600x888 = 0x115,
210 mode1024x768x555 = 0x116,
211 mode1024x768x565 = 0x117,
212 mode1024x768x888 = 0x118,
213 mode1280x1024x555 = 0x119,
214 mode1280x1024x565 = 0x11A,
215 mode1280x1024x888 = 0x11B,
216 modeSpecial = 0x81FF,
217 modeEndOfList = 0xFFFF
218};
219
220/*
221 * Get/Set VBE Mode parameters
222 */
223enum {
224 kCustomRefreshRateBit = (1 << 11),
225 kLinearFrameBufferBit = (1 << 14),
226 kPreserveMemoryBit = (1 << 15)
227};
228
229/*
230 * CRTC information block passed to function 4F02
231 * to override default refresh rate.
232 */
233#pragma pack(1)
234
235typedef struct {
236 unsigned short HTotal;
237 unsigned short HSyncStart;
238 unsigned short HSyncEnd;
239 unsigned short VTotal;
240 unsigned short VSyncStart;
241 unsigned short VSyncEnd;
242 unsigned char Flags;
243 unsigned long PixelClock; /* in Hz */
244 unsigned short RefreshRate; /* units of 0.01 Hz */
245 unsigned char Reserved[40];
246} VBECRTCInfoBlock;
247
248#pragma pack()
249
250/*
251 * Defined flags for 'Flags' field in VBECRTCInfoBlock.
252 */
253enum {
254 kCRTCDoubleScannedMode = (1 << 0),
255 kCRTCInterlacedMode = (1 << 1),
256 kCRTCNegativeHorizontalSync = (1 << 2),
257 kCRTCNegativeVerticalSync = (1 << 3)
258};
259
260/*
261 * The type of paramter passed to generateCRTCTimings().
262 */
263enum {
264 kCRTCParamRefreshRate,
265 kCRTCParamPixelClock
266};
267
268/*
269 * Palette
270 */
271typedef unsigned long VBEPalette[256];
272
273extern int getVBEInfo(void *vinfo_p);
274extern int getEDID( void * edidBlock, UInt8 block);
275extern int getVBEModeInfo(int mode, void *minfo_p);
276extern int getVBEDACFormat(unsigned char *format);
277extern int setVBEDACFormat(unsigned char format);
278extern int setVBEPalette(void *palette);
279extern int getVBEPalette(void *palette);
280extern int setVBEMode(unsigned short mode, const VBECRTCInfoBlock *timing);
281extern int getVBECurrentMode(unsigned short *mode);
282extern int getVBEPixelClock(unsigned short mode, unsigned long *pixelClock);
283extern int generateCRTCTiming(unsigned short width,
284 unsigned short height,
285 unsigned long paramValue,
286 int paramType,
287 VBECRTCInfoBlock * timing);
288
289#endif /* !__LIBSAIO_VBE_H */
290

Archive Download this file

Revision: 1146