NT4/private/ntos/video/mga_mil/defbind.h
2020-09-30 17:12:29 +02:00

335 lines
10 KiB
C

/**************************************************************************\
$Header: o:\src/RCS/DEFBIND.H 1.2 95/07/07 06:15:06 jyharbec Exp $
$Log: DEFBIND.H $
* Revision 1.2 95/07/07 06:15:06 jyharbec
* *** empty log message ***
*
* Revision 1.1 95/05/02 05:16:14 jyharbec
* Initial revision
*
\**************************************************************************/
/*/**************************************************************************
* name: defbind.h
*
* description: Internal definitions for binding
*
* designed: Benoit Leblanc
* last modified: $Author: jyharbec $, $Date: 95/07/07 06:15:06 $
*
* version: $Id: DEFBIND.H 1.2 95/07/07 06:15:06 jyharbec Exp $
*
****************************************************************************/
/*** DATA TYPES ***/
#define TYPES_DEFINED
typedef int bool;
typedef unsigned char byte;
typedef unsigned short word;
typedef short sword;
typedef unsigned long dword;
typedef long sdword;
/* RAMDAC type definition */
#define TVP3026 0
#define TVP3027 1
#define TVP3030 2
#define VCLOCK 2
#define MCLOCK 3
#define TITAN_ID 0xA2681700
#define NB_BOARD_MAX 4
#define BINDING_REV 1
#define TITAN_CHIP 0
#define ATLAS_CHIP 1
#define ATHENA_CHIP 2
#define DIP_BOARD 0xE
/* Buffer between the binding and CADDI (2000 dword) */
#define BUF_BIND_SIZE 2000
#define BLOCK_SIZE 262144 /* 1M of memory (value in dword) */
#define CHAR_S 1
#define SHORT_S 2
#define LONG_S 4
#define FLOAT_S 4
#ifndef NULL
#define NULL 0
#endif
/* DISPLAY SUPPORT */
#define DISP_SUPPORT_I 0x01 /* interlace */
#define DISP_SUPPORT_NA 0xa0 /* monitor limited */
#define DISP_SUPPORT_HWL 0xc0 /* hardware limited */
#define DISP_NOT_SUPPORT 0x80
#define MODE_LUT 0x04
#define MODE_565 0x08
#define MODE_TV 0x02
#define MODE_DB 0x10
#ifdef __HIGHC__
/** USE packed (i.e. non aligned struct members)
*** because in mvtovid.c we access the struct
*** as an array. Highc1.73 do not aligned members
*** by default but Highc3.03 DO !!!!!!
**/
typedef _packed struct{
char name[26];
unsigned long valeur;
}vid;
#else
typedef struct{
char name[26];
unsigned long valeur;
}vid;
#endif
/**************** MGA.INF ******************/
#define VERSION_NUMBER 102
#define MONITOR_NA -1
#define MONITOR_NI 0
#define MONITOR_I 1
#define NUMBER_BOARD_MAX 4
#define NUMBER_OF_RES 8
#define NUMBER_OF_ZOOM 3
#define RES640 0
#define RES800 1
#define RES1024 2
#define RES1152 3
#define RES1280 4
#define RES1600 5
#define RESNTSC 6
#define RESPAL 7
typedef struct
{
char IdString[32]; /* "Matrox MGA Setup file" */
short Revision; /* .inf file revision */
short BoardPtr[NUMBER_BOARD_MAX]; /* offset of board wrt start of file */
/* -1 = board not there */
}header;
typedef struct
{
dword MapAddress; /* board address */
short BitOperation8_16; /* BIT8, BIT16, BITNARROW16 */
char DmaEnable; /* 0 = enable ; 1 = disable */
char DmaChannel; /* channel number. 0 = disabled */
char DmaType; /* 0 = ISA, 1 = B, 2 = C */
char DmaXferWidth; /* 0 = 16, 1 = 32 */
char MonitorName[64]; /* as in MONITORM.DAT file */
short MonitorSupport[NUMBER_OF_RES]; /* NA, NI, I */
short NumVidparm; /* up to 24 vidparm structures */
}general_info;
/* vidparm VideoParam[]; */
typedef struct
{
long PixClock;
short HDisp;
short HFPorch;
short HSync;
short HBPorch;
short HOvscan;
short VDisp;
short VFPorch;
short VSync;
short VBPorch;
short VOvscan;
short OvscanEnable;
short InterlaceEnable;
short HsyncPol; /* 0 : Negative 1 : Positive */
short VsyncPol; /* 0 : Negative 1 : Positive */
}Vidset;
typedef struct
{
short Resolution; /* RES640, RES800 ... RESPAL */
short PixWidth; /* 8, 16, 32 */
Vidset VidsetPar[NUMBER_OF_ZOOM]; /* for zoom X1, X2, X4 */
}Vidparm;
typedef struct
{
word DispWidth;
word DispHeight;
word PixWidth;
word RefreshRate;
Vidset VideoSet;
} ResParamSet;
typedef struct {
dword length;
dword hw_diagnostic_result;
dword sw_diagnostic_result;
dword shell_id;
dword shell_id_extension;
dword shell_version;
dword shell_version_extension;
dword shell_start_address;
dword shell_end_address;
dword comm_req_type;
dword comm_req_base_addr_offset;
dword comm_req_length;
dword comm_req_wrptr_addr_offset;
dword comm_req_rdptr_addr_offset;
dword comm_inq_type;
dword comm_inq_base_addr_offset;
dword comm_inq_length;
dword comm_inq_wrptr_addr_offset;
dword comm_inq_rdptr_addr_offset;
dword size_rc;
dword size_light_type_0;
dword size_light_type_1;
dword size_light_type_2;
dword size_light_type_3;
dword size_light_type_4;
dword high_resolution_visible_width;
dword high_resolution_visible_height;
dword ntsc_underscan_visible_width;
dword ntsc_underscan_visible_height;
dword pal_underscan_visible_width;
dword pal_underscan_visible_height;
dword ntsc_overscan_visible_width;
dword ntsc_overscan_visible_height;
dword pal_overscan_visible_width;
dword pal_overscan_visible_height;
byte *end_string;
} SYSPARMS;
/*-------------------------------------------------------------*/
/*** IMPORTANT NOTE !!! ***/
/*** If you change the length of this structure EmpromInfo, ***/
/*** you have to adjust the dimension of the definition of ***/
/*** EmpromInfo in bind.h ***/
/*-------------------------------------------------------------*/
/* We use this define to keep secret the definition of EpromInfo in bind.h */
#define EPROM_DEFINED
#ifdef WINDOWS_NT
#pragma pack(1)
#endif
/*-----------------------*/
/* FLASH EPROM STRUCTURE */
/*-----------------------*/
typedef struct tagEpromInfo {
word StructLen; /* Length of this structure in bytes */
word ProductID; /* Unique number identifying the product type */
/* 0 : MGA-S1P20 (2MB base with 175MHz Ramdac) */
/* 1 : MGA-S1P21 (2MB base with 220MHz Ramdac) */
/* 2 : Reserved */
/* 3 : Reserved */
/* 4 : MGA-S1P40 (4MB base with 175MHz Ramdac) */
/* 5 : MGA-S1P41 (4MB base with 220MHz Ramdac) */
byte SerNo[10]; /* Serial number of the board */
word ManufDate; /* Manufacturing date of the board (at product test */
/* Format: yyyy yyym mmmd dddd */
word ManufId; /* Identification of manufacturing site */
word PCBInfo; /* Number and revision level of the PCB */
/* Format: nnnn nnnn nnnr rrrr */
/* n = PCB number ex:576 (from 0->2047) */
/* r = PCB revision (from 0->31) */
word PMBInfo; /* Identification of any PMBs */
word RamdacType; /* Bit 0-7 : Ramdac speed (0=175MHz, 1=220MHz) */
/* Bit 8-15 : Ramdac type (0=TVP3026, 1=TVP3027) */
word PclkMax; /* Maximum PCLK of the ramdac */
word LclkMax; /* Maximum LDCLK supported by the WRAM memory */
word ClkBase; /* Maximum MCLK of base board */
word Clk4MB; /* Maximum MCLK of 4Mb board */
word Clk8MB; /* Maximum MCLK of 8Mb board */
word ClkMod; /* Maximum MCLK of board with multimedia module */
word TestClk; /* Diagnostic test pass frequency */
word VGAFreq1; /* Default VGA mode1 pixel frequency */
word VGAFreq2; /* Default VGA mode2 pixel frequency */
word ProgramDate; /* Date of last BIOS programming/update */
word ProgramCnt; /* Number of times BIOS has been programmed */
dword Options; /* Support for up to 32 hardware/software options */
dword FeatFlag; /* Support for up to 32 hardware/software features */
word VGAClk; /* Definition of VGA mode MCLK */
word StructRev; /* Indicate the revision level of this header struct.*/
word Reserved[3];
} EpromInfo;
#ifdef WINDOWS_NT
#pragma pack( )
#endif
/* -------------------------------------------------------------------
* For SXCI.DLL
* ------------------------------------------------------------------- */
#define SXCI_2D 2
#define SXCI_3D 3
#define ID_mtxAllocBuffer 1
#define ID_mtxAllocCL 2
#define ID_mtxAllocRC 3
#define ID_mtxAllocLSDB 4
#define ID_mtxFreeBuffer 5
#define ID_mtxFreeCL 6
#define ID_mtxFreeLSDB 7
#define ID_mtxFreeRC 8
#define ID_mtxPostBuffer 9
#define ID_mtxSetCL 10
#define ID_mtxBlendCL 11
#define ID_mtxGetBlockSize 12
#define ID_mtxScScBitBlt 13
#define ID_mtxScMemBitBlt 14
#define ID_mtxMemScBitBlt 15
#define ID_mtxAllocHugeBuffer 16
#define ID_mtxFreeHugeBuffer 17
#define ID_CallCaddiInit 30
#define ID_PassPoolMem 31
#define ID_mtxExitDll 99