source: trunk/src/ddraw/SVGAPMI.H@ 10367

Last change on this file since 10367 was 5330, checked in by mike, 24 years ago

Forgot to add these files yesterday...

File size: 31.0 KB
Line 
1/*****************************************************************************
2 *
3 * SOURCE FILE NAME = SVGAPMI.H
4 *
5 * DESCRIPTIVE NAME =
6 *
7 * Copyright : COPYRIGHT IBM CORPORATION, 1991, 1992
8 * Copyright Microsoft Corporation, 1990
9 * LICENSED MATERIAL - PROGRAM PROPERTY OF IBM
10 * REFER TO COPYRIGHT INSTRUCTION FORM#G120-2083
11 * RESTRICTED MATERIALS OF IBM
12 * IBM CONFIDENTIAL
13 *
14 * VERSION = V2.0
15 *
16 * DATE
17 *
18 * DESCRIPTION Contains VIDEOPMI specific defintions
19 *
20 * FUNCTIONS
21 *
22 * NOTES
23 *
24 * STRUCTURES
25 *
26 * EXTERNAL REFERENCES
27 *
28 * EXTERNAL FUNCTIONS
29 *
30 * CHANGE ACTIVITY =
31 * DATE FLAG APAR CHANGE DESCRIPTION
32 * -------- ---------- ----- --------------------------------------
33 * mm/dd/yy @Vr.mpppxx xxxxx xxxxxxx
34 * 02/14/96 @V3.2TSU00 148283 Merlin PBE, support linear aperture
35 * 04/18/96 @V3.2TSU01 150783 Add flags for _int10handler
36 * 07/15/96 @V3.2TSU02 160023 Use the old VIDEO_ADAPTER & VIDEOMDOEINFO
37 *
38 *****************************************************************************/
39
40
41/*
42 * This flag is used to set the linear aperture mode.
43 * the pIn passed in PMIREQUEST_SETMODE will be the pointer to
44 * (mode number | SET_LINEAR_BUFFER_MODE).
45 */
46#define SET_LINEAR_BUFFER_MODE 0x80000000
47
48/*
49 * definitions of bus type
50 */
51#define ISA_BUS 0
52#define VLB_BUS 1
53#define PCI_BUS 2
54#define EISA_BUS 3
55#define PCMCIA_BUS 4
56#define MCA_BUS 5
57
58/*
59* endian type
60*/
61#define LITTLE_ENDIAN 0
62#define BIG_ENDIAN 1
63
64
65/*
66** VIDEOPMI.DLL prototypes.
67*/
68/* NOINC */
69#define HVIDEO PVOID
70typedef HVIDEO *PHVIDEO;
71
72#ifndef APIENTRY
73#define APIENTRY /* nothing */
74#endif
75
76#ifndef APIRET
77#define APIRET ULONG
78#endif
79
80typedef ULONG MODEID;
81typedef MODEID FAR *PMODEID;
82
83/*
84** PMIREQUEST_SOFTWAREINT structures @V3.2SEN01
85*/
86typedef struct {
87 ULONG ulFlags; //VDM initialization type
88#define VDM_POSTLOAD 0x1 //adapter just loaded, used internally for initialization
89#define VDM_INITIALIZE 0x2 //force initialization of a permanently open VDM, even if previously initialized
90#define VDM_TERMINATE_POSTINITIALIZE 0x6 //start VDM with initialization, but close it afterwards (includes VDM_INITIALIZE)
91#define VDM_QUERY_CAPABILITY 0x10 // query the current int 10 capability
92#define VDM_FULL_VDM_CREATED 0x20 // a full VDM is created
93#define VDM_MINI_VDM_CREATED 0x40 // a mini VDM is created
94#define VDM_MINI_VDM_SUPPORTED 0x80 // mini VDM support is available
95 PCHAR szName; //VDM initialization program
96 PCHAR szArgs; //VDM initialization arguments
97}INITVDM;
98
99/*
100 * Don't change these structures without
101 * changing the kernel dos\dosinc\vdmint10.h !
102 */
103typedef struct {
104 BYTE bBufferType; // input vs output buffer
105#define BUFFER_NONE 0
106#define INPUT_BUFFER 1
107#define OUTPUT_BUFFER 2
108 BYTE bReserved;
109 BYTE bSelCRF; // CRF flag for the selector: ulong index into the CRF
110 BYTE bOffCRF; // CRF flag for the offset: ulong index into the CRF
111 PVOID pAddress; // linear address of the buffer
112 ULONG ulSize;
113}BUFFER, *PBUFFER;
114
115// CRF taken from kmode.h
116typedef struct vcrf_s {
117
118 ULONG reg_eax;
119 ULONG reg_ebx;
120 ULONG reg_ecx;
121 ULONG reg_edx;
122 ULONG reg_ebp;
123 ULONG reg_esi;
124 ULONG reg_edi;
125 ULONG reg_ds;
126 ULONG reg_es;
127 ULONG reg_fs;
128 ULONG reg_gs;
129 ULONG reg_cs;
130 ULONG reg_eip;
131 ULONG reg_eflag;
132 ULONG reg_ss;
133 ULONG reg_esp;
134}VCRF;
135
136
137typedef struct {
138 ULONG ulBIOSIntNo; /* 0x10 for INT10 calls */
139 VCRF aCRF;
140 BUFFER pB[2];
141}INTCRF;
142#define VPRPMI "VPRPMI$"
143#define VPRSYSREQ_INT10HANDLER 1
144#define VPRSYSREQ_INT10WAITFORPDB 2
145#define VPRSYSREQ_MARKINT10VDM 3
146#define VPRSYSREQ_MAX VPRSYSREQ_MARKINT10VDM
147/* @V3.2SEN01 end */
148/*
149** Structures passed as input and output parameters.
150*/
151
152typedef struct _VIDEOMODEINFO { /* vmi */
153 MODEID miModeId; /* used to make setmode request */
154
155#define MODE_FLAG_NOT_MONO 0x0001 /* Mono-compatible */
156#define MODE_FLAG_GRAPHICS 0x0002 /* Text mode, Graphics */
157#define MODE_FLAG_NO_CLR_BRST 0x0004 /* Disable Color burst */
158#define MODE_FLAG_NATIVE 0x0008 /* Native (advanced function) mode */
159#define IGNORE_CLR_BRST 0x0010 /* Disable color burst doesn't make */
160 /* sense for this mode */
161#define NOT_PLASMA 0x0020 /* @V2.2TSU00 won't work on plasma */
162 /* display */
163#define MODE_FLAG_VGA_ENTRY 0x0040 /* VGA mode, need clean up */
164
165#define MODE_FLAG_LINEAR_BUFFER 0x0100 /* flat frame buffer is supported */
166
167#define MODE_FLAG_DIRECT_RGB 0x1000 /* direct color RGB */
168#define MODE_FLAG_DIRECT_BGR 0x2000 /* direct color BGR */
169#define MODE_FLAG_YUV 0x4000 /* YUV color format */
170
171 USHORT usType; /* mode type bits */
172 USHORT usInt10ModeSet; /* int 10 mode */
173 USHORT usXResolution; /* horizontal pels */
174 USHORT usYResolution; /* vertical scan lines */
175 ULONG ulBufferAddress; /* physical address of VRAM */
176 ULONG ulApertureSize; /* VRAM aperture */
177 BYTE bBitsPerPixel; /* no of colors */
178 BYTE bBitPlanes; /* number of planes */
179 BYTE bXCharSize; /* font width */
180 BYTE bYCharSize; /* font height */
181 USHORT usBytesPerScanLine; /* logical line length in bytes */
182 USHORT usTextRows; /* text rows */
183 ULONG ulPageLength; /* no of bytes to save a plane */
184 ULONG ulSaveSize; /* total bytes of VRAM to save */
185 /*
186 * Monitor Info
187 */
188 BYTE bVrtRefresh;
189 BYTE bHrtRefresh;
190 BYTE bVrtPolPos;
191 BYTE bHrtPolPos;
192 /*
193 * Direct Color Fields. The same definitions as VESA 1.2 and up.
194 */
195 CHAR bRedMaskSize; // @V3.2TSU02
196 CHAR bRedFieldPosition; // @V3.2TSU02
197 CHAR bGreenMaskSize; // @V3.2TSU02
198 CHAR bGreenFieldPosition; // @V3.2TSU02
199 CHAR bBlueMaskSize; // @V3.2TSU02
200 CHAR bBlueFieldPosition; // @V3.2TSU02
201 CHAR bRsvdMaskSize; // @V3.2TSU02
202 CHAR bRsvdFieldPosition; // @V3.2TSU02
203
204 /*
205 * The number of colors can be derived from MaskSize fields.
206 */
207 ULONG ulColors; // @V3.2TSU02
208
209 ULONG ulReserved[3]; // @V3.2TSU02
210
211// USHORT usScrnTop; @V3.2TSU02
212// USHORT usScrnBottom; @V3.2TSU02
213// USHORT usScrnLeft; @V3.2TSU02
214// USHORT usScrnRight; @V3.2TSU02
215
216// CHAR szColorFormat[8]; @V3.2TSU02
217// CHAR szColorWeight[8]; @V3.2TSU02
218#ifndef VIDEOPMI_30_LEVEL
219 /*
220 ** The assumption is that all of the base video components
221 ** are built together and shipped in unison.
222 ** In order to build a back-level 3.0 base video component
223 ** (VIDEOPMI, BVHSVGA, VIDEOCFG, IBMGPMI), define macro
224 ** VIDEOPMI_30_LEVEL.
225 */
226// ULONG ulColors; /* @V3.2SEN01 @V3.2TSU02 */
227#endif
228
229} VIDEOMODEINFO;
230typedef VIDEOMODEINFO FAR *PVIDEOMODEINFO;
231
232typedef struct _SVGARGB { /* rgb */
233 BYTE bR;
234 BYTE bG;
235 BYTE bB;
236 BYTE bUnused;
237} SVGARGB;
238typedef SVGARGB FAR *PSVGARGB;
239
240#define EIGHT_BIT_DAC 0x00010000 /* over load ulRGBCount to tell */
241 /* videopmi the dac values are for */
242 /* 8 bit DAC. */
243
244typedef struct _CLUTDATA { /* clt */
245 ULONG ulRGBCount; /* No of aRGB entries that follow */
246 ULONG ulRGBStart; /* Start index for RGB triplets */
247 SVGARGB aRGB[1]; /* One defined, ulRGBCount entries */
248} CLUTDATA;
249typedef CLUTDATA FAR *PCLUTDATA;
250
251typedef struct _PALETTEDATA { /* pal */
252 ULONG ulPalCount; /* No of bPal.. entries that follow */
253 ULONG ulPalStart; /* Start index for data */
254 BYTE bPaletteData[1]; /* One defined, ulPalCount entries */
255} PALETTEDATA;
256typedef PALETTEDATA FAR *PPALETTEDATA;
257
258typedef struct _FONTDATA { /* font */
259 ULONG ulCharCount; /* No of chars in font */
260 ULONG ulFontHeight; /* No of scanlines per character */
261 ULONG ulFontWidth; /* No of columns per character */
262 BYTE bFontData[1]; /* ulCharCount*ulFontHeight entries */
263} FONTDATA;
264typedef FONTDATA FAR *PFONTDATA;
265
266typedef BYTE FAR *PVRAMDATA;
267
268typedef struct _CLEANDATA { /* clean */
269 USHORT Command;
270 USHORT IndexPort;
271 USHORT DataPort;
272 USHORT Index;
273 USHORT ANDMask;
274 USHORT ORMask;
275} CLEANDATA;
276
277typedef struct _BANKDATA { /* bank */
278 MODEID miBank; /* */
279 ULONG ulBank; /* */
280} BANKDATA;
281typedef BANKDATA FAR *PBANKDATA;
282
283#define MAX_OEM_STRING 128
284#define MAX_DAC_STRING 128
285#define MAX_VERSION 128
286
287typedef struct _ADAPTERINFO { /* adi */
288 ULONG ulAdapterID;
289 CHAR szOEMString[MAX_OEM_STRING]; /* adapter info from Hardware section */
290 CHAR szDACString[MAX_DAC_STRING]; /* DAC info from Hardware section */
291 CHAR szRevision[MAX_VERSION]; /* whatever the revision means */
292 ULONG ulTotalMemory;
293 ULONG ulMMIOBaseAddress;
294 ULONG ulPIOBaseAddress;
295 BYTE bBusType;
296 BYTE bEndian;
297 USHORT usDeviceBusID; /* has to be 2 bytes */
298 USHORT usVendorBusID; /* has to be 2 bytes */
299 USHORT SlotID; /* has to be 2 bytes */
300} ADAPTERINFO, FAR *PADAPTERINFO;
301
302/*
303 * Adapter Instance definition. The structure will be passed in every
304 * PMIREQUEST call.
305 */
306typedef struct _VIDEO_ADAPTER { /* va */
307 HVIDEO hvideo;
308
309 /*
310 ** The assumption is that all of the base video components
311 ** are built together and shipped in unison (any driver including
312 ** svgadefs.h and using the VIDEOPMI interface as well).
313 **
314 ** @V3.0TSU00
315 ** All the callers to videopmi have to fill cbAdapterInfo and
316 ** and cbVideoModeInfo with sizeof (ADAPTERINFO) and
317 ** sizeof (VIDEOMODEINFO), respectively. It is for version control.
318 ** All the DLLs called by videopmi have to access the ModeInfo field
319 ** in VIDEO_ADAPTER by the offset of ModeInfo.
320 ** For example, instead of pAdapter->ModeInfo.bBitsPerPixel,
321 ** it should be
322 ** ((PVIDEOMODEINFO)&((PBYTE)&(pAdapter->Adapter) + pAdapter->AdapterInfo_cb))->
323 ** bBitsPerPixel.
324 */
325
326//
327// Goes back to the old structure of OS/2 Warp 3.0.
328//
329// USHORT AdapterInfo_cb; @V3.2TSU02
330// USHORT VideoModeInfo_cb; @V3.2TSU02
331
332 ADAPTERINFO Adapter;
333 VIDEOMODEINFO ModeInfo;
334} VIDEO_ADAPTER, FAR *PVIDEO_ADAPTER;
335
336/*
337 * prototype for import functions in PMI file
338 */
339typedef ULONG *PREGS; //pointer to registers. Passed to imported PMI functions.
340typedef APIRET (EXPENTRY FNIMPORTPMI)(PVIDEO_ADAPTER, PREGS);
341typedef FNIMPORTPMI *PFNIMPORTPMI;
342
343#ifdef INCL_16
344 #define VIDEOAPI FAR //this controls the calling convention.
345#else // 32-bit code
346 #define VIDEOAPI EXPENTRY //C calling convention
347#endif
348
349/*
350** prototype for META PMI imports @V3.2SEN01
351*/
352typedef APIRET (VIDEOAPI FNPMIREQ)(PVIDEO_ADAPTER, PVOID, PVOID);
353typedef FNPMIREQ *PFNPMIREQ;
354
355typedef struct _PMIREQUEST {
356 PFNPMIREQ pfnPMIRequest;
357 ULONG ulRing2Call;
358} PMIREQUEST;
359typedef PMIREQUEST *PPMIREQUEST;
360
361#define METAPMI_LOADADAPTER "LoadAdapter"
362
363typedef APIRET (EXPENTRY FNIMPORTLOADPMI)(CHAR *,PPMIREQUEST);
364typedef FNIMPORTLOADPMI *PFNIMPORTLOADPMI;
365
366/*
367** prototype for VIDEOPMI request functions
368*/
369typedef APIRET (VIDEOAPI FNVIDEOPMIREQUEST)(PVIDEO_ADAPTER, ULONG, PVOID, PVOID);
370
371typedef FNVIDEOPMIREQUEST *PFNVIDEOPMIREQUEST;
372 /* used to exchange data with vvid */
373typedef struct _VDDDATA { /* vdd */
374 PFNVIDEOPMIREQUEST npfnEntryPointAddress;
375 HVIDEO hvideo;
376} VDDDATA;
377typedef VDDDATA *PVDDATA;
378/* INC */
379/*
380** Save Restore constants
381*/
382
383#define STATEFLAG_REGISTERS 0x0001 /* */
384#define STATEFLAG_CLUT 0x0002 /* */
385#define STATEFLAG_VRAM 0x0004 /* */
386#define STATEFLAG_FONT 0x0008 /* */
387
388/* NOINC */
389typedef struct _VIDEOSTATE { /* vst */
390 ULONG fStateFlags; /* */
391 MODEID miState; /* */
392 PVOID pModeData; /* */
393 ULONG ulVRAMSaveSize; /* No of bytes/page to save */
394 PVRAMDATA pVRAM; /* */
395 PCLUTDATA pCLUT; /* */
396 PFONTDATA pFont; /* */
397} VIDEOSTATE;
398typedef VIDEOSTATE FAR *PVIDEOSTATE;
399/* INC */
400
401/*
402** Function request parameters supported.
403*/
404
405#define PMIREQUEST_SETMODE 0
406#define PMIREQUEST_LOCKREGISTERS 1
407#define PMIREQUEST_UNLOCKREGISTERS 2
408#define PMIREQUEST_CLEANUP 3
409#define PMIREQUEST_SAVESTATE 4
410#define PMIREQUEST_RESTORESTATE 5
411#define PMIREQUEST_GETBANK 6
412#define PMIREQUEST_SETBANK 7
413#define PMIREQUEST_GETCLUT 8
414#define PMIREQUEST_SETCLUT 9
415#define PMIREQUEST_GETPALETTE 10
416#define PMIREQUEST_SETPALETTE 11
417#define PMIREQUEST_GETFONT 12
418#define PMIREQUEST_SETFONT 13
419#define PMIREQUEST_TUNEDISPLAY 14 /* @V2.2TSU00 */
420#define PMIREQUEST_QUERYMAXMODEENTRIES 15
421#define PMIREQUEST_QUERYMAXMODELISTSIZE 16
422#define PMIREQUEST_QUERYMODEINFODATA 17
423#define PMIREQUEST_QUERYMAXTRAPENTRIES 18
424#define PMIREQUEST_QUERYTRAPLISTDATA 19
425#define PMIREQUEST_QUERYMODEHRDWRLIST 20 /* @V2.2TSU00 */
426#define PMIREQUEST_LOADPMIFILE 21
427#define PMIREQUEST_IDENTIFYADAPTER 22
428#define PMIREQUEST_SOFTWAREINT 23 /* @V3.2SEN01 */
429#define PMIREQUEST_INT10 PMIREQUEST_SOFTWAREINT
430#define PMIREQUEST_UNLOADPMIFILE 24
431#define PMIREQUEST_SETMEMORYIOADDRESS 25 /* @V3.2TSU00 */
432
433#define PMIREQUEST_MAX (PMIREQUEST_SETMEMORYIOADDRESS + 1) /* last entry + 1 */
434
435/* NOINC */
436
437/*
438 * define PMIDEF_INCL to include the following definitions.
439 */
440#ifdef PMIDEF_INCL
441
442/* @V2.2TSU00
443** Possible flags in ModeAtrributes field in PMI file
444** the flags will be saved in ModeInfo.ulType
445*/
446#define PMI_MODE_COLOUR 0x08 /* Bit 3 - 0 = mono, 1 = colour */
447#define PMI_MODE_GRAPHICS 0x10 /* Bit 4 - 0 = text, 1 = graphics */
448#define PMI_MODE_VGA_ENTRY 0x20/* vga entry, need clean up in set mode */
449#define PMI_MODE_IGNORE_CLR_BRST 0x40 /* won't work on B/W mode */
450#define PMI_MODE_LINEAR_APERTURE 0x80 /* linear aperture mode */
451
452/*
453 * PMI commands
454 */
455#define PMICMD_NONE 0xFF //reserved
456#define PMICMD_INB 0
457#define PMICMD_OUTB 1
458#define PMICMD_INW 2
459#define PMICMD_OUTW 3
460#define PMICMD_INDW 4
461#define PMICMD_OUTDW 5
462#define PMICMD_BINB 6
463#define PMICMD_BOUTB 7
464#define PMICMD_ABOUTW 8
465#define PMICMD_ABOUTDW 9
466#define PMICMD_RMWBN 10
467#define PMICMD_RMWBI 11
468#define PMICMD_RMWWN 12
469#define PMICMD_REGOP 13
470#define PMICMD_ASSIGN 14
471/***************** for backward compatibility ***************/
472#define PMICMD_WAIT 15
473#define PMI_WAIT_CLEAR 0 /* Wait for CLEAR condition */
474/***************** for backward compatibility ***************/
475#define PMICMD_WAITB 16
476#define PMICMD_WAITW 17
477#define PMICMD_WAITDW 18
478#define PMICMD_READB 19 /* @V2.2TSU00 */
479#define PMICMD_READW 20 /* Don't rearrange the */
480#define PMICMD_READDW 21 /* order or put */
481#define PMICMD_WRITEB 22 /* anything in between */
482#define PMICMD_WRITEW 23 /* for these MMIO */
483#define PMICMD_WRITEDW 24 /* commands */
484#define PMICMD_ROUTINE 25 /* @V2.2TSU01 */
485#define PMICMD_LABEL 26
486#define PMICMD_WHILE 27
487#define PMICMD_ENDWHILE 28
488#define PMICMD_IF 29
489#define PMICMD_GOTO 30
490#define PMICMD_STRCMP 31
491#define PMICMD_MEMCMP 32
492#define PMICMD_CALL 33
493#define PMICMD_MAX PMICMD_CALL /* equals last entry */
494
495
496#define PMI_REGOP_ASSIGN 0 /* Rxxx = <value> */
497#define PMI_REGOP_AND 1 /* Rxxx &= <value> */
498#define PMI_REGOP_OR 2 /* Rxxx |= <value> */
499#define PMI_REGOP_XOR 3 /* Rxxx ^= <value> */
500#define PMI_REGOP_PLUS 4 /* Rxxx += <value> */
501#define PMI_REGOP_MINUS 5 /* Rxxx -= <value> */
502#define PMI_REGOP_SHL 6 /* Rxxx <= <value> */
503#define PMI_REGOP_SHR 7 /* Rxxx >= <value> */
504#define PMI_REGOP_LESS 8 /* Rxx < Rxyy */
505#define PMI_REGOP_LESS_EQUALS 9 /* Rxx <= Ryy */
506#define PMI_REGOP_GREATER 10 /* Rxx > Rxyy */
507#define PMI_REGOP_GREATER_EQUALS 11 /* Rxx >= Ryy */
508#define PMI_REGOP_EQUALS 12 /* Rxx == Ryy */
509#define PMI_REGOP_NOT_EQUALS 13 /* Rxx != Ryy */
510#define PMI_REGOP_MAX PMI_REGOP_NOT_EQUALS /* must equal last entry */
511
512/*
513** Type Definitions
514**
515** Tokens are grouped, and must be kept that way.
516** There are dummy tokens, place holders, TOK_??_BEGIN and TOK_??_END
517** to make tests and expansion easier. Just be sure to keep token
518** info for a given section, within these bounds.
519*/
520
521typedef enum _PMITOKEN { /* pt */
522 TOK_SECT_BEGIN,
523/***************** for backward compatibility ***************/
524 TOK_ADAPTERTYPE, /* Section Heading tokens */
525 TOK_CHIPSET,
526/***************** for backward compatibility ***************/
527 TOK_PMIVERSION, /* Section Heading tokens */
528 TOK_COMMENT,
529 TOK_MODEINFO,
530 TOK_SETMODE,
531 TOK_MONITORMODEINFO,
532 TOK_TRAPREGS,
533 TOK_UNLOCK,
534 TOK_LOCK,
535 TOK_CLEANUP,
536 TOK_SETBANK,
537 TOK_GETBANK,
538 TOK_DECLARATIONS,
539 TOK_COPYVRAM,
540 TOK_TUNEDISPLAY,
541 TOK_SETMEMORYIOADDRESS, // @V3.2TSU00
542 TOK_HARDWARE,
543 TOK_IDENTIFYADAPTER,
544 TOK_ISENGINEBUSY,
545 TOK_ENABLECONTROLLER,
546 TOK_DISABLECONTROLLER,
547 TOK_SETMONITORTIMINGS,
548 TOK_ROUTINE_DECLR, /* @V2.2TSU01 */
549 TOK_INCLUDE, /* text include */
550 TOK_INCLUDECODE, /* DLL include */
551 TOK_SECT_END,
552
553 TOK_MI_BEGIN,
554 TOK_MODEATTRIBUTES, /* ModeInfo Section tokens */
555 TOK_INT10MODESET, /* @V2.2TSU00 int 10 mode */
556 TOK_BYTESPERSCANLINE,
557 TOK_TEXTROWS, /* [ModeInfo] and [Hardware] tokens */
558 TOK_XRESOLUTION, /* are PMI keyvariables. Do remember */
559 TOK_YRESOLUTION, /* update the PMIKeyVarTable[] and */
560 TOK_XCHARSIZE, /* PMI Keyvariable defines in header file */
561 TOK_YCHARSIZE,
562 TOK_BITSPERPIXEL,
563 TOK_NUMBEROFPLANES,
564 TOK_PAGELENGTH,
565 TOK_SAVESIZE,
566 TOK_BUFFERADDRESS,
567 TOK_APERTURESIZE,
568 TOK_COLORFORMAT,
569 TOK_COLORWEIGHT,
570 TOK_VERTICALREFRESH,
571 TOK_HORIZONTALREFRESH,
572 TOK_VPOLARITYPOSITIVE,
573 TOK_HPOLARITYPOSITIVE,
574 TOK_SCREENLEFTEDGE,
575 TOK_SCREENRIGHTEDGE,
576 TOK_SCREENTOPEDGE,
577 TOK_SCREENBOTTOMEDGE,
578 TOK_COLORS, /* @V3.2SEN01 number of colors field added */
579/***************** for backward compatibility ***************/
580 TOK_INTERLACEMODE,
581/***************** for backward compatibility ***************/
582 TOK_MI_END,
583
584 TOK_HARDWARE_BEGIN, /* @V2.2TSU00 Hardware Section */
585 TOK_BUSTYPE,
586 TOK_OEMSTRING,
587 TOK_DACSTRING,
588 TOK_VERSION,
589 TOK_TOTALMEMORY,
590 TOK_MEMORYIOADDRESS,
591 TOK_PORTIOADDRESS,
592 TOK_ENDIAN,
593 TOK_INT10SETMODE, /* @V3.1TSU00 */
594 TOK_HARDWARE_END,
595
596 TOK_TRAP_BEGIN,
597 TOK_BYTE_IOPORT, /* @V2.2TSU00, trap registers type */
598 TOK_WORD_IOPORT,
599 TOK_DWORD_IOPORT,
600 TOK_BYTE_MMIOPORT,
601 TOK_WORD_MMIOPORT,
602 TOK_DWORD_MMIOPORT,
603 TOK_RESET,
604 TOK_INDEX,
605 TOK_INDEXMASK,
606 TOK_DATAMASK,
607 TOK_ACCEL,
608 TOK_RO,
609 TOK_WO,
610 TOK_RW,
611 TOK_TRAP_END,
612
613 TOK_SM_BEGIN,
614 TOK_INB, /* Command Section tokens */
615 TOK_OUTB,
616 TOK_INW,
617 TOK_INDW,
618 TOK_OUTW,
619 TOK_OUTDW,
620 TOK_BINB,
621 TOK_BOUTB,
622 TOK_RMWBI,
623 TOK_RMWBN,
624 TOK_RMWWN,
625 TOK_ABOUTW,
626 TOK_ABOUTDW,
627 TOK_IF,
628 TOK_GOTO,
629 TOK_VARIABLE,
630 TOK_WHILE,
631 TOK_ENDWHILE,
632 TOK_MEMCMP,
633 TOK_STRCMP,
634 TOK_READB, /* @V2.2TSU00 */
635 TOK_READW, /* Don't rearrange the */
636 TOK_READDW, /* order or put */
637 TOK_WRITEB, /* anything in between */
638 TOK_WRITEW, /* for these MMIO */
639 TOK_WRITEDW, /* commands */
640 TOK_CALL,
641 TOK_ROUTINE,
642/***************** for backward compatibility ***************/
643 TOK_WAIT,
644/***************** for backward compatibility ***************/
645 TOK_WAITB,
646 TOK_WAITW,
647 TOK_WAITDW,
648 TOK_VALUE,
649 TOK_PMIREG,
650 TOK_LPAREN,
651 TOK_RPAREN,
652 TOK_LBRACE,
653 TOK_RBRACE,
654 TOK_EQUALS,
655 TOK_NOTEQUALS,
656 TOK_SEMICOLON,
657 TOK_COMMA,
658 TOK_COLON,
659 TOK_MINUS,
660 TOK_HYPHEN = TOK_MINUS,
661 TOK_NEGATE, /* @V2.2TSU01 */
662 TOK_DOUBLEQUOTE,
663 TOK_PLUS,
664 TOK_REGOP_AND,
665 TOK_REGOP_OR,
666 TOK_REGOP_XOR,
667 TOK_REGOP_SHL,
668 TOK_LESS = TOK_REGOP_SHL, /* @V2.2TSU01 */
669 TOK_REGOP_SHR,
670 TOK_SM_END,
671
672 TOK_EOF,
673 TOK_IOPORT,
674 TOK_MMIO,
675 TOK_PIO,
676 TOK_ISA,
677 TOK_VLB,
678 TOK_PCI,
679 TOK_EISA,
680 TOK_PCMCIA,
681 TOK_MCA,
682 TOK_BIG_ENDIAN,
683 TOK_LITTLE_ENDIAN,
684 TOK_QUOTEDSTRING,
685 TOK_MMIO_REG_NAME,
686 TOK_IOPORT_NAME,
687 TOK_PMI_KEYVAR,
688 TOK_SHADOWVRAM,
689 TOK_MINIVDM, /* @V3.1TSU00 */
690 TOK_FULLVDM, /* @V3.1TSU00 */
691 TOK_ERROR, /* error */
692 TOK_PASS
693} PMITOKEN;
694
695typedef struct _TOK { /* tok */
696 CHAR *tok_txt;
697 PMITOKEN tok_val;
698} TOK;
699
700/*
701 * definitions of bus types.
702 */
703#define ISA_BUS 0 /* @V2.2SENJA */
704#define VLB_BUS 1
705#define PCI_BUS 2
706#define EISA_BUS 3
707#define PCMCIA_BUS 4
708#define MCA_BUS 5
709#define BUS_MAX MCA_BUS
710
711#endif /* PMIDEF_INCL */
712
713/*
714 * PMI token declarations
715 * PMI_TOKEN_ARRAY should be defined to include the following array.
716 * In this way, this array will not be allocated for every C file.
717 */
718#ifdef PMI_TOKEN_ARRAY
719
720TOK Tokens[] =
721{
722
723/***************** for backward compatibility ***************/
724 "[ADAPTERTYPE]", TOK_ADAPTERTYPE,
725 "[CHIPSET]", TOK_CHIPSET,
726/***************** for backward compatibility ***************/
727 "[PMIVERSION]", TOK_PMIVERSION,
728 "[COMMENT]", TOK_COMMENT,
729 "[MODEINFO]", TOK_MODEINFO,
730 "[SETMODE]", TOK_SETMODE,
731 "[MONITORMODEINFO]", TOK_MONITORMODEINFO,
732 "[TRAPREGS]", TOK_TRAPREGS,
733 "[UNLOCK]", TOK_UNLOCK,
734 "[LOCK]", TOK_LOCK,
735 "[CLEANUP]", TOK_CLEANUP,
736 "[SETBANK]", TOK_SETBANK,
737 "[GETBANK]", TOK_GETBANK,
738 "[DECLARATIONS]", TOK_DECLARATIONS,
739 "[COPYVRAM]", TOK_COPYVRAM,
740 "[TUNEDISPLAY]", TOK_TUNEDISPLAY,
741 "[SETMEMORYIOADDRESS]",TOK_SETMEMORYIOADDRESS, // @V3.2TSU00
742 "[HARDWARE]", TOK_HARDWARE,
743 "[IDENTIFYADAPTER]", TOK_IDENTIFYADAPTER,
744 "[ISENGINEBUSY]", TOK_ISENGINEBUSY,
745 "[ENABLECONTROLLER]", TOK_ENABLECONTROLLER,
746 "[DISABLECONTROLLER]",TOK_DISABLECONTROLLER,
747 "[SETMONITORTIMINGS]",TOK_SETMONITORTIMINGS,
748 "INCLUDE", TOK_INCLUDE, /* text include */
749 "INCLUDECODE", TOK_INCLUDECODE, /* DLL include */
750 /*
751 * Hardware Section
752 */
753 "BUSTYPE", TOK_BUSTYPE,
754 "OEMSTRING", TOK_OEMSTRING,
755 "DACSTRING", TOK_DACSTRING,
756 "VERSION", TOK_VERSION,
757 "TOTALMEMORY", TOK_TOTALMEMORY,
758 "MEMORYIOADDRESS", TOK_MEMORYIOADDRESS,
759 "PORTIOADDRESS", TOK_PORTIOADDRESS,
760 "ENDIAN", TOK_ENDIAN,
761 "INT10SETMODE", TOK_INT10SETMODE, /* @V3.1TSU00 */
762 /*
763 * TrapRegs Section
764 */
765 "BYTE_IOPORT", TOK_BYTE_IOPORT,
766 "WORD_IOPORT", TOK_WORD_IOPORT,
767 "DWORD_IOPORT", TOK_DWORD_IOPORT,
768 "BYTE_MMIOPORT", TOK_BYTE_MMIOPORT,
769 "WORD_MMIOPORT", TOK_WORD_MMIOPORT,
770 "DWORD_MMIOPORT", TOK_DWORD_MMIOPORT,
771 "RESET", TOK_RESET,
772 "INDEX", TOK_INDEX,
773 "INDEXMASK", TOK_INDEXMASK,
774 "DATAMASK", TOK_DATAMASK,
775 "ACCEL", TOK_ACCEL,
776 "RO", TOK_RO,
777 "WO", TOK_WO,
778 "RW", TOK_RW,
779 /*
780 * ModeInfo Section
781 */
782 "INT10MODESET", TOK_INT10MODESET,
783 "MODEATTRIBUTES", TOK_MODEATTRIBUTES,
784 "BYTESPERSCANLINE", TOK_BYTESPERSCANLINE,
785 "TEXTROWS", TOK_TEXTROWS,
786 "XRESOLUTION", TOK_XRESOLUTION,
787 "YRESOLUTION", TOK_YRESOLUTION,
788 "XCHARSIZE", TOK_XCHARSIZE,
789 "YCHARSIZE", TOK_YCHARSIZE,
790 "BITSPERPIXEL", TOK_BITSPERPIXEL,
791 "NUMBEROFPLANES", TOK_NUMBEROFPLANES,
792 "PAGELENGTH", TOK_PAGELENGTH,
793 "SAVESIZE", TOK_SAVESIZE,
794 "BUFFERADDRESS", TOK_BUFFERADDRESS,
795 "APERTURESIZE", TOK_APERTURESIZE,
796 "COLORFORMAT", TOK_COLORFORMAT,
797 "COLORWEIGHT", TOK_COLORWEIGHT,
798/***************** for backward compatibility ***************/
799 "INTERLACEMODE", TOK_INTERLACEMODE,
800/***************** for backward compatibility ***************/
801 "VERTICALREFRESH", TOK_VERTICALREFRESH,
802 "HORIZONTALREFRESH", TOK_HORIZONTALREFRESH,
803 "VPOLARITYPOSITIVE", TOK_VPOLARITYPOSITIVE,
804 "HPOLARITYPOSITIVE", TOK_HPOLARITYPOSITIVE,
805 "SCREENLEFTEDGE", TOK_SCREENLEFTEDGE,
806 "SCREENRIGHTEDGE", TOK_SCREENRIGHTEDGE,
807 "SCREENTOPEDGE", TOK_SCREENTOPEDGE,
808 "SCREENBOTTOMEDGE", TOK_SCREENBOTTOMEDGE,
809 "COLORS", TOK_COLORS, /* @V3.2SEN01 */
810 /*
811 * PMI Commands
812 */
813 "INB", TOK_INB,
814 "OUTB", TOK_OUTB,
815 "INW", TOK_INW,
816 "OUTW", TOK_OUTW,
817 "INDW", TOK_INDW,
818 "OUTDW", TOK_OUTDW,
819 "BINB", TOK_BINB,
820 "BOUTB", TOK_BOUTB,
821 "RMWBI", TOK_RMWBI,
822 "RMWBN", TOK_RMWBN,
823/***************** for backward compatibility ***************/
824 "RMWB", TOK_RMWBI,
825 "RMWW", TOK_RMWBN,
826/***************** for backward compatibility ***************/
827 "RMWWN", TOK_RMWWN,
828 "ABOUTW", TOK_ABOUTW,
829 "ABOUTDW", TOK_ABOUTDW,
830 "IF", TOK_IF,
831 "GOTO", TOK_GOTO,
832 "WHILE", TOK_WHILE,
833 "ENDWHILE", TOK_ENDWHILE,
834 "MEMCMP", TOK_MEMCMP,
835 "STRCMP", TOK_STRCMP,
836 "READB", TOK_READB, /* @V2.2TSU00 */
837 "READW", TOK_READW, /* Don't rearrange the */
838 "READDW", TOK_READDW, /* order or put */
839 "WRITEB", TOK_WRITEB, /* anything in between */
840 "WRITEW", TOK_WRITEW, /* for these MMIO */
841 "WRITEDW", TOK_WRITEDW, /* commands */
842 "CALL", TOK_CALL,
843/***************** for backward compatibility ***************/
844 "WAIT", TOK_WAIT,
845/***************** for backward compatibility ***************/
846 "WAITB", TOK_WAITB,
847 "WAITW", TOK_WAITW,
848 "WAITDW", TOK_WAITDW,
849 /*
850 * others
851 */
852 "MMIO", TOK_MMIO, /* used in [Declarations] */
853/***************** for backward compatibility ***************/
854 "P", TOK_MMIO, /* used in [Declarations] */
855/***************** for backward compatibility ***************/
856 "PIO", TOK_PIO, /* */
857 "ISA", TOK_ISA,
858 "VLB", TOK_VLB,
859 "PCI", TOK_PCI,
860 "EISA", TOK_EISA,
861 "PCMCIA", TOK_PCMCIA,
862 "MCA", TOK_MCA,
863 "SHADOWVRAM", TOK_SHADOWVRAM,
864 "BIG", TOK_BIG_ENDIAN,
865 "LITTLE", TOK_LITTLE_ENDIAN,
866 "MINIVDM", TOK_MINIVDM, /* @V3.1TSU00 */
867 "FULLVDM", TOK_FULLVDM /* @V3.1TSU00 */
868
869} ;
870
871extern TOK Tokens[];
872
873#endif /* PMI_TOKEN_ARRAY */
874
875/*
876** PMI subsystem errors
877*/
878#define ERROR_ADAPTER_NOT_SUPPORTED ERROR_USER_DEFINED_BASE+0x10
879#define ERROR_REFRESH_NOT_SUPPORTED ERROR_USER_DEFINED_BASE+0x11
880#define ERROR_MODE_NOT_SUPPORTED ERROR_USER_DEFINED_BASE+0x12
881#define ERROR_REQ_SECTION_UNDEFINED ERROR_USER_DEFINED_BASE+0x13
882#define ERROR_PMI_FILE_SYNTAX ERROR_USER_DEFINED_BASE+0x14
883#define ERROR_NO_MONITOR_SUPPORT ERROR_USER_DEFINED_BASE+0x15
884#define ERROR_INVALID_CONFIGURATION ERROR_USER_DEFINED_BASE+0x16
885/* @V3.2SEN01 start */
886#define ERROR_INADEQUATE_VDM_SUPPORT ERROR_USER_DEFINED_BASE+0x17
887#define ERROR_VDM_CREATION_NOT_SHELLPROCESS ERROR_USER_DEFINED_BASE+0x18
888#define ERROR_MINIVDM_PROCESSSUPPORTONLY ERROR_USER_DEFINED_BASE+0x19
889#define ERROR_INVALID_ADAPTER_EXTENSION ERROR_USER_DEFINED_BASE+0x20
890#define ERROR_ADAPTER_STILL_IN_USE ERROR_USER_DEFINED_BASE+0x21
891#define ERROR_UPLEVEL_VIDEOPMI ERROR_USER_DEFINED_BASE+0x22 //structure change for cb and ulcolors
892/* @V3.2SEN01 end */
893
894/* INC */
895
Note: See TracBrowser for help on using the repository browser.