/*-*-c++-*-*/ /* ** Copyright (c) 1997, 3Dfx Interactive, Inc. ** All Rights Reserved. ** ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** the contents of this file may not be disclosed to third parties, copied or ** duplicated in any form, in whole or in part, without the prior written ** permission of 3Dfx Interactive, Inc. ** ** RESTRICTED RIGHTS LEGEND: ** Use, duplication or disclosure by the Government is subject to restrictions ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** rights reserved under the Copyright Laws of the United States. ** ** ** $Revision: 62 $ ** $Date: 7/24/98 1:38p $ ** */ #ifndef __SST1INIT_H__ #define __SST1INIT_H__ /* ** Copyright (c) 1996, 3Dfx Interactive, Inc. ** All Rights Reserved. ** ** This is UNPUBLISHED PROPRIETARY SOURCE CODE of 3Dfx Interactive, Inc.; ** the contents of this file may not be disclosed to third parties, copied or ** duplicated in any form, in whole or in part, without the prior written ** permission of 3Dfx Interactive, Inc. ** ** RESTRICTED RIGHTS LEGEND: ** Use, duplication or disclosure by the Government is subject to restrictions ** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data ** and Computer Software clause at DFARS 252.227-7013, and/or in similar or ** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished - ** rights reserved under the Copyright Laws of the United States. ** ** $Revision: 62 $ ** $Date: 7/24/98 1:38p $ ** ** SST-1 Initialization routine protypes ** ** If all initialization routines are called, it is assumed they are called ** in the following order: ** 1. sst1InitMapBoard(); ** 2. sst1InitRegisters(); ** 3. sst1InitGamma(); ** 4. sst1InitVideoBuffers(); ** 5. sst1InitSli(); [Optional] ** 6. sst1InitCmdFifo(); ** ** sst1InitShutdown() is called at the end of an application to turn off ** the SST-1 graphics subsystem ** */ /* sst1init.h assumes "glide.h" and "sst.h" are already included */ /* Init code debug print routine */ #ifdef INIT_DOS /* Glide version... */ #define INIT_OUTPUT #define INIT_PRINTF(a) sst1InitPrintf a #define INIT_INFO(A) #endif #ifndef DIRECTX #undef GETENV #undef ATOI #undef ATOF #undef SSCANF #undef POW #define GETENV(A) sst1InitGetenv(A) #define ATOI(A) atoi(A) #define ATOF(A) atof(A) #define SSCANF( A, B, C ) sscanf( A, B, C ) #define POW( A, B ) pow( A, B ) #define FTOL( X ) ((FxU32)(X)) // Video resolution declarations #include "sst1vid.h" // Info Structure declaration #include "cvginfo.h" #else /* DIRECTX */ #include "ddglobal.h" #pragma optimize ("",off) /* ddglobal.h tuns this on for retail builds */ #undef INIT_PRINTF #undef INIT_INFO #undef GETENV #undef ATOI #undef ATOF #undef FTOL #undef ITOF_INV #undef SSCANF #undef POW /* #define INIT_PRINTF(a) */ #ifdef FXTRACE #define INIT_PRINTF DDPRINTF #else #define INIT_PRINTF 1 ? (void) 0 : (void) #endif #define INIT_INFO(A) #define GETENV(A) ddgetenv(A) #define ATOI(A) ddatoi(A) #define ATOF(A) ddatof(A) #define FTOL(A) ddftol(A) #define ITOF_INV(A) dd_itof_inv(A) #define SSCANF( A, B, C ) ddsscanf( A, B, C ) #define POW( A, B ) ddpow( A, B ) #endif /* DIRECTX */ /* Defines to writing to/reading from SST-1 */ #if 0 #define IGET(A) A #define ISET(A,D) A = (D) #else #define IGET(A) sst1InitRead32((FxU32 *) &(A)) #define ISET(A,D) sst1InitWrite32((FxU32 *) &(A), D) #endif /* ** P6 Fence ** ** Here's the stuff to do P6 Fencing. This is required for the ** certain things on the P6 */ #ifdef __cplusplus extern "C" { #endif #ifdef SST1INIT_ALLOCATE FxU32 p6FenceVar; #else extern FxU32 p6FenceVar; #endif #if defined(__WATCOMC__) void p6Fence(void); # pragma aux p6Fence = \ "xchg eax, p6FenceVar" \ modify [eax]; # define P6FENCE p6Fence() #elif defined(__MSC__) # define P6FENCE {_asm xchg eax, p6FenceVar} #elif defined(macintosh) && __POWERPC__ && defined(__MWERKS__) # define P6FENCE __eieio() #else # error "P6 Fencing in-line assembler code needs to be added for this compiler" #endif #ifdef __cplusplus } #endif #ifndef _FXPCI_H_ #include #endif #include /*--------------------------------------------------------*/ /* Following defines need to go in "cvgdefs.h" eventually */ #define SST_CMDFIFO_ADDR BIT(21) /*--------- SST PCI Configuration Command bits --------------*/ #define SST_PCIMEM_ACCESS_EN BIT(1) /*------- SST PCI Configuration Register defaults -----------*/ #define SST_PCI_INIT_ENABLE_DEFAULT 0x0 #define SST_PCI_BUS_SNOOP_DEFAULT 0x0 /*--- SST PCI Init Enable Configuration Register defaults ---*/ #define SST_SLI_OWNPCI SST_SCANLINE_SLV_OWNPCI #define SST_SLI_MASTER_OWNPCI 0x0 #define SST_SLI_SLAVE_OWNPCI SST_SCANLINE_SLV_OWNPCI #define SST_CHUCK_REVISION_ID_SHIFT 12 #define SST_CHUCK_REVISION_ID (0xF< #endif #ifdef __cplusplus extern "C" { #endif #ifdef SST1INIT_ALLOCATE FILE *sst1InitMsgFile = stdout; #else extern FILE *sst1InitMsgFile; #endif #ifdef __cplusplus } #endif #endif /* Maximum number of SST-1 boards supported in system */ #define SST1INIT_MAX_BOARDS 16 /* Maximum number of read pushes in "voodoo.ini" file */ #define DACRDWR_MAX_PUSH 16 #ifdef __cplusplus extern "C" { #endif #ifdef SST1INIT_ALLOCATE static char headersIdent[] = "@#%Voodoo2 InitHeaders $Revision: 62 $"; FxBool sst1InitUseVoodooFile = FXFALSE; sst1InitEnvVarStruct *envVarsBase = (sst1InitEnvVarStruct *) NULL; sst1InitDacStruct *dacStructBase = (sst1InitDacStruct *) NULL; sst1InitDacStruct *iniDac = (sst1InitDacStruct *) NULL; sst1InitDacSetVideoStruct *iniVideo = (sst1InitDacSetVideoStruct *) NULL; sst1InitDacSetMemClkStruct *iniMemClk = (sst1InitDacSetMemClkStruct *) NULL; FxU32 iniStack[DACRDWR_MAX_PUSH]; int iniStackPtr = 0; sst1DeviceInfoStruct *sst1CurrentBoard; FxU32 sst1InitDeviceNumber; sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS]; FxU32 boardsInSystem; FxU32 boardsInSystemReally; FxU32 initIdleEnabled = 1; const PciRegister SST1_PCI_CFG_SCRATCH = { 0x50, 4, READ_WRITE }; const PciRegister SST1_PCI_SIPROCESS = { 0x54, 4, READ_WRITE }; #else extern FxBool sst1InitUseVoodooFile; extern sst1InitEnvVarStruct *envVarsBase; extern sst1InitDacStruct *dacStructBase; extern sst1InitDacStruct *iniDac; extern sst1InitDacSetVideoStruct *iniVideo; extern sst1InitDacSetMemClkStruct *iniMemClk; extern FxU32 iniStack[]; extern int iniStackPtr; extern sst1DeviceInfoStruct *sst1CurrentBoard; extern FxU32 sst1InitDeviceNumber; extern sst1DeviceInfoStruct sst1BoardInfo[SST1INIT_MAX_BOARDS]; extern FxU32 boardsInSystem; extern FxU32 boardsInSystemReally; extern FxU32 initIdleEnabled; extern PciRegister SST1_PCI_CFG_SCRATCH; extern PciRegister SST1_PCI_SIPROCESS; #endif /* SST1INIT_ALLOCATE */ #ifdef __3Dfx_PCI_CFG__ /* This is really ugly, but it makes us happy w/ the top of the tree * pci library which is happier than Gary's library. */ #define SST1_PCI_INIT_ENABLE PCI_SST1_INIT_ENABLE #define SST1_PCI_BUS_SNOOP0 PCI_SST1_BUS_SNOOP_0 #define SST1_PCI_BUS_SNOOP1 PCI_SST1_BUS_SNOOP_1 #define SST1_PCI_CFG_STATUS PCI_SST1_CFG_STATUS #else /* !__3Dfx_PCI_CFG__ */ #define SST1_PCI_BUS_SNOOP0 SST1_PCI_BUS_SNOOP_0 #define SST1_PCI_BUS_SNOOP1 SST1_PCI_BUS_SNOOP_1 #endif /* !__3Dfx_PCI_CFG__ */ #ifdef __cplusplus } #endif #ifdef SST1INIT_VIDEO_ALLOCATE /* SST1INIT_VIDEO_ALLOCATE is only #defined in video.c Define useful clock and video timings Clocks generated are follows: Clock Freq. (MHz) = [14.318 * (clkTiming_M+2)] / [(clkTiming_N+2) * (2^clkTiming_P)] Solving for clkTiming_M yields: clkTiming_M = [ [(Clock Freq (Mhz)) * (clkTiming_N+2) * (2^clkTiming_P)] / 14.318 ] - 2 NOTE: [14.318 * (clkTiming_M+2)] / (clkTiming_N+2) should be between 120 and 240 NOTE: Max. M is 127 NOTE: Max. N is 31 NOTE: Max. P is 3 NOTE: Max. L is 15 NOTE: Max. IB is 15 */ /* H3D video timing structures */ #ifdef H3D /* This guy's not used anywhere */ sst1VideoTimingStruct SST_VREZ_640X502_60 = { 96, /* hSyncOn */ 704, /* hSyncOff */ 2, /* vSyncOn */ 523, /* vSyncOff */ 38, /* hBackPorch */ 15, /* vBackPorch */ 640, /* xDimension */ 502, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 160, /* memOffset */ 20, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 25.175F, /* clkFreq16bpp */ 50.350F /* clkFreq24bpp */ }; /* Line doubled 640x480...line doubling done externally */ sst1VideoTimingStruct SST_VREZ_640X960LD_60 = { 45, /* hSyncOn */ 785, /* hSyncOff */ 3, /* vSyncOn */ 1044, /* vSyncOff */ 100, /* hBackPorch */ 18, /* vBackPorch */ 640, /* xDimension */ 502, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 160, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 50.82F, /* clkFreq16bpp */ 101.64F /* clkFreq24bpp */ }; /* Full resolution 640x480... */ sst1VideoTimingStruct SST_VREZ_640X960_60 = { 45, /* hSyncOn */ 785, /* hSyncOff */ 3, /* vSyncOn */ 1044, /* vSyncOff */ 100, /* hBackPorch */ 18, /* vBackPorch */ 640, /* xDimension */ 1004, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 320, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 50.82F, /* clkFreq16bpp */ 101.64F /* clkFreq24bpp */ }; /* Line doubled 800x600...line doubling done externally */ sst1VideoTimingStruct SST_VREZ_800X1200LD_45 = { 63, /* hSyncOn */ 983, /* hSyncOff */ 3, /* vSyncOn */ 1242, /* vSyncOff */ 150, /* hBackPorch */ 27, /* vBackPorch */ 800, /* xDimension */ 608, /* yDimension */ 42, /* refreshRate */ 0, /* miscCtrl */ 247, /* memOffset */ 26, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 56.25F, /* clkFreq16bpp */ 112.5F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_800X630_60 = { 127, /* hSyncOn */ 927, /* hSyncOff */ 4, /* vSyncOn */ 656, /* vSyncOff */ 86, /* hBackPorch */ 23, /* vBackPorch */ 800, /* xDimension */ 630, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 260, /* memOffset */ 26, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 40.0F, /* clkFreq16bpp */ 80.0F /* clkFreq24bpp */ }; /* Full res 800x600...so far, ain't nobody got enough memory */ sst1VideoTimingStruct SST_VREZ_800X1200_45 = { 63, /* hSyncOn */ 983, /* hSyncOff */ 3, /* vSyncOn */ 1244, /* vSyncOff */ 150, /* hBackPorch */ 27, /* vBackPorch */ 800, /* xDimension */ 1216, /* yDimension */ 42, /* refreshRate */ 0, /* miscCtrl */ 494, /* memOffset */ 26, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 56.25F, /* clkFreq16bpp */ 112.5F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_960X742_60 = { 103, /* hSyncOn */ 1151, /* hSyncOff */ 3, /* vSyncOn */ 765, /* vSyncOff */ 142, /* hBackPorch */ 22, /* vBackPorch */ 960, /* xDimension */ 742, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 360, /* memOffset */ 30, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 56.219F, /* clkFreq16bpp */ 112.437F /* clkFreq24bpp */ }; #endif sst1VideoTimingStruct SST_VREZ_320X200_70 = { 96, /* hSyncOn */ 704, /* hSyncOff */ 2, /* vSyncOn */ 447, /* vSyncOff */ 48, /* hBackPorch */ 35, /* vBackPorch */ 320, /* xDimension */ 200, /* yDimension */ 70, /* refreshRate */ 0x3, /* miscCtrl */ 35, /* memOffset */ 10, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 25.175F, /* clkFreq16bpp */ 50.350F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X200_75 = { 99, /* hSyncOn */ 733, /* hSyncOff */ 3, /* vSyncOn */ 429, /* vSyncOff */ 52, /* hBackPorch */ 25, /* vBackPorch */ 320, /* xDimension */ 200, /* yDimension */ 75, /* refreshRate */ 0x3, /* miscCtrl */ 35, /* memOffset */ 10, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 27.0F, /* clkFreq16bpp */ 54.0F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X200_85 = { 63, /* hSyncOn */ 767, /* hSyncOff */ 3, /* vSyncOn */ 442, /* vSyncOff */ 94, /* hBackPorch */ 41, /* vBackPorch */ 320, /* xDimension */ 200, /* yDimension */ 85, /* refreshRate */ 0x3, /* miscCtrl */ 35, /* memOffset */ 10, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 31.5F, /* clkFreq16bpp */ 63.0F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X200_120 = { 67, /* hSyncOn */ 798, /* hSyncOff */ 3, /* vSyncOn */ 424, /* vSyncOff */ 94, /* hBackPorch */ 16, /* vBackPorch */ 320, /* xDimension */ 200, /* yDimension */ 120, /* refreshRate */ 0x3, /* miscCtrl */ 35, /* memOffset */ 10, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 44.47F, /* clkFreq16bpp */ 88.94F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X240_60 = { 96, /* hSyncOn */ 704, /* hSyncOff */ 2, /* vSyncOn */ 523, /* vSyncOff */ 38, /* hBackPorch */ 25, /* vBackPorch */ 320, /* xDimension */ 240, /* yDimension */ 60, /* refreshRate */ 0x3, /* miscCtrl */ 40, /* memOffset */ 10, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 25.175F, /* clkFreq16bpp */ 50.350F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X240_75 = { 63, /* hSyncOn */ 775, /* hSyncOff */ 3, /* vSyncOn */ 497, /* vSyncOff */ 118, /* hBackPorch */ 16, /* vBackPorch */ 320, /* xDimension */ 240, /* yDimension */ 75, /* refreshRate */ 0x3, /* miscCtrl */ 40, /* memOffset */ 10, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 31.5F, /* clkFreq16bpp */ 63.0F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X240_85 = { 55, /* hSyncOn */ 776, /* hSyncOff */ 3, /* vSyncOn */ 506, /* vSyncOff */ 78, /* hBackPorch */ 25, /* vBackPorch */ 320, /* xDimension */ 240, /* yDimension */ 85, /* refreshRate */ 0x3, /* miscCtrl */ 40, /* memOffset */ 10, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 36.0F, /* clkFreq16bpp */ 72.0F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_320X240_120 = { 45, /* hSyncOn */ 785, /* hSyncOff */ 3, /* vSyncOn */ 506, /* vSyncOff */ 100, /* hBackPorch */ 18, /* vBackPorch */ 320, /* xDimension */ 240, /* yDimension */ 120, /* refreshRate */ 0x3, /* miscCtrl */ 40, /* memOffset */ 10, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 50.82F, /* clkFreq16bpp */ 101.64F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_400X300_60 = { 39, /* hSyncOn */ 471, /* hSyncOff */ 3, /* vSyncOn */ 619, /* vSyncOff */ 54, /* hBackPorch */ 18, /* vBackPorch */ 400, /* xDimension */ 300, /* yDimension */ 60, /* refreshRate */ 0x2, /* miscCtrl */ 70, /* memOffset */ 14, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 19.108F, /* clkFreq16bpp */ 38.216F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_400X300_75 = { 39, /* hSyncOn */ 487, /* hSyncOff */ 3, /* vSyncOn */ 624, /* vSyncOff */ 62, /* hBackPorch */ 23, /* vBackPorch */ 400, /* xDimension */ 300, /* yDimension */ 75, /* refreshRate */ 0x2, /* miscCtrl */ 70, /* memOffset */ 14, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 24.829F, /* clkFreq16bpp */ 49.658F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_400X300_85 = { 39, /* hSyncOn */ 487, /* hSyncOff */ 3, /* vSyncOn */ 627, /* vSyncOff */ 62, /* hBackPorch */ 26, /* vBackPorch */ 400, /* xDimension */ 300, /* yDimension */ 85, /* refreshRate */ 0x2, /* miscCtrl */ 70, /* memOffset */ 14, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 28.274F, /* clkFreq16bpp */ 56.548F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_400X300_120 = { 39, /* hSyncOn */ 503, /* hSyncOff */ 3, /* vSyncOn */ 640, /* vSyncOff */ 70, /* hBackPorch */ 39, /* vBackPorch */ 400, /* xDimension */ 300, /* yDimension */ 120, /* refreshRate */ 0x2, /* miscCtrl */ 70, /* memOffset */ 14, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 41.975F, /* clkFreq16bpp */ 83.950F /* clkFreq24bpp */ }; /* 512x256@60 only syncs to Arcade-style monitors */ sst1VideoTimingStruct SST_VREZ_512X256_60 = { 41, /* hSyncOn */ 626, /* hSyncOff */ 4, /* vSyncOn */ 286, /* vSyncOff */ 65, /* hBackPorch */ 24, /* vBackPorch */ 512, /* xDimension */ 256, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 64, /* memOffset */ 16, /* tilesInX */ 25, /* vFifoThreshold */ FXFALSE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 23.334F, /* clkFreq16bpp */ 23.334F /* clkFreq24bpp */ }; #if 0 // For Arcade monitors... sst1VideoTimingStruct SST_VREZ_512X384_60 = { 23, /* hSyncOn */ 640, /* hSyncOff */ 3, /* vSyncOn */ 411, /* vSyncOff */ 90, /* hBackPorch */ 24, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXFALSE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 33.0F, /* clkFreq16bpp */ 33.0F /* clkFreq24bpp */ }; #else // For PC monitors... sst1VideoTimingStruct SST_VREZ_512X384_60 = { 55, /* hSyncOn */ 615, /* hSyncOff */ 3, /* vSyncOn */ 792, /* vSyncOff */ 78, /* hBackPorch */ 23, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 60, /* refreshRate */ 0x2, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 32.054F, /* clkFreq16bpp */ 64.108F /* clkFreq24bpp */ }; #endif sst1VideoTimingStruct SST_VREZ_512X384_72 = { 51, /* hSyncOn */ 591, /* hSyncOff */ 3, /* vSyncOn */ 430, /* vSyncOff */ 55, /* hBackPorch */ 25, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 72, /* refreshRate */ 0, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 20.093F, /* clkFreq16bpp */ 40.186F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_512X384_75 = { 55, /* hSyncOn */ 631, /* hSyncOff */ 3, /* vSyncOn */ 799, /* vSyncOff */ 86, /* hBackPorch */ 30, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 75, /* refreshRate */ 0x2, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 41.383F, /* clkFreq16bpp */ 82.766F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_512X384_75_NOSCANDOUBLE = { 47, /* hSyncOn */ 591, /* hSyncOff */ 3, /* vSyncOn */ 399, /* vSyncOff */ 62, /* hBackPorch */ 14, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 19.296F, /* clkFreq16bpp */ 38.592F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_512X384_85 = { 55, /* hSyncOn */ 631, /* hSyncOff */ 3, /* vSyncOn */ 804, /* vSyncOff */ 86, /* hBackPorch */ 35, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 85, /* refreshRate */ 0x2, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 47.193F, /* clkFreq16bpp */ 94.386F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_512X384_85_NOSCANDOUBLE = { 55, /* hSyncOn */ 599, /* hSyncOff */ 3, /* vSyncOn */ 401, /* vSyncOff */ 70, /* hBackPorch */ 16, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 22.527F, /* clkFreq16bpp */ 45.054F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_512X384_120 = { 25, /* hSyncOn */ 650, /* hSyncOff */ 3, /* vSyncOn */ 409, /* vSyncOff */ 110, /* hBackPorch */ 25, /* vBackPorch */ 512, /* xDimension */ 384, /* yDimension */ 120, /* refreshRate */ 0, /* miscCtrl */ 96, /* memOffset */ 16, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 33.5F, /* clkFreq16bpp */ 67.0F /* clkFreq24bpp */ }; /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X400_70 = { 96, /* hSyncOn */ 704, /* hSyncOff */ 2, /* vSyncOn */ 447, /* vSyncOff */ 48, /* hBackPorch */ 35, /* vBackPorch */ 640, /* xDimension */ 400, /* yDimension */ 70, /* refreshRate */ 0, /* miscCtrl */ 130, /* memOffset */ 20, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 25.175F, /* clkFreq16bpp */ 50.350F /* clkFreq24bpp */ }; /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X400_75 = { 99, /* hSyncOn */ 733, /* hSyncOff */ 3, /* vSyncOn */ 429, /* vSyncOff */ 52, /* hBackPorch */ 25, /* vBackPorch */ 640, /* xDimension */ 400, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 130, /* memOffset */ 20, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 27.0F, /* clkFreq16bpp */ 54.0F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X400_85 = { 63, /* hSyncOn */ 767, /* hSyncOff */ 3, /* vSyncOn */ 442, /* vSyncOff */ 94, /* hBackPorch */ 41, /* vBackPorch */ 640, /* xDimension */ 400, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 130, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 31.5F, /* clkFreq16bpp */ 63.0F /* clkFreq24bpp */ }; /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X400_120 = { 67, /* hSyncOn */ 798, /* hSyncOff */ 3, /* vSyncOn */ 424, /* vSyncOff */ 94, /* hBackPorch */ 16, /* vBackPorch */ 640, /* xDimension */ 400, /* yDimension */ 120, /* refreshRate */ 0, /* miscCtrl */ 130, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 44.47F, /* clkFreq16bpp */ 88.94F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X480_60 = { 96, /* hSyncOn */ 704, /* hSyncOff */ 2, /* vSyncOn */ 523, /* vSyncOff */ 38, /* hBackPorch */ 25, /* vBackPorch */ 640, /* xDimension */ 480, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 150, /* memOffset */ 20, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 25.175F, /* clkFreq16bpp */ 50.350F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X480_75 = { 63, /* hSyncOn */ 775, /* hSyncOff */ 3, /* vSyncOn */ 497, /* vSyncOff */ 118, /* hBackPorch */ 16, /* vBackPorch */ 640, /* xDimension */ 480, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 150, /* memOffset */ 20, /* tilesInX */ 25, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 31.5F, /* clkFreq16bpp */ 63.0F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X480_85 = { 55, /* hSyncOn */ 776, /* hSyncOff */ 3, /* vSyncOn */ 506, /* vSyncOff */ 78, /* hBackPorch */ 25, /* vBackPorch */ 640, /* xDimension */ 480, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 150, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 36.0F, /* clkFreq16bpp */ 72.0F /* clkFreq24bpp */ }; /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_640X480_120 = { 45, /* hSyncOn */ 785, /* hSyncOff */ 3, /* vSyncOn */ 506, /* vSyncOff */ 100, /* hBackPorch */ 18, /* vBackPorch */ 640, /* xDimension */ 480, /* yDimension */ 120, /* refreshRate */ 0, /* miscCtrl */ 150, /* memOffset */ 20, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 50.82F, /* clkFreq16bpp */ 101.64F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ // 800x600 requires 832x608 amount of memory usage... sst1VideoTimingStruct SST_VREZ_800X600_60 = { 127, /* hSyncOn */ 927, /* hSyncOff */ 4, /* vSyncOn */ 624, /* vSyncOff */ 86, /* hBackPorch */ 23, /* vBackPorch */ 800, /* xDimension */ 600, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 247, /* memOffset */ 26, /* tilesInX */ 23, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 40.0F, /* clkFreq16bpp */ 80.0F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_800X600_75 = { 79, /* hSyncOn */ 975, /* hSyncOff */ 3, /* vSyncOn */ 622, /* vSyncOff */ 158, /* hBackPorch */ 21, /* vBackPorch */ 800, /* xDimension */ 600, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 247, /* memOffset */ 26, /* tilesInX */ 21, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 49.5F, /* clkFreq16bpp */ 99.0F /* clkFreq24bpp */ }; /* VESA Standard */ /* Verified 10/21/96 */ sst1VideoTimingStruct SST_VREZ_800X600_85 = { 63, /* hSyncOn */ 983, /* hSyncOff */ 3, /* vSyncOn */ 628, /* vSyncOff */ 150, /* hBackPorch */ 27, /* vBackPorch */ 800, /* xDimension */ 600, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 247, /* memOffset */ 26, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 56.25F, /* clkFreq16bpp */ 112.5F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_800X600_120 = { 87, /* hSyncOn */ 999, /* hSyncOff */ 3, /* vSyncOn */ 640, /* vSyncOff */ 142, /* hBackPorch */ 39, /* vBackPorch */ 800, /* xDimension */ 600, /* yDimension */ 120, /* refreshRate */ 0, /* miscCtrl */ 247, /* memOffset */ 26, /* tilesInX */ 17, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 83.950F, /* clkFreq16bpp */ 83.950F /* clkFreq24bpp -- unsupported */ }; // 856x480 requires 896x480 amount of memory usage... sst1VideoTimingStruct SST_VREZ_856X480_60 = { 136, /* hSyncOn */ 1008, /* hSyncOff */ 2, /* vSyncOn */ 523, /* vSyncOff */ 100, /* hBackPorch */ 23, /* vBackPorch */ 856, /* xDimension */ 480, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 210, /* memOffset */ 28, /* tilesInX */ 16, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 36.0F, /* clkFreq16bpp */ 72.0F /* clkFreq24bpp */ }; // 960x720 requires 960x736 amount of memory usage... sst1VideoTimingStruct SST_VREZ_960X720_60 = { 103, /* hSyncOn */ 1151, /* hSyncOff */ 3, /* vSyncOn */ 743, /* vSyncOff */ 142, /* hBackPorch */ 22, /* vBackPorch */ 960, /* xDimension */ 720, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 345, /* memOffset */ 30, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXTRUE, /* video24BPPIsOK */ 56.219F, /* clkFreq16bpp */ 112.437F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_960X720_75 = { 103, /* hSyncOn */ 1183, /* hSyncOff */ 3, /* vSyncOn */ 749, /* vSyncOff */ 158, /* hBackPorch */ 28, /* vBackPorch */ 960, /* xDimension */ 720, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 345, /* memOffset */ 30, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 72.643F, /* clkFreq16bpp */ 72.643F /* clkFreq24bpp -- unsupported */ }; sst1VideoTimingStruct SST_VREZ_960X720_85 = { 103, /* hSyncOn */ 1199, /* hSyncOff */ 3, /* vSyncOn */ 753, /* vSyncOff */ 166, /* hBackPorch */ 32, /* vBackPorch */ 960, /* xDimension */ 720, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 345, /* memOffset */ 30, /* tilesInX */ 19, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 83.795F, /* clkFreq16bpp */ 83.795F /* clkFreq24bpp -- unsupported */ }; sst1VideoTimingStruct SST_VREZ_1024X768_60 = { 136, /* hSyncOn */ 1208, /* hSyncOff */ 6, /* vSyncOn */ 800, /* vSyncOff */ 160, /* hBackPorch */ 29, /* vBackPorch */ 1024, /* xDimension */ 768, /* yDimension */ 60, /* refreshRate */ 0, /* miscCtrl */ 384, /* memOffset */ 32, /* tilesInX */ 16, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 65.0F, /* clkFreq16bpp */ 130.0F /* clkFreq24bpp */ }; sst1VideoTimingStruct SST_VREZ_1024X768_75 = { 96, /* hSyncOn */ 1216, /* hSyncOff */ 3, /* vSyncOn */ 797, /* vSyncOff */ 176, /* hBackPorch */ 28, /* vBackPorch */ 1024, /* xDimension */ 768, /* yDimension */ 75, /* refreshRate */ 0, /* miscCtrl */ 384, /* memOffset */ 32, /* tilesInX */ 16, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 78.75F, /* clkFreq16bpp */ 78.75F /* clkFreq24bpp -- unsupported */ }; sst1VideoTimingStruct SST_VREZ_1024X768_85 = { 96, /* hSyncOn */ 1280, /* hSyncOff */ 3, /* vSyncOn */ 805, /* vSyncOff */ 208, /* hBackPorch */ 36, /* vBackPorch */ 1024, /* xDimension */ 768, /* yDimension */ 85, /* refreshRate */ 0, /* miscCtrl */ 384, /* memOffset */ 32, /* tilesInX */ 16, /* vFifoThreshold */ FXTRUE, /* video16BPPIsOK */ FXFALSE, /* video24BPPIsOK */ 94.5F, /* clkFreq16bpp */ 94.5F /* clkFreq24bpp -- unsupported */ }; #else /* SST1INIT_VIDEO_ALLOCATE */ #ifdef __cplusplus extern "C" { #endif extern sst1VideoTimingStruct SST_VREZ_640X480_60; extern sst1VideoTimingStruct SST_VREZ_800X600_60; #ifdef __cplusplus } #endif #endif /* SST1INIT_VIDEO_ALLOCATE */ #endif /* !__SST1INIT_H__ */