Chameleon

Chameleon Svn Source Tree

Root/branches/azimutz/Chazi/i386/libsaio/vbe.h

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//#include "edid.h"//Azi:autoresolution <-- included in
39#include "autoresolution.h"
40//#include "../modules/AutoResolution/autoresolution.h" //Azi: reminder
41
42#define MIN_VESA_VERSION 0x200
43
44#define SEG(address) \
45 ((unsigned short)(((unsigned long)address & 0xffff0000) >> 4))
46
47#define OFF(address) \
48 ((unsigned short)((unsigned long)address & 0x0000ffff))
49
50#define VBEMakeUInt32(x) \
51 (((unsigned long)x##_high << 24) | \
52 ((unsigned long)x##_2 << 16) | \
53 ((unsigned long)x##_1 << 8) | \
54 (unsigned long)x##_low)
55
56#define VBEDecodeFP(t, fp) \
57 ((t)(((fp ## _low) | ((fp ## _1 ) << 8)) + \
58 (((fp ## _2) << 4) | ((fp ## _high ) << 12))))
59
60/*
61 * Functions
62 */
63enum {
64 funcGetControllerInfo = 0x4F00,
65 funcGetModeInfo = 0x4F01,
66 funcSetMode = 0x4F02,
67 funcGetCurrentMode = 0x4F03,
68 funcSaveRestoreState = 0x4F04,
69 funcWindowControl = 0x4F05,
70 funcGetSetScanLineLength = 0x4F06,
71 funcGetSetDisplayStart = 0x4F07,
72 funcGetSetPaletteFormat = 0x4F08,
73 funcGetSetPaletteData = 0x4F09,
74 funcGetProtModeInterdace = 0x4F0A,
75 funcGetSetPixelClock = 0x4F0B
76};
77
78enum {
79 subfuncSet = 0x00,
80 subfuncGet = 0x01,
81 subfuncSetSecondary = 0x02,
82 subfuncGetSecondary = 0x03
83};
84
85/*
86 * errors.
87 */
88enum {
89 errSuccess = 0,
90 errFuncFailed = 1,
91 errFuncNotSupported = 2,
92 errFuncInvalid = 3
93};
94
95/*
96 * Per-controller info, returned in function 4f00.
97 */
98typedef struct {
99 unsigned char VESASignature[4];
100 unsigned short VESAVersion;
101 /*
102 * Avoid packing problem...
103 */
104 unsigned char OEMStringPtr_low;
105 unsigned char OEMStringPtr_1;
106 unsigned char OEMStringPtr_2;
107 unsigned char OEMStringPtr_high;
108 unsigned char Capabilities_low;
109 unsigned char Capabilities_1;
110 unsigned char Capabilities_2;
111 unsigned char Capabilities_high;
112 unsigned char VideoModePtr_low;
113 unsigned char VideoModePtr_1;
114 unsigned char VideoModePtr_2;
115 unsigned char VideoModePtr_high;
116 unsigned short TotalMemory;
117 unsigned char Reserved[236];
118 unsigned char OEMData[256];
119} VBEInfoBlock;
120
121/*
122 * Capabilites
123 */
124enum {
125 capDACWidthIsSwitchableBit = (1 << 0), /* 1 = yes; 0 = no */
126 capControllerIsNotVGACompatableBit = (1 << 1), /* 1 = no; 0 = yes */
127 capOldRAMDAC = (1 << 2) /* 1 = yes; 0 = no */
128};
129
130/*
131 * Per-mode info, returned in function 4f02.
132 */
133typedef struct {
134 unsigned short ModeAttributes;
135 unsigned char WinAAttributes;
136 unsigned char WinBAttributes;
137 unsigned short WinGranularity;
138 unsigned short WinSize;
139 unsigned short WinASegment;
140 unsigned short WinABegment;
141 void * WinFuncPtr;
142 unsigned short BytesPerScanline;
143 unsigned short XResolution;
144 unsigned short YResolution;
145 unsigned char XCharSize;
146 unsigned char YCharSize;
147 unsigned char NumberOfPlanes;
148 unsigned char BitsPerPixel;
149 unsigned char NumberOfBanks;
150 unsigned char MemoryModel;
151 unsigned char BankSize;
152 unsigned char NumberOfImagePages;
153 unsigned char Reserved;
154 unsigned char RedMaskSize;
155 unsigned char RedFieldPosition;
156 unsigned char GreenMaskSize;
157 unsigned char GreenFieldPosition;
158 unsigned char BlueMaskSize;
159 unsigned char BlueFieldPosition;
160 unsigned char RsvdMaskSize;
161 unsigned char RsvdFieldPosition;
162 unsigned char DirectColorModeInfo;
163 unsigned char PhysBasePtr_low;
164 unsigned char PhysBasePtr_1;
165 unsigned char PhysBasePtr_2;
166 unsigned char PhysBasePtr_high;
167 void * OffScreenMemOffset;
168 unsigned short OffScreenMemSize;
169 unsigned char Reserved1[206];
170} VBEModeInfoBlock;
171
172/*
173 * ModeAttributes bits
174 */
175enum {
176 maModeIsSupportedBit = (1 << 0), /* mode is supported */
177 maExtendedInfoAvailableBit = (1 << 1), /* extended info available */
178 maOutputFuncSupportedBit = (1 << 2), /* output functions supported */
179 maColorModeBit = (1 << 3), /* 1 = color; 0 = mono */
180 maGraphicsModeBit = (1 << 4), /* 1 = graphics; 0 = text */
181 maModeIsNotVGACompatableBit = (1 << 5), /* 1 = not compat; 0 = compat */
182 maVGAMemoryModeNotAvailBit = (1 << 6), /* 1 = not avail; 0 = avail */
183 maLinearFrameBufferAvailBit = (1 << 7) /* 1 = avail; 0 = not avail */
184};
185
186/*
187 * Modes
188 */
189enum {
190 mode640x400x256 = 0x100,
191 mode640x480x256 = 0x101,
192 mode800x600x16 = 0x102,
193 mode800x600x256 = 0x103,
194 mode1024x768x16 = 0x104,
195 mode1024x768x256 = 0x105,
196 mode1280x1024x16 = 0x106,
197 mode1280x1024x256 = 0x107,
198 mode80Cx60R = 0x108,
199 mode132Cx25R = 0x109,
200 mode132Cx43R = 0x10A,
201 mode132Cx50R = 0x10B,
202 mode132Cx60R = 0x10C,
203 mode320x200x555 = 0x10D,
204 mode320x200x565 = 0x10E,
205 mode320x200x888 = 0x10F,
206 mode640x480x555 = 0x110,
207 mode640x480x565 = 0x111,
208 mode640x480x888 = 0x112,
209 mode800x600x555 = 0x113,
210 mode800x600x565 = 0x114,
211 mode800x600x888 = 0x115,
212 mode1024x768x555 = 0x116,
213 mode1024x768x565 = 0x117,
214 mode1024x768x888 = 0x118,
215 mode1280x1024x555 = 0x119,
216 mode1280x1024x565 = 0x11A,
217 mode1280x1024x888 = 0x11B,
218 modeSpecial = 0x81FF,
219 modeEndOfList = 0xFFFF
220};
221
222/*
223 * Get/Set VBE Mode parameters
224 */
225enum {
226 kCustomRefreshRateBit = (1 << 11),
227 kLinearFrameBufferBit = (1 << 14),
228 kPreserveMemoryBit = (1 << 15)
229};
230
231/*
232 * CRTC information block passed to function 4F02
233 * to override default refresh rate.
234 */
235#pragma pack(1)
236
237typedef struct {
238 unsigned short HTotal;
239 unsigned short HSyncStart;
240 unsigned short HSyncEnd;
241 unsigned short VTotal;
242 unsigned short VSyncStart;
243 unsigned short VSyncEnd;
244 unsigned char Flags;
245 unsigned long PixelClock; /* in Hz */
246 unsigned short RefreshRate; /* units of 0.01 Hz */
247 unsigned char Reserved[40];
248} VBECRTCInfoBlock;
249
250#pragma pack()
251
252/*
253 * Defined flags for 'Flags' field in VBECRTCInfoBlock.
254 */
255enum {
256 kCRTCDoubleScannedMode = (1 << 0),
257 kCRTCInterlacedMode = (1 << 1),
258 kCRTCNegativeHorizontalSync = (1 << 2),
259 kCRTCNegativeVerticalSync = (1 << 3)
260};
261
262/*
263 * The type of paramter passed to generateCRTCTimings().
264 */
265enum {
266 kCRTCParamRefreshRate,
267 kCRTCParamPixelClock
268};
269
270/*
271 * Palette
272 */
273typedef unsigned long VBEPalette[256];
274
275/*
276 * DDC - AutoResolution
277 */
278extern int getEDID(void *ddcblock, uint8_t blocksleft);
279
280extern int getVBEInfo(void *vinfo_p);
281extern int getVBEModeInfo(int mode, void *minfo_p);
282extern int getVBEDACFormat(unsigned char *format);
283extern int setVBEDACFormat(unsigned char format);
284extern int setVBEPalette(void *palette);
285extern int getVBEPalette(void *palette);
286extern int setVBEMode(unsigned short mode, const VBECRTCInfoBlock *timing);
287extern int getVBECurrentMode(unsigned short *mode);
288extern int getVBEPixelClock(unsigned short mode, unsigned long *pixelClock);
289extern int generateCRTCTiming(unsigned short width,
290 unsigned short height,
291 unsigned long paramValue,
292 int paramType,
293 VBECRTCInfoBlock * timing);
294
295#endif /* !__LIBSAIO_VBE_H */
296

Archive Download this file

Revision: 840