]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkModulePkg/Csm/BiosThunk/VideoDxe/VesaBiosExtensions.h
IntelFrameworkModulePkg: INF/DEC file updates to EDK II packages
[mirror_edk2.git] / IntelFrameworkModulePkg / Csm / BiosThunk / VideoDxe / VesaBiosExtensions.h
CommitLineData
bcecde14 1/** @file\r
2\r
2e0910ac 3Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
bcecde14 4\r
5This program and the accompanying materials\r
6are licensed and made available under the terms and conditions\r
7of the BSD License which accompanies this distribution. The\r
8full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef _VESA_BIOS_EXTENSIONS_H_\r
17#define _VESA_BIOS_EXTENSIONS_H_\r
18\r
19//\r
20// Turn on byte packing of data structures\r
21//\r
22#pragma pack(1)\r
23//\r
24// VESA BIOS Extensions status codes\r
25//\r
26#define VESA_BIOS_EXTENSIONS_STATUS_SUCCESS 0x004f\r
27\r
28//\r
29// VESA BIOS Extensions Services\r
30//\r
31#define VESA_BIOS_EXTENSIONS_RETURN_CONTROLLER_INFORMATION 0x4f00\r
32\r
33/*++\r
34\r
35 Routine Description:\r
36 Function 00 : Return Controller Information\r
37\r
38 Arguments:\r
39 Inputs:\r
40 AX = 0x4f00\r
41 ES:DI = Pointer to buffer to place VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK structure\r
42 Outputs:\r
43 AX = Return Status\r
44\r
45--*/\r
46#define VESA_BIOS_EXTENSIONS_RETURN_MODE_INFORMATION 0x4f01\r
47\r
48/*++\r
49\r
50 Routine Description:\r
51 Function 01 : Return Mode Information\r
52\r
53 Arguments:\r
54 Inputs:\r
55 AX = 0x4f01\r
56 CX = Mode Number\r
57 ES:DI = Pointer to buffer to place VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK structure\r
58 Outputs:\r
59 AX = Return Status\r
60\r
61--*/\r
62#define VESA_BIOS_EXTENSIONS_SET_MODE 0x4f02\r
63\r
64/*++\r
65\r
66 Routine Description:\r
67 Function 02 : Set Mode\r
68\r
69 Arguments:\r
70 Inputs:\r
71 AX = 0x4f02\r
72 BX = Desired mode to set\r
73 D0-D8 = Mode Number\r
74 D9-D10 = Reserved (must be 0)\r
75 D11 = 0 - Use current default refresh rate\r
76 = 1 - Use user specfieid CRTC values for refresh rate\r
77 D12-D13 = Reserved (must be 0)\r
78 D14 = 0 - Use windowed frame buffer model\r
79 = 1 - Use linear/flat frame buffer model\r
80 D15 = 0 - Clear display memory\r
81 = 1 - Don't clear display memory\r
82 ES:DI = Pointer to buffer to the VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK structure\r
83 Outputs:\r
84 AX = Return Status\r
85\r
86--*/\r
87#define VESA_BIOS_EXTENSIONS_RETURN_CURRENT_MODE 0x4f03\r
88\r
89/*++\r
90\r
91 Routine Description:\r
92 Function 03 : Return Current Mode\r
93\r
94 Arguments:\r
95 Inputs:\r
96 AX = 0x4f03\r
97 Outputs:\r
98 AX = Return Status\r
99 BX = Current mode\r
100 D0-D13 = Mode Number\r
101 D14 = 0 - Windowed frame buffer model\r
102 = 1 - Linear/flat frame buffer model\r
103 D15 = 0 - Memory cleared at last mode set\r
104 = 1 - Memory not cleared at last mode set\r
105\r
106--*/\r
107#define VESA_BIOS_EXTENSIONS_SAVE_RESTORE_STATE 0x4f04\r
108\r
109/*++\r
110\r
111 Routine Description:\r
112 Function 04 : Save/Restore State\r
113\r
114 Arguments:\r
115 Inputs:\r
116 AX = 0x4f03\r
117 DL = 0x00 - Return Save/Restore State buffer size\r
118 = 0x01 - Save State\r
119 = 0x02 - Restore State\r
120 CX = Requested Status\r
121 D0 = Save/Restore controller hardware state\r
122 D1 = Save/Restore BIOS data state\r
123 D2 = Save/Restore DAC state\r
124 D3 = Save/Restore Regsiter state\r
125 ES:BX = Pointer to buffer if DL=1 or DL=2\r
126 Outputs:\r
127 AX = Return Status\r
128 BX = Number of 64 byte blocks to hold the state buffer if DL=0\r
129\r
130--*/\r
131#define VESA_BIOS_EXTENSIONS_EDID 0x4f15\r
132\r
133/*++\r
134\r
135 Routine Description:\r
136 Function 15 : implement VBE/DDC service\r
137\r
138 Arguments:\r
139 Inputs:\r
140 AX = 0x4f15\r
141 BL = 0x00 - Report VBE/DDC Capabilities\r
142 CX = 0x00 - Controller unit number (00 = primary controller)\r
143 ES:DI = Null pointer, must be 0:0 in version 1.0\r
144 Outputs:\r
145 AX = Return Status\r
146 BH = Approx. time in seconds, rounded up, to transfer one EDID block(128 bytes)\r
147 BL = DDC level supported\r
148 D0 = 0 DDC1 not supported\r
149 = 1 DDC1 supported\r
150 D1 = 0 DDC2 not supported\r
151 = 1 DDC2 supported\r
152 D2 = 0 Screen not blanked during data transfer\r
153 = 1 Screen blanked during data transfer\r
154\r
155 Inputs:\r
156 AX = 0x4f15\r
157 BL = 0x01 - Read EDID\r
158 CX = 0x00 - Controller unit number (00 = primary controller)\r
159 DX = 0x00 - EDID block number\r
160 ES:DI = Pointer to buffer in which the EDID block is returned\r
161 Outputs:\r
162 AX = Return Status\r
163--*/\r
164\r
165//\r
166// Timing data from EDID data block\r
167//\r
168#define VESA_BIOS_EXTENSIONS_EDID_BLOCK_SIZE 128\r
169#define VESA_BIOS_EXTENSIONS_EDID_ESTABLISHED_TIMING_MAX_NUMBER 17\r
170\r
2e0910ac 171//\r
172// Established Timings: 24 possible resolutions\r
173// Standard Timings: 8 possible resolutions\r
174// Detailed Timings: 4 possible resolutions\r
175//\r
176#define VESA_BIOS_EXTENSIONS_EDID_TIMING_MAX_NUMBER 36\r
177\r
178//\r
179// Timing data size for Established Timings, Standard Timings and Detailed Timings\r
180//\r
181#define VESA_BIOS_EXTENSIONS_ESTABLISHED_TIMING_SIZE 3\r
182#define VESA_BIOS_EXTENSIONS_STANDARD_TIMING_SIZE 16\r
183#define VESA_BIOS_EXTENSIONS_DETAILED_TIMING_EACH_DESCRIPTOR_SIZE 18\r
184#define VESA_BIOS_EXTENSIONS_DETAILED_TIMING_DESCRIPTOR_MAX_SIZE 72\r
185\r
bcecde14 186typedef struct {\r
187 UINT16 HorizontalResolution;\r
188 UINT16 VerticalResolution;\r
189 UINT16 RefreshRate;\r
190} VESA_BIOS_EXTENSIONS_EDID_TIMING;\r
191\r
192typedef struct {\r
193 UINT32 ValidNumber;\r
2e0910ac 194 UINT32 Key[VESA_BIOS_EXTENSIONS_EDID_TIMING_MAX_NUMBER];\r
bcecde14 195} VESA_BIOS_EXTENSIONS_VALID_EDID_TIMING;\r
196\r
197typedef struct {\r
198 UINT8 Header[8]; //EDID header "00 FF FF FF FF FF FF 00"\r
199 UINT16 ManufactureName; //EISA 3-character ID\r
200 UINT16 ProductCode; //Vendor assigned code\r
201 UINT32 SerialNumber; //32-bit serial number\r
202 UINT8 WeekOfManufacture; //Week number\r
203 UINT8 YearOfManufacture; //Year\r
204 UINT8 EdidVersion; //EDID Structure Version\r
205 UINT8 EdidRevision; //EDID Structure Revision\r
206 UINT8 VideoInputDefinition;\r
207 UINT8 MaxHorizontalImageSize; //cm\r
208 UINT8 MaxVerticalImageSize; //cm\r
209 UINT8 DisplayTransferCharacteristic;\r
210 UINT8 FeatureSupport;\r
211 UINT8 RedGreenLowBits; //Rx1 Rx0 Ry1 Ry0 Gx1 Gx0 Gy1Gy0\r
212 UINT8 BlueWhiteLowBits; //Bx1 Bx0 By1 By0 Wx1 Wx0 Wy1 Wy0\r
213 UINT8 RedX; //Red-x Bits 9 - 2\r
214 UINT8 RedY; //Red-y Bits 9 - 2\r
215 UINT8 GreenX; //Green-x Bits 9 - 2\r
216 UINT8 GreenY; //Green-y Bits 9 - 2\r
217 UINT8 BlueX; //Blue-x Bits 9 - 2\r
218 UINT8 BlueY; //Blue-y Bits 9 - 2\r
219 UINT8 WhiteX; //White-x Bits 9 - 2\r
220 UINT8 WhiteY; //White-x Bits 9 - 2\r
2e0910ac 221 UINT8 EstablishedTimings[VESA_BIOS_EXTENSIONS_ESTABLISHED_TIMING_SIZE];\r
222 UINT8 StandardTimingIdentification[VESA_BIOS_EXTENSIONS_STANDARD_TIMING_SIZE];\r
223 UINT8 DetailedTimingDescriptions[VESA_BIOS_EXTENSIONS_DETAILED_TIMING_DESCRIPTOR_MAX_SIZE];\r
bcecde14 224 UINT8 ExtensionFlag; //Number of (optional) 128-byte EDID extension blocks to follow\r
225 UINT8 Checksum;\r
226} VESA_BIOS_EXTENSIONS_EDID_DATA_BLOCK;\r
227\r
228//\r
229// Super VGA Information Block\r
230//\r
231typedef struct {\r
232 UINT32 VESASignature; // 'VESA' 4 byte signature\r
233 UINT16 VESAVersion; // VBE version number\r
234 UINT32 OEMStringPtr; // Pointer to OEM string\r
235 UINT32 Capabilities; // Capabilities of video card\r
236 UINT32 VideoModePtr; // Pointer to an array of 16-bit supported modes values terminated by 0xFFFF\r
237 UINT16 TotalMemory; // Number of 64kb memory blocks\r
238 UINT16 OemSoftwareRev; // VBE implementation Software revision\r
239 UINT32 OemVendorNamePtr; // VbeFarPtr to Vendor Name String\r
240 UINT32 OemProductNamePtr; // VbeFarPtr to Product Name String\r
241 UINT32 OemProductRevPtr; // VbeFarPtr to Product Revision String\r
242 UINT8 Reserved[222]; // Reserved for VBE implementation scratch area\r
243 UINT8 OemData[256]; // Data area for OEM strings. Pad to 512 byte block size\r
244} VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK;\r
245\r
246//\r
247// Super VGA Information Block VESASignature values\r
248//\r
249#define VESA_BIOS_EXTENSIONS_VESA_SIGNATURE SIGNATURE_32 ('V', 'E', 'S', 'A')\r
250#define VESA_BIOS_EXTENSIONS_VBE2_SIGNATURE SIGNATURE_32 ('V', 'B', 'E', '2')\r
251\r
252//\r
253// Super VGA Information Block VESAVersion values\r
254//\r
255#define VESA_BIOS_EXTENSIONS_VERSION_1_2 0x0102\r
256#define VESA_BIOS_EXTENSIONS_VERSION_2_0 0x0200\r
257#define VESA_BIOS_EXTENSIONS_VERSION_3_0 0x0300\r
258\r
259//\r
260// Super VGA Information Block Capabilities field bit defintions\r
261//\r
262#define VESA_BIOS_EXTENSIONS_CAPABILITY_8_BIT_DAC 0x01 // 0: DAC width is fixed at 6 bits/color\r
263// 1: DAC width switchable to 8 bits/color\r
264//\r
265#define VESA_BIOS_EXTENSIONS_CAPABILITY_NOT_VGA 0x02 // 0: Controller is VGA compatible\r
266// 1: Controller is not VGA compatible\r
267//\r
268#define VESA_BIOS_EXTENSIONS_CAPABILITY_NOT_NORMAL_RAMDAC 0x04 // 0: Normal RAMDAC operation\r
269// 1: Use blank bit in function 9 to program RAMDAC\r
270//\r
271#define VESA_BIOS_EXTENSIONS_CAPABILITY_STEREOSCOPIC 0x08 // 0: No hardware stereoscopic signal support\r
272// 1: Hardware stereoscopic signal support\r
273//\r
274#define VESA_BIOS_EXTENSIONS_CAPABILITY_VESA_EVC 0x10 // 0: Stero signaling supported via external VESA stereo connector\r
275// 1: Stero signaling supported via VESA EVC connector\r
276//\r
277// Super VGA mode number bite field definitions\r
278//\r
279#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_VESA 0x0100 // 0: Not a VESA defined VBE mode\r
280// 1: A VESA defined VBE mode\r
281//\r
282#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_REFRESH_CONTROL_USER 0x0800 // 0: Use current BIOS default referesh rate\r
283// 1: Use the user specified CRTC values for refresh rate\r
284//\r
285#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_LINEAR_FRAME_BUFFER 0x4000 // 0: Use a banked/windowed frame buffer\r
286// 1: Use a linear/flat frame buffer\r
287//\r
288#define VESA_BIOS_EXTENSIONS_MODE_NUMBER_PRESERVE_MEMORY 0x8000 // 0: Clear display memory\r
289// 1: Preseve display memory\r
290//\r
291// Super VGA Information Block mode list terminator value\r
292//\r
293#define VESA_BIOS_EXTENSIONS_END_OF_MODE_LIST 0xffff\r
294\r
295//\r
296// Window Function\r
297//\r
298typedef\r
299VOID\r
300(*VESA_BIOS_EXTENSIONS_WINDOW_FUNCTION) (\r
301 VOID\r
302 );\r
303\r
304//\r
305// Super VGA Mode Information Block\r
306//\r
307typedef struct {\r
308 //\r
309 // Manadory fields for all VESA Bios Extensions revisions\r
310 //\r
311 UINT16 ModeAttributes; // Mode attributes\r
312 UINT8 WinAAttributes; // Window A attributes\r
313 UINT8 WinBAttributes; // Window B attributes\r
314 UINT16 WinGranularity; // Window granularity in k\r
315 UINT16 WinSize; // Window size in k\r
316 UINT16 WinASegment; // Window A segment\r
317 UINT16 WinBSegment; // Window B segment\r
318 UINT32 WindowFunction; // Pointer to window function\r
319 UINT16 BytesPerScanLine; // Bytes per scanline\r
320 //\r
321 // Manadory fields for VESA Bios Extensions 1.2 and above\r
322 //\r
323 UINT16 XResolution; // Horizontal resolution\r
324 UINT16 YResolution; // Vertical resolution\r
325 UINT8 XCharSize; // Character cell width\r
326 UINT8 YCharSize; // Character cell height\r
327 UINT8 NumberOfPlanes; // Number of memory planes\r
328 UINT8 BitsPerPixel; // Bits per pixel\r
329 UINT8 NumberOfBanks; // Number of CGA style banks\r
330 UINT8 MemoryModel; // Memory model type\r
331 UINT8 BankSize; // Size of CGA style banks\r
332 UINT8 NumberOfImagePages; // Number of images pages\r
333 UINT8 Reserved1; // Reserved\r
334 UINT8 RedMaskSize; // Size of direct color red mask\r
335 UINT8 RedFieldPosition; // Bit posn of lsb of red mask\r
336 UINT8 GreenMaskSize; // Size of direct color green mask\r
337 UINT8 GreenFieldPosition; // Bit posn of lsb of green mask\r
338 UINT8 BlueMaskSize; // Size of direct color blue mask\r
339 UINT8 BlueFieldPosition; // Bit posn of lsb of blue mask\r
340 UINT8 RsvdMaskSize; // Size of direct color res mask\r
341 UINT8 RsvdFieldPosition; // Bit posn of lsb of res mask\r
342 UINT8 DirectColorModeInfo; // Direct color mode attributes\r
343 //\r
344 // Manadory fields for VESA Bios Extensions 2.0 and above\r
345 //\r
346 UINT32 PhysBasePtr; // Physical Address for flat memory frame buffer\r
347 UINT32 Reserved2; // Reserved\r
348 UINT16 Reserved3; // Reserved\r
349 //\r
350 // Manadory fields for VESA Bios Extensions 3.0 and above\r
351 //\r
352 UINT16 LinBytesPerScanLine; // Bytes/scan line for linear modes\r
353 UINT8 BnkNumberOfImagePages; // Number of images for banked modes\r
354 UINT8 LinNumberOfImagePages; // Number of images for linear modes\r
355 UINT8 LinRedMaskSize; // Size of direct color red mask (linear mode)\r
356 UINT8 LinRedFieldPosition; // Bit posiiton of lsb of red mask (linear modes)\r
357 UINT8 LinGreenMaskSize; // Size of direct color green mask (linear mode)\r
358 UINT8 LinGreenFieldPosition; // Bit posiiton of lsb of green mask (linear modes)\r
359 UINT8 LinBlueMaskSize; // Size of direct color blue mask (linear mode)\r
360 UINT8 LinBlueFieldPosition; // Bit posiiton of lsb of blue mask (linear modes)\r
361 UINT8 LinRsvdMaskSize; // Size of direct color reserved mask (linear mode)\r
362 UINT8 LinRsvdFieldPosition; // Bit posiiton of lsb of reserved mask (linear modes)\r
363 UINT32 MaxPixelClock; // Maximum pixel clock (in Hz) for graphics mode\r
364 UINT8 Pad[190]; // Pad to 256 byte block size\r
365} VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK;\r
366\r
367//\r
368// Super VGA Mode Information Block ModeAttributes field bit defintions\r
369//\r
370#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_HARDWARE 0x0001 // 0: Mode not supported in handware\r
371// 1: Mode supported in handware\r
372//\r
373#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_TTY 0x0004 // 0: TTY Output functions not supported by BIOS\r
374// 1: TTY Output functions supported by BIOS\r
375//\r
376#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_COLOR 0x0008 // 0: Monochrome mode\r
377// 1: Color mode\r
378//\r
379#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_GRAPHICS 0x0010 // 0: Text mode\r
380// 1: Graphics mode\r
381//\r
382#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NOT_VGA 0x0020 // 0: VGA compatible mode\r
383// 1: Not a VGA compatible mode\r
384//\r
385#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NOT_WINDOWED 0x0040 // 0: VGA compatible windowed memory mode\r
386// 1: Not a VGA compatible windowed memory mode\r
387//\r
388#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER 0x0080 // 0: No linear fram buffer mode available\r
389// 1: Linear frame buffer mode available\r
390//\r
391#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_DOUBLE_SCAN 0x0100 // 0: No double scan mode available\r
392// 1: Double scan mode available\r
393//\r
394#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_INTERLACED 0x0200 // 0: No interlaced mode is available\r
395// 1: Interlaced mode is available\r
396//\r
397#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_NO_TRIPPLE_BUFFER 0x0400 // 0: No hardware triple buffer mode support available\r
398// 1: Hardware triple buffer mode support available\r
399//\r
400#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_STEREOSCOPIC 0x0800 // 0: No hardware steroscopic display support\r
401// 1: Hardware steroscopic display support\r
402//\r
403#define VESA_BIOS_EXTENSIONS_MODE_ATTRIBUTE_DUAL_DISPLAY 0x1000 // 0: No dual display start address support\r
404// 1: Dual display start address support\r
405//\r
406// Super VGA Mode Information Block WinAAttribite/WinBAttributes field bit defintions\r
407//\r
408#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_RELOCATABLE 0x01 // 0: Single non-relocatable window only\r
409// 1: Relocatable window(s) are supported\r
410//\r
411#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_READABLE 0x02 // 0: Window is not readable\r
412// 1: Window is readable\r
413//\r
414#define VESA_BIOS_EXTENSIONS_WINX_ATTRIBUTE_WRITABLE 0x04 // 0: Window is not writable\r
415// 1: Window is writable\r
416//\r
417// Super VGA Mode Information Block DirectColorMode field bit defintions\r
418//\r
419#define VESA_BIOS_EXTENSIONS_DIRECT_COLOR_MODE_PROG_COLOR_RAMP 0x01 // 0: Color ram is fixed\r
420// 1: Color ramp is programmable\r
421//\r
422#define VESA_BIOS_EXTENSIONS_DIRECT_COLOR_MODE_RSVD_USABLE 0x02 // 0: Bits in Rsvd field are reserved\r
423// 1: Bits in Rsdv field are usable\r
424//\r
425// Super VGA Memory Models\r
426//\r
427typedef enum {\r
428 MemPL = 3, // Planar memory model\r
429 MemPK = 4, // Packed pixel memory model\r
430 MemRGB= 6, // Direct color RGB memory model\r
431 MemYUV= 7 // Direct color YUV memory model\r
432} VESA_BIOS_EXTENSIONS_MEMORY_MODELS;\r
433\r
434//\r
435// Super VGA CRTC Information Block\r
436//\r
437typedef struct {\r
438 UINT16 HorizontalTotal; // Horizontal total in pixels\r
439 UINT16 HorizontalSyncStart; // Horizontal sync start in pixels\r
440 UINT16 HorizontalSyncEnd; // Horizontal sync end in pixels\r
441 UINT16 VericalTotal; // Vertical total in pixels\r
442 UINT16 VericalSyncStart; // Vertical sync start in pixels\r
443 UINT16 VericalSyncEnd; // Vertical sync end in pixels\r
444 UINT8 Flags; // Flags (Interlaced/DoubleScan/etc).\r
445 UINT32 PixelClock; // Pixel clock in units of Hz\r
446 UINT16 RefreshRate; // Refresh rate in units of 0.01 Hz\r
447 UINT8 Reserved[40]; // Pad\r
448} VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK;\r
449\r
450#define VESA_BIOS_EXTENSIONS_CRTC_FLAGS_DOUBLE_SCAN 0x01 // 0: Graphics mode is not souble scanned\r
451// 1: Graphics mode is double scanned\r
452//\r
453#define VESA_BIOS_EXTENSIONS_CRTC_FLAGSINTERLACED 0x02 // 0: Graphics mode is not interlaced\r
454// 1: Graphics mode is interlaced\r
455//\r
456#define VESA_BIOS_EXTENSIONS_CRTC_HORIZONTAL_SYNC_NEGATIVE 0x04 // 0: Horizontal sync polarity is positive(+)\r
457// 0: Horizontal sync polarity is negative(-)\r
458//\r
459#define VESA_BIOS_EXTENSIONS_CRTC_VERITICAL_SYNC_NEGATIVE 0x08 // 0: Verical sync polarity is positive(+)\r
460// 0: Verical sync polarity is negative(-)\r
461//\r
462// Turn off byte packing of data structures\r
463//\r
464#pragma pack()\r
465\r
466#endif\r