glide2x, sst1/cvg init: merge scanf updates from glide3x
This commit is contained in:
@@ -104,20 +104,26 @@ static const char *setRange(const char *buf, int val)
|
||||
{
|
||||
int r0,r1,pos=0;
|
||||
|
||||
sscanf(buf,"%i%n",&r0,&pos); // parse the first integer
|
||||
if (buf[pos]=='-' || buf[pos]==':') { // if there's a second
|
||||
buf += pos+1;
|
||||
sscanf(buf,"%i%n",&r1,&pos); // then parse it
|
||||
if (sscanf(buf,"%i%n",&r0,&pos) >= 1) // parse the first integer
|
||||
{
|
||||
if (buf[pos]=='-' || buf[pos]==':') { // if there's a second
|
||||
buf += pos+1;
|
||||
if (sscanf(buf,"%i%n",&r1,&pos) < 1) // then parse it
|
||||
{
|
||||
r1 = r0;
|
||||
pos = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
r1 = r0;
|
||||
|
||||
if (r0 < 0) r0 = 0; // sanity checks
|
||||
if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1;
|
||||
if (r1 < r0) r1 = r0;
|
||||
|
||||
while (r0 <= r1) // now set the debuglevel levels
|
||||
gdbg_debuglevel[r0++] = val;
|
||||
}
|
||||
else
|
||||
r1 = r0;
|
||||
|
||||
if (r0 < 0) r0 = 0; // sanity checks
|
||||
if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1;
|
||||
if (r1 < r0) r1 = r0;
|
||||
|
||||
while (r0 <= r1) // now set the debuglevel levels
|
||||
gdbg_debuglevel[r0++] = val;
|
||||
|
||||
return buf + pos; // and return rest of string
|
||||
}
|
||||
|
||||
@@ -234,7 +234,11 @@ getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
ISET(SST_TREX(sst,2)->trexInit1, info->tmuInit1[2]);
|
||||
|
||||
if(GETENV(("SSTV2_TMUCFG")))
|
||||
SSCANF(GETENV(("SSTV2_TMUCFG")), "%ld", &info->tmuConfig);
|
||||
{
|
||||
FxU32 u;
|
||||
if (SSCANF(GETENV(("SSTV2_TMUCFG")), "%u", &u) == 1)
|
||||
info->tmuConfig = u;
|
||||
}
|
||||
|
||||
return(FXTRUE);
|
||||
}
|
||||
@@ -504,13 +508,15 @@ fbiMemSizeDone:
|
||||
FX_EXPORT FxBool FX_CSTYLE
|
||||
sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
{
|
||||
FxU32 u;
|
||||
SstRegs *sst = (SstRegs *) sstbase;
|
||||
|
||||
info->fbiMemSize = fbiMemSize(sstbase);
|
||||
|
||||
/* Detect board identification and memory speed */
|
||||
if(GETENV(("SSTV2_FBICFG")))
|
||||
SSCANF(GETENV(("SSTV2_FBICFG")), "%ld", &info->fbiConfig);
|
||||
if(GETENV(("SSTV2_FBICFG")) &&
|
||||
(SSCANF(GETENV(("SSTV2_FBICFG")), "%u", &u) == 1))
|
||||
info->fbiConfig = u;
|
||||
else
|
||||
info->fbiConfig = (IGET(sst->fbiInit3) & SST_FBI_MEM_TYPE) >>
|
||||
SST_FBI_MEM_TYPE_SHIFT;
|
||||
@@ -551,6 +557,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase, sst1DeviceInfoS
|
||||
*/
|
||||
FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
{
|
||||
FxU32 u;
|
||||
|
||||
if(!sstbase)
|
||||
return(FXFALSE);
|
||||
|
||||
@@ -561,13 +569,15 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
/* fill device info struct with sane values... */
|
||||
INIT_PRINTF(("sst1DeviceInfo: Filling info Struct with default values...\n"));
|
||||
|
||||
if(GETENV(("SSTV2_FBICFG")))
|
||||
SSCANF(GETENV(("SSTV2_FBICFG")), "%ld", &info->fbiConfig);
|
||||
if(GETENV(("SSTV2_FBICFG")) &&
|
||||
(SSCANF(GETENV(("SSTV2_FBICFG")), "%u", &u) == 1))
|
||||
info->fbiConfig = u;
|
||||
else
|
||||
info->fbiConfig = 0x0;
|
||||
|
||||
if(GETENV(("SSTV2_TMUCFG")))
|
||||
SSCANF(GETENV(("SSTV2_TMUCFG")), "%ld", &info->tmuConfig);
|
||||
if(GETENV(("SSTV2_TMUCFG")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TMUCFG")), "%u", &u) == 1))
|
||||
info->tmuConfig = u;
|
||||
else
|
||||
info->tmuConfig = 0x0;
|
||||
|
||||
|
||||
@@ -46,16 +46,22 @@
|
||||
|
||||
static int sst1InitFgets(char *, FILE *);
|
||||
static int sst1InitFgetc(FILE *);
|
||||
static int sst1InitParseFieldDac(char *);
|
||||
static int sst1InitParseFieldCfg(char *);
|
||||
static void sst1InitToLower(char *string);
|
||||
#if TEST || (!defined(INIT_LINUX) && !defined(DIRECTX))
|
||||
static int sst1InitParseFieldDac(char *);
|
||||
static int sst1InitParseDacRdWrString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseDacRdWr(char *, sst1InitDacRdWrStruct *);
|
||||
static int sst1InitParseSetVideoString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetMemClkString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetVideoModeString(char *, sst1InitDacStruct *);
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *);
|
||||
static void sst1InitToLower(char *string);
|
||||
#endif
|
||||
#if !defined(INIT_LINUX) && !defined(DIRECTX) && __DOS32__
|
||||
static void sst1InitFixFilename(char *dst, char *src);
|
||||
#endif
|
||||
#if TEST
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *);
|
||||
#endif
|
||||
|
||||
static FxBool checkedFileP = FXFALSE;
|
||||
|
||||
@@ -277,7 +283,6 @@ __errExit:
|
||||
*/
|
||||
FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() {
|
||||
static FxBool retVal = FXFALSE;
|
||||
int inCfg, inDac;
|
||||
FILE *file = 0;
|
||||
char buffer[1024], filename[256];
|
||||
char *tmpPtr;
|
||||
@@ -425,6 +430,7 @@ static void foo(int argc, char **argv)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(INIT_LINUX) && !defined(DIRECTX) && __DOS32__
|
||||
static void sst1InitFixFilename(char *dst, char *src)
|
||||
{
|
||||
while(*src) {
|
||||
@@ -435,7 +441,7 @@ static void sst1InitFixFilename(char *dst, char *src)
|
||||
}
|
||||
*dst = 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static int sst1InitFgets(char *string, FILE *stream)
|
||||
{
|
||||
@@ -549,6 +555,7 @@ static int sst1InitParseFieldCfg(char *string)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#if TEST || (!defined(INIT_LINUX) && !defined(DIRECTX))
|
||||
static int sst1InitParseFieldDac(char *string)
|
||||
{
|
||||
char *dacFieldReference, *dacFieldValue;
|
||||
@@ -659,6 +666,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
{
|
||||
char *addr, *data, *mask, *addrDataCmd;
|
||||
char stringCpy[2048];
|
||||
int i1, i2, i3;
|
||||
|
||||
strcpy(stringCpy, string);
|
||||
|
||||
@@ -686,8 +694,12 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = '\0';
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_WR;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i2) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->data = i2;
|
||||
} else if(!strcmp(stringCpy, "dacwrpop")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
@@ -699,9 +711,15 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_WRMOD_POP;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(mask, "%i", &dacRdWrPtr->mask);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(mask, "%i", &i2) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i3) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->mask = i2;
|
||||
dacRdWrPtr->data = i3;
|
||||
} else if(!strcmp(stringCpy, "dacrdwr")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
@@ -713,15 +731,23 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDMODWR;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(mask, "%i", &dacRdWrPtr->mask);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(mask, "%i", &i2) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i3) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->mask = i2;
|
||||
dacRdWrPtr->data = i3;
|
||||
} else if(!strcmp(stringCpy, "dacrd")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
if(addr[strlen(addr)-1] == ')') {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDNOCHECK;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
} else {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDCHECK;
|
||||
if((data = strtok(NULL, ",")) == NULL)
|
||||
@@ -729,15 +755,21 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
if(data[strlen(data)-1] != ')')
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i2) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->data = i2;
|
||||
}
|
||||
} else if(!strcmp(stringCpy, "dacrdpush")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
if(addr[strlen(addr)-1] == ')') {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDPUSH;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
} else
|
||||
return(0);
|
||||
} else {
|
||||
@@ -807,19 +839,23 @@ static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase)
|
||||
}
|
||||
dacSetVideoPtr->nextSetVideo = NULL;
|
||||
/* Width */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width) != 1)
|
||||
return(0);
|
||||
/* Height */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height) != 1)
|
||||
return(0);
|
||||
/* Refresh */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh) != 1)
|
||||
return(0);
|
||||
/* video16BPP */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP) != 1)
|
||||
return(0);
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
@@ -881,7 +917,8 @@ static int sst1InitParseSetMemClkString(char *string,
|
||||
}
|
||||
dacSetMemClkPtr->nextSetMemClk = NULL;
|
||||
/* Frequency */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency) != 1)
|
||||
return(0);
|
||||
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
@@ -944,7 +981,8 @@ static int sst1InitParseSetVideoModeString(char *string,
|
||||
}
|
||||
dacSetVideoModePtr->nextSetVideoMode = NULL;
|
||||
/* video16BPP */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP) != 1)
|
||||
return(0);
|
||||
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
@@ -972,6 +1010,7 @@ static int sst1InitParseSetVideoModeString(char *string,
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
#endif /* !defined(INIT_LINUX) && !defined(DIRECTX) */
|
||||
|
||||
static void sst1InitToLower(char *string)
|
||||
{
|
||||
|
||||
@@ -64,6 +64,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
FxU32 videoWindowActive = 0x1;
|
||||
FxU32 videoWindowActiveDrag = 0xf;
|
||||
sst1DeviceInfoStruct *sst1M, *sst1S;
|
||||
int i;
|
||||
|
||||
if(sst1InitCheckBoard(sstbase1) == FXFALSE)
|
||||
return(FXFALSE);
|
||||
@@ -237,12 +238,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
slaveVOutClkDel = 0;
|
||||
slavePVOutClkDel = 0;
|
||||
|
||||
if(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")), "%ld", &slaveVOutClkDel);
|
||||
if(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")), "%ld", &slavePVOutClkDel);
|
||||
if(GETENV(("SSTV2_SLIS_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIS_VIN_CLKDEL")), "%ld", &slaveVInClkDel);
|
||||
if(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIS_VOUT_CLKDEL")), "%i", &i) == 1))
|
||||
slaveVOutClkDel = i;
|
||||
if(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIS_PVOUT_CLKDEL")), "%i", &i) == 1))
|
||||
slavePVOutClkDel = i;
|
||||
if(GETENV(("SSTV2_SLIS_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIS_VIN_CLKDEL")), "%i", &i) == 1))
|
||||
slaveVInClkDel = i;
|
||||
INIT_PRINTF(("sst1InitSli(): slaveVinClkdel=0x%x, slaveVOutClkDel=0x%x, slavePVOutClkDel=0x%x\n",
|
||||
slaveVInClkDel, slaveVOutClkDel, slavePVOutClkDel));
|
||||
if(sst1CurrentBoard->fbiVideo16BPP)
|
||||
@@ -386,12 +390,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
masterVInClkDel = 3;
|
||||
masterVOutClkDel = 2;
|
||||
masterPVOutClkDel = 0;
|
||||
if(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")), "%ld", &masterVOutClkDel);
|
||||
if(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")), "%ld", &masterPVOutClkDel);
|
||||
if(GETENV(("SSTV2_SLIM_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_SLIM_VIN_CLKDEL")), "%ld", &masterVInClkDel);
|
||||
if(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIM_VOUT_CLKDEL")), "%i", &i) == 1))
|
||||
masterVOutClkDel = i;
|
||||
if(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIM_PVOUT_CLKDEL")), "%i", &i) == 1))
|
||||
masterPVOutClkDel = i;
|
||||
if(GETENV(("SSTV2_SLIM_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SLIM_VIN_CLKDEL")), "%i", &i) == 1))
|
||||
masterVInClkDel = i;
|
||||
INIT_PRINTF(("sst1InitSli(): masterVinClkdel=0x%x, masterVOutClkDel=0x%x, masterPVOutClkDel=0x%x\n",
|
||||
masterVInClkDel, masterVOutClkDel, masterPVOutClkDel));
|
||||
if(sst1CurrentBoard->fbiVideo16BPP)
|
||||
|
||||
@@ -198,9 +198,11 @@ FX_EXPORT FxU32 * FX_CSTYLE sst1InitMapBoardDirect(FxU32 BoardNumber,
|
||||
FxU32 *sstbase;
|
||||
FxU32 j, n;
|
||||
FxU32 sstv2_noremap = 0;
|
||||
int i;
|
||||
|
||||
if( GETENV( ("SSTV2_DEVICEID") ) )
|
||||
SSCANF(GETENV(("SSTV2_DEVICEID")), "%ld", &deviceID);
|
||||
if( GETENV( ("SSTV2_DEVICEID") ) &&
|
||||
(SSCANF(GETENV(("SSTV2_DEVICEID")), "%i", &i) == 1) )
|
||||
deviceID = i;
|
||||
else
|
||||
deviceID = 0x0002;
|
||||
|
||||
@@ -226,11 +228,11 @@ FX_EXPORT FxU32 * FX_CSTYLE sst1InitMapBoardDirect(FxU32 BoardNumber,
|
||||
// Find "voodoo2.ini" file if it exists...
|
||||
sst1InitUseVoodooFile = sst1InitVoodooFile();
|
||||
|
||||
if( GETENV( ("SSTV2_NOREMAP") ) ) {
|
||||
SSCANF(GETENV(("SSTV2_NOREMAP")), "%ld", &sstv2_noremap);
|
||||
} else {
|
||||
if( GETENV( ("SSTV2_NOREMAP") ) &&
|
||||
(SSCANF(GETENV(("SSTV2_NOREMAP")), "%i", &i) == 1) )
|
||||
sstv2_noremap = i;
|
||||
else
|
||||
sstv2_noremap = 0;
|
||||
}
|
||||
#if !macintosh && !__linux__
|
||||
if (!sstv2_noremap) {
|
||||
fxremap(); /* remap single board SLI */
|
||||
@@ -421,6 +423,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
FxU32 ft_clkdel, tf0_clkdel, tf1_clkdel, tf2_clkdel;
|
||||
sst1ClkTimingStruct sstGrxClk;
|
||||
SstRegs *sst = (SstRegs *) sstbase;
|
||||
int i;
|
||||
|
||||
if(!sst)
|
||||
return(FXFALSE);
|
||||
@@ -455,17 +458,19 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
sst1InitReturnStatus(sstbase);
|
||||
|
||||
// Adjust Trex-to-Fbi FIFO
|
||||
if(GETENV(("SSTV2_TF_FIFO_THRESH")))
|
||||
SSCANF(GETENV(("SSTV2_TF_FIFO_THRESH")), "%ld", &tf_fifo_thresh);
|
||||
if(GETENV(("SSTV2_TF_FIFO_THRESH")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TF_FIFO_THRESH")), "%i", &i) == 1) )
|
||||
tf_fifo_thresh = i;
|
||||
else
|
||||
tf_fifo_thresh = 0x8;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x%x...\n",
|
||||
tf_fifo_thresh));
|
||||
|
||||
// Set ft_clkdel for 16 MHz bringup
|
||||
ft_clkdel = 0x8; // Okay for 16 MHz startup...
|
||||
if(GETENV(("SSTV2_PFT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_PFT_CLKDEL")), "%ld", &ft_clkdel);
|
||||
if(GETENV(("SSTV2_PFT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_PFT_CLKDEL")), "%i", &i) == 1) )
|
||||
ft_clkdel = i;
|
||||
else
|
||||
ft_clkdel = 0x8; // Okay for 16 MHz startup...
|
||||
INIT_PRINTF(("sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x%x...\n", ft_clkdel));
|
||||
|
||||
// SST_FBIINIT3_DEFAULT is set to disable texture mapping, so if
|
||||
@@ -528,24 +533,24 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
}
|
||||
|
||||
// set TREX0 init values
|
||||
if(GETENV(("SSTV2_TREX0INIT0"))) {
|
||||
if(GETENV(("SSTV2_TREX0INIT0")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX0INIT0")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX0INIT0")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit0[0]);
|
||||
sst1CurrentBoard->tmuInit0[0] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[0] = SST_TREX0INIT0_DEFAULT;
|
||||
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX0INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[0]));
|
||||
if(GETENV(("SSTV2_TREX0INIT1"))) {
|
||||
|
||||
if(GETENV(("SSTV2_TREX0INIT1")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX0INIT1")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX0INIT1")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit1[0]);
|
||||
sst1CurrentBoard->tmuInit1[0] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[0] = SST_TREX0INIT1_DEFAULT;
|
||||
if(GETENV(("SSTV2_PTF0_CLKDEL"))) {
|
||||
SSCANF(GETENV(("SSTV2_PTF0_CLKDEL")), "%ld", &tf0_clkdel);
|
||||
|
||||
if(GETENV(("SSTV2_PTF0_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_PTF0_CLKDEL")), "%i", &tf0_clkdel) == 1)) {
|
||||
sst1CurrentBoard->tmuInit1[0] = (sst1CurrentBoard->tmuInit1[0] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf0_clkdel<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
@@ -554,22 +559,22 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
sst1CurrentBoard->tmuInit1[0]));
|
||||
|
||||
// set TREX1 init values
|
||||
if(GETENV(("SSTV2_TREX1INIT0"))) {
|
||||
if(GETENV(("SSTV2_TREX1INIT0")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX1INIT0")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX1INIT0")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit0[1]);
|
||||
sst1CurrentBoard->tmuInit0[1] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[1] = SST_TREX1INIT0_DEFAULT;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX1INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[1]));
|
||||
if(GETENV(("SSTV2_TREX1INIT1"))) {
|
||||
if(GETENV(("SSTV2_TREX1INIT1")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX1INIT1")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX1INIT1")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit1[1]);
|
||||
sst1CurrentBoard->tmuInit1[1] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[1] = SST_TREX1INIT1_DEFAULT;
|
||||
if(GETENV(("SSTV2_PTF1_CLKDEL"))) {
|
||||
SSCANF(GETENV(("SSTV2_PTF1_CLKDEL")), "%ld", &tf1_clkdel);
|
||||
if(GETENV(("SSTV2_PTF1_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_PTF1_CLKDEL")), "%i", &tf1_clkdel) == 1) ) {
|
||||
sst1CurrentBoard->tmuInit1[1] = (sst1CurrentBoard->tmuInit1[1] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf1_clkdel<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
@@ -579,22 +584,22 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
|
||||
|
||||
// set TREX2 init values
|
||||
if(GETENV(("SSTV2_TREX2INIT0"))) {
|
||||
if(GETENV(("SSTV2_TREX2INIT0")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX2INIT0")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX2INIT0")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit0[2]);
|
||||
sst1CurrentBoard->tmuInit0[2] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[2] = SST_TREX2INIT0_DEFAULT;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX2INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[2]));
|
||||
if(GETENV(("SSTV2_TREX2INIT1"))) {
|
||||
if(GETENV(("SSTV2_TREX2INIT1")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TREX2INIT1")), "%i", &i) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SSTV2_TREX2INIT1")), "%ld",
|
||||
&sst1CurrentBoard->tmuInit1[2]);
|
||||
sst1CurrentBoard->tmuInit1[2] = i;
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[2] = SST_TREX2INIT1_DEFAULT;
|
||||
if(GETENV(("SSTV2_PTF2_CLKDEL"))) {
|
||||
SSCANF(GETENV(("SSTV2_PTF2_CLKDEL")), "%ld", &tf2_clkdel);
|
||||
if(GETENV(("SSTV2_PTF2_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_PTF2_CLKDEL")), "%i", &tf2_clkdel) == 1) ) {
|
||||
sst1CurrentBoard->tmuInit1[2] = (sst1CurrentBoard->tmuInit1[2] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf2_clkdel<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
|
||||
@@ -972,12 +972,14 @@ FX_EXPORT FxU32 FX_CSTYLE sst1InitMeasureSiProcess(FxU32 *sstbase, FxU32 which)
|
||||
FxU32 n, siProcess, nandOsc, norOsc;
|
||||
FxU32 pciCntrLoad = 0xfff;
|
||||
FxU32 cntr;
|
||||
int i;
|
||||
|
||||
if(sst1InitCheckBoard(sstbase) == FXFALSE)
|
||||
return(FXFALSE);
|
||||
|
||||
if(GETENV(("SSTV2_SIPROCESS_CNTR"))) {
|
||||
SSCANF(GETENV(("SSTV2_SIPROCESS_CNTR")), "%ld", &pciCntrLoad);
|
||||
if(GETENV(("SSTV2_SIPROCESS_CNTR")) &&
|
||||
(SSCANF(GETENV(("SSTV2_SIPROCESS_CNTR")), "%i", &i) == 1) ) {
|
||||
pciCntrLoad = i;
|
||||
INIT_PRINTF(("sst1InitMeasureSiProcess(): Using PCI Counter preload value of 0x%x...\n", pciCntrLoad));
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
FxU32 ft_clkdel, memSizeInPages;
|
||||
FxU32 nCol, nAux, miscCtrl;
|
||||
int memFifoEntries;
|
||||
#ifndef DIRECTX
|
||||
float vidClkFreq;
|
||||
#endif
|
||||
|
||||
if(!sst)
|
||||
return(FXFALSE);
|
||||
@@ -217,30 +220,30 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
ISET(sst->fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_RESET);
|
||||
|
||||
// Setup SST video timing registers
|
||||
if(GETENV(("SSTV2_HSYNC"))) {
|
||||
SSCANF(GETENV(("SSTV2_HSYNC")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_HSYNC")) &&
|
||||
(SSCANF(GETENV(("SSTV2_HSYNC")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_HSYNC=0x%x\n", vtmp));
|
||||
ISET(sst->hSync, vtmp);
|
||||
} else
|
||||
ISET(sst->hSync, ((sstVideoRez->hSyncOff << SST_VIDEO_HSYNC_OFF_SHIFT) |
|
||||
(sstVideoRez->hSyncOn << SST_VIDEO_HSYNC_ON_SHIFT)));
|
||||
if(GETENV(("SSTV2_VSYNC"))) {
|
||||
SSCANF(GETENV(("SSTV2_VSYNC")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_VSYNC")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VSYNC")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_VSYNC=0x%x\n", vtmp));
|
||||
ISET(sst->vSync, vtmp);
|
||||
} else
|
||||
ISET(sst->vSync, ((sstVideoRez->vSyncOff << SST_VIDEO_VSYNC_OFF_SHIFT) |
|
||||
(sstVideoRez->vSyncOn << SST_VIDEO_VSYNC_ON_SHIFT)));
|
||||
if(GETENV(("SSTV2_BACKPORCH"))) {
|
||||
SSCANF(GETENV(("SSTV2_BACKPORCH")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_BACKPORCH")) &&
|
||||
(SSCANF(GETENV(("SSTV2_BACKPORCH")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_BACKPORCH=0x%x\n", vtmp));
|
||||
ISET(sst->backPorch, vtmp);
|
||||
} else
|
||||
ISET(sst->backPorch,
|
||||
((sstVideoRez->vBackPorch << SST_VIDEO_VBACKPORCH_SHIFT) |
|
||||
(sstVideoRez->hBackPorch << SST_VIDEO_HBACKPORCH_SHIFT)));
|
||||
if(GETENV(("SSTV2_DIMENSIONS"))) {
|
||||
SSCANF(GETENV(("SSTV2_DIMENSIONS")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_DIMENSIONS")) &&
|
||||
(SSCANF(GETENV(("SSTV2_DIMENSIONS")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_DIMENSIONS=0x%x\n", vtmp));
|
||||
sstVideoRez->yDimension = (vtmp >> SST_VIDEO_YDIM_SHIFT) & 0x3ff;
|
||||
sstVideoRez->xDimension = vtmp & 0x3ff;
|
||||
@@ -248,13 +251,13 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
ISET(sst->videoDimensions,
|
||||
((sstVideoRez->yDimension << SST_VIDEO_YDIM_SHIFT) |
|
||||
((sstVideoRez->xDimension-1) << SST_VIDEO_XDIM_SHIFT)));
|
||||
if(GETENV(("SSTV2_MEMOFFSET"))) {
|
||||
SSCANF(GETENV(("SSTV2_MEMOFFSET")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_MEMOFFSET")) &&
|
||||
(SSCANF(GETENV(("SSTV2_MEMOFFSET")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using video memOffset=0x%x\n", vtmp));
|
||||
sstVideoRez->memOffset = vtmp;
|
||||
}
|
||||
if(GETENV(("SSTV2_TILESINX"))) {
|
||||
SSCANF(GETENV(("SSTV2_TILESINX")), "%ld", &vtmp);
|
||||
if(GETENV(("SSTV2_TILESINX")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TILESINX")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using video tilesInX=0x%x\n", vtmp));
|
||||
sstVideoRez->tilesInX = vtmp;
|
||||
}
|
||||
@@ -315,14 +318,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
|
||||
memFifoLwm = 23;
|
||||
if(GETENV(("SSTV2_MEMFIFO_LWM")))
|
||||
SSCANF(GETENV(("SSTV2_MEMFIFO_LWM")), "%ld", &memFifoLwm);
|
||||
if(GETENV(("SSTV2_MEMFIFO_LWM")) &&
|
||||
(SSCANF(GETENV(("SSTV2_MEMFIFO_LWM")), "%i", &vtmp) == 1))
|
||||
memFifoLwm = vtmp;
|
||||
memFifoHwm = 54;
|
||||
if(GETENV(("SSTV2_MEMFIFO_HWM")))
|
||||
SSCANF(GETENV(("SSTV2_MEMFIFO_HWM")), "%ld", &memFifoHwm);
|
||||
if(GETENV(("SSTV2_MEMFIFO_HWM")) &&
|
||||
(SSCANF(GETENV(("SSTV2_MEMFIFO_HWM")), "%i", &vtmp) == 1))
|
||||
memFifoHwm = vtmp;
|
||||
pciFifoLwm = 13;
|
||||
if(GETENV(("SSTV2_PCIFIFO_LWM")))
|
||||
SSCANF(GETENV(("SSTV2_PCIFIFO_LWM")), "%ld", &pciFifoLwm);
|
||||
if(GETENV(("SSTV2_PCIFIFO_LWM")) &&
|
||||
(SSCANF(GETENV(("SSTV2_PCIFIFO_LWM")), "%i", &vtmp) == 1))
|
||||
pciFifoLwm = vtmp;
|
||||
INIT_PRINTF(("sst1InitVideo(): pciFifoLwm:%d memFifoLwm:%d memFifoHwm:%d\n",
|
||||
pciFifoLwm, memFifoLwm, memFifoHwm));
|
||||
|
||||
@@ -379,8 +385,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
memFifoEntries));
|
||||
return(FXFALSE);
|
||||
}
|
||||
if(GETENV(("SSTV2_MEMFIFO_ENTRIES")))
|
||||
SSCANF(GETENV(("SSTV2_MEMFIFO_ENTRIES")), "%d", &memFifoEntries);
|
||||
if(GETENV(("SSTV2_MEMFIFO_ENTRIES")) &&
|
||||
(SSCANF(GETENV(("SSTV2_MEMFIFO_ENTRIES")), "%i", &vtmp) == 1))
|
||||
memFifoEntries = vtmp;
|
||||
INIT_PRINTF(("sst1InitVideo(): Enabling Memory FIFO (Entries=%d)...\n",
|
||||
65536 - (memFifoEntries << 5)));
|
||||
|
||||
@@ -397,12 +404,14 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
}
|
||||
|
||||
vInClkDel = 1;
|
||||
if(GETENV(("SSTV2_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_VIN_CLKDEL")), "%ld", &vInClkDel);
|
||||
if(GETENV(("SSTV2_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VIN_CLKDEL")), "%i", &vtmp) == 1))
|
||||
vInClkDel = vtmp;
|
||||
|
||||
vOutClkDel = 0;
|
||||
if(GETENV(("SSTV2_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_VOUT_CLKDEL")), "%ld", &vOutClkDel);
|
||||
if(GETENV(("SSTV2_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VOUT_CLKDEL")), "%i", &vtmp) == 1))
|
||||
vOutClkDel = vtmp;
|
||||
|
||||
INIT_PRINTF(("sst1InitVideo(): vInClkDel=0x%x vOutClkDel=0x%x\n",
|
||||
|
||||
@@ -466,11 +475,10 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
if(!GETENV(("SSTV2_VIDEO_FILTER_DISABLE"))) {
|
||||
ISET(sst->fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_FILTER_EN);
|
||||
if(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD"))) {
|
||||
SSCANF(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")), "%ld", &n);
|
||||
INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", n));
|
||||
|
||||
ISET(sst->videoFilterRgbThreshold, n);
|
||||
if(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VIDEO_FILTER_THRESHOLD")), "%i", &vtmp) == 1)) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", vtmp));
|
||||
ISET(sst->videoFilterRgbThreshold, vtmp);
|
||||
} else
|
||||
// ISET(sst->videoFilterRgbThreshold, 0x180c18);
|
||||
ISET(sst->videoFilterRgbThreshold, 0x080408);
|
||||
@@ -549,10 +557,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
|
||||
// Adjust Video Clock
|
||||
#ifndef DIRECTX
|
||||
if(GETENV(("SSTV2_VIDCLK2X"))) {
|
||||
float vidClkFreq;
|
||||
|
||||
SSCANF(GETENV(("SSTV2_VIDCLK2X")), "%f", &vidClkFreq);
|
||||
if(GETENV(("SSTV2_VIDCLK2X")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VIDCLK2X")), "%f", &vidClkFreq) == 1)) {
|
||||
if(sst1InitSetVidClk(sstbase, vidClkFreq) == FXFALSE)
|
||||
return(FXFALSE);
|
||||
} else {
|
||||
@@ -600,8 +606,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideoBuffers(FxU32 *sstbase,
|
||||
FxU32 clearColor = 0x0;
|
||||
FxU32 pagesToFill;
|
||||
|
||||
if(GETENV(("SSTV2_VIDEO_CLEARCOLOR")))
|
||||
SSCANF(GETENV(("SSTV2_VIDEO_CLEARCOLOR")), "%ld", &clearColor);
|
||||
if(GETENV(("SSTV2_VIDEO_CLEARCOLOR")) &&
|
||||
(SSCANF(GETENV(("SSTV2_VIDEO_CLEARCOLOR")), "%i", &vtmp) == 1))
|
||||
clearColor = vtmp;
|
||||
|
||||
if(sst1CurrentBoard->fbiMemSize == 1)
|
||||
pagesToFill = 256;
|
||||
@@ -1257,8 +1264,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitMonitorDetect(FxU32 *sstbase)
|
||||
// return (FXTRUE);
|
||||
// }
|
||||
|
||||
if(GETENV(("SSTV2_MDETECT_CONST"))) {
|
||||
SSCANF(GETENV(("SSTV2_MDETECT_CONST")), "%ld", &gammaCorrectConstant);
|
||||
if(GETENV(("SSTV2_MDETECT_CONST")) &&
|
||||
(SSCANF(GETENV(("SSTV2_MDETECT_CONST")), "%i", &j) == 1)) {
|
||||
gammaCorrectConstant = j;
|
||||
INIT_PRINTF(("sst1InitMonitorDetect(): Using value 0x%x for constant gamma value...\n", gammaCorrectConstant));
|
||||
}
|
||||
|
||||
@@ -1327,6 +1335,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSetClkDelays(FxU32 *sstbase)
|
||||
{
|
||||
FxU32 tf0_clkdel, tf1_clkdel, tf2_clkdel, ft_clkdel;
|
||||
SstRegs *sst = (SstRegs *) sstbase;
|
||||
int i;
|
||||
|
||||
if(sst1CurrentBoard->fbiBoardID == 0x3) {
|
||||
// Early 4-layer 4220 board -- Runs at 83 MHz by default...
|
||||
@@ -1421,14 +1430,18 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSetClkDelays(FxU32 *sstbase)
|
||||
setDelays:
|
||||
|
||||
// Override with environment variables
|
||||
if(GETENV(("SSTV2_FT_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_FT_CLKDEL")), "%ld", &ft_clkdel);
|
||||
if(GETENV(("SSTV2_TF0_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_TF0_CLKDEL")), "%ld", &tf0_clkdel);
|
||||
if(GETENV(("SSTV2_TF1_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_TF1_CLKDEL")), "%ld", &tf1_clkdel);
|
||||
if(GETENV(("SSTV2_TF2_CLKDEL")))
|
||||
SSCANF(GETENV(("SSTV2_TF2_CLKDEL")), "%ld", &tf2_clkdel);
|
||||
if(GETENV(("SSTV2_FT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_FT_CLKDEL")), "%i", &i) == 1))
|
||||
ft_clkdel = i;
|
||||
if(GETENV(("SSTV2_TF0_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TF0_CLKDEL")), "%i", &i) == 1))
|
||||
tf0_clkdel = i;
|
||||
if(GETENV(("SSTV2_TF1_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TF1_CLKDEL")), "%i", &i) == 1))
|
||||
tf1_clkdel = i;
|
||||
if(GETENV(("SSTV2_TF2_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SSTV2_TF2_CLKDEL")), "%i", &i) == 1))
|
||||
tf2_clkdel = i;
|
||||
|
||||
INIT_PRINTF(("sst1InitSetClkDelays(): Setting FBI-to-TREX clock delay to 0x%x...\n", ft_clkdel));
|
||||
INIT_PRINTF(("sst1InitSetClkDelays(): Setting TREX#0 TREX-to-FBI clock delay to 0x%x\n",
|
||||
|
||||
@@ -168,8 +168,10 @@ static FxU32 numStalls;
|
||||
|
||||
Init96HALData *curHALData;
|
||||
|
||||
#ifdef __DOS32__
|
||||
static FxU16
|
||||
oldVidMode;
|
||||
#endif
|
||||
|
||||
static FxU32
|
||||
devNum,
|
||||
@@ -483,9 +485,11 @@ get96(FxU32 *addr)
|
||||
#define GETREGVALFROMENV(val, envStr, constant)\
|
||||
{\
|
||||
const char *envVal;\
|
||||
unsigned int u; \
|
||||
val = constant;\
|
||||
if ((envVal = myGetenv(envStr)) != NULL) {\
|
||||
sscanf(envVal, "%x", &val);\
|
||||
if (((envVal = myGetenv(envStr)) != NULL) && \
|
||||
(sscanf(envVal, "%x", &u) == 1)) { \
|
||||
val = u; \
|
||||
GDBG_INFO((80,\
|
||||
"%s: The environment variable %s == 0x%x overloaded a register value\n", \
|
||||
FN_NAME, envStr, val));\
|
||||
@@ -932,15 +936,13 @@ init96SetupRendering(InitRegisterDesc *regDesc, GrScreenResolution_t sRes)
|
||||
{
|
||||
FxU32 trexinit0, trexinit1;
|
||||
|
||||
if(myGetenv(("SST_TREX0INIT0"))) {
|
||||
sscanf(myGetenv(("SST_TREX0INIT0")), "%i", &trexinit0);
|
||||
} else {
|
||||
if( !myGetenv(("SST_TREX0INIT0")) ||
|
||||
(sscanf(myGetenv(("SST_TREX0INIT0")), "%i", &trexinit0) != 1) ) {
|
||||
trexinit0 = 0x05441; /* TREXINIT0 */
|
||||
}
|
||||
|
||||
if(myGetenv(("SST_TREX0INIT1"))) {
|
||||
sscanf(myGetenv(("SST_TREX0INIT1")), "%i", &trexinit1);
|
||||
} else {
|
||||
if( !myGetenv(("SST_TREX0INIT1")) ||
|
||||
(sscanf(myGetenv(("SST_TREX0INIT1")), "%i", &trexinit1) != 1) ) {
|
||||
trexinit1 = 0x3643c; /* TREXINIT1 */
|
||||
}
|
||||
|
||||
@@ -1452,10 +1454,6 @@ INITVG96ENTRY(init96Swap, void ,
|
||||
#define FN_NAME "init96Swap"
|
||||
FxU32 status;
|
||||
|
||||
static FxBool gotEnv;
|
||||
static FxBool overrideSwap;
|
||||
static FxU32 overrideVal;
|
||||
|
||||
GDBG_INFO((80, "init96Swap()\n"));
|
||||
|
||||
/*
|
||||
@@ -1492,6 +1490,11 @@ INITVG96ENTRY(init96Swap, void ,
|
||||
|
||||
sstPtr->swappendCMD = 0x1;
|
||||
|
||||
{
|
||||
static FxBool gotEnv = FXFALSE;
|
||||
static FxBool overrideSwap;
|
||||
static FxU32 overrideVal;
|
||||
|
||||
if (gotEnv == FXFALSE) {
|
||||
const char *envVal;
|
||||
if ((envVal = myGetenv("SST96_INITSWAPCOUNT")) != NULL) {
|
||||
@@ -1506,6 +1509,7 @@ INITVG96ENTRY(init96Swap, void ,
|
||||
|
||||
if (overrideSwap == FXTRUE)
|
||||
code = overrideVal;
|
||||
}
|
||||
|
||||
GDBG_INFO((80, "%s: Sending swapbufferCMD (0x%x) via FIFO callback\n",
|
||||
FN_NAME, code));
|
||||
@@ -2113,12 +2117,14 @@ init96LoadBufRegs(int nBuffers, InitBufDesc_t *pBufDesc, int xRes,
|
||||
if (myGetenv("SST96_FORCEALIGN")) {
|
||||
FxU32 F, B, T, A;
|
||||
|
||||
sscanf(myGetenv("SST96_FORCEALIGN"), "%x,%x,%x,%x", &F, &B, &T, &A);
|
||||
GDBG_INFO((80, "!!!!!GROSS HACK... forcing values!!!!!\n"));
|
||||
pFront->bufOffset = F;
|
||||
pBack->bufOffset = B;
|
||||
pTriple->bufOffset = T;
|
||||
pAux->bufOffset = A;
|
||||
if (sscanf(myGetenv("SST96_FORCEALIGN"), "%x,%x,%x,%x", &F, &B, &T, &A) == 4)
|
||||
{
|
||||
GDBG_INFO((80, "!!!!!GROSS HACK... forcing values!!!!!\n"));
|
||||
pFront->bufOffset = F;
|
||||
pBack->bufOffset = B;
|
||||
pTriple->bufOffset = T;
|
||||
pAux->bufOffset = A;
|
||||
}
|
||||
}
|
||||
|
||||
if (pFront) {
|
||||
|
||||
@@ -252,7 +252,7 @@ INITMCRXENTRY(initMCRXEnableRegs, FxBool, (InitRegisterDesc *rd))
|
||||
{
|
||||
#define FN_NAME "initMCRXEnableRegs"
|
||||
FxU32
|
||||
tmp;
|
||||
tmp, u;
|
||||
FxU8
|
||||
crtcIndex;
|
||||
FxU16
|
||||
@@ -308,10 +308,9 @@ INITMCRXENTRY(initMCRXEnableRegs, FxBool, (InitRegisterDesc *rd))
|
||||
GDBG_INFO((80, "%s: Enabling PUMA\n", FN_NAME));
|
||||
CRTC_GET(0x28, tmp);
|
||||
tmp |= 1;
|
||||
|
||||
envVal = myGetenv("MCRX_28");
|
||||
if (envVal)
|
||||
sscanf(envVal, "%x", &tmp);
|
||||
if ((envVal = myGetenv("MCRX_28")) &&
|
||||
(sscanf(envVal, "%x", &u) == 1))
|
||||
tmp = u;
|
||||
CRTC_SET(0x28, tmp);
|
||||
|
||||
GDBG_INFO((80, "%s: Restoring Protection\n", FN_NAME));
|
||||
@@ -559,9 +558,9 @@ INITMCRXENTRY(initMCRXUseTiles, int, (InitRegisterDesc *rd,
|
||||
if (nBuffers == 3) tmp |= 0x08;
|
||||
mcrxHALData.initSwapTiles = initMCRXSwapTiles;
|
||||
|
||||
envVal = myGetenv("MRCX_71");
|
||||
if (envVal)
|
||||
sscanf(envVal, "%x", &tmp);
|
||||
if ((envVal = myGetenv("MRCX_71")) &&
|
||||
(sscanf(envVal, "%x", &i) == 1))
|
||||
tmp = i;
|
||||
CRTC_SET(0x70, tmp);
|
||||
|
||||
/* Reset the current display buffer bits (0-1) */
|
||||
|
||||
@@ -53,18 +53,26 @@ static char *setRange(char *buf, int val)
|
||||
{
|
||||
int r0,r1,pos=0;
|
||||
|
||||
sscanf(buf,"%i%n",&r0,&pos); // parse the first integer
|
||||
if (buf[pos]=='-' || buf[pos]==':') // if there's a second
|
||||
sscanf(buf+pos+1,"%i%n",&r1,&pos); // then parse it
|
||||
else
|
||||
r1 = r0;
|
||||
if (sscanf(buf,"%i%n",&r0,&pos) >= 1) // parse the first integer
|
||||
{
|
||||
if (buf[pos]=='-' || buf[pos]==':') { // if there's a second
|
||||
buf += pos+1;
|
||||
if (sscanf(buf,"%i%n",&r1,&pos) < 1) // then parse it
|
||||
{
|
||||
r1 = r0;
|
||||
pos = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
r1 = r0;
|
||||
|
||||
if (r0 < 0) r0 = 0; // sanity checks
|
||||
if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1;
|
||||
if (r1 < r0) r1 = r0;
|
||||
if (r0 < 0) r0 = 0; // sanity checks
|
||||
if (r1 >= GDBG_MAX_LEVELS) r1 = GDBG_MAX_LEVELS-1;
|
||||
if (r1 < r0) r1 = r0;
|
||||
|
||||
while (r0 <= r1) // now set the debuglevel levels
|
||||
gdbg_debuglevel[r0++] = val;
|
||||
while (r0 <= r1) // now set the debuglevel levels
|
||||
gdbg_debuglevel[r0++] = val;
|
||||
}
|
||||
|
||||
return buf + pos; // and return rest of string
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
static FxBool
|
||||
readAndSum4x4(FxU32 *sstbase, FxU32 x, FxU32 y,
|
||||
FxU32 *r_sum, FxU32 *g_sum, FxU32 *b_sum)
|
||||
FxU32 *r_sum, FxU32 *g_sum, FxU32 *b_sum)
|
||||
{
|
||||
FxU32 rd_x, rd_y;
|
||||
FxU32 rd_col = 0;
|
||||
@@ -166,7 +166,7 @@ unDither(FxU32 r_sum, FxU32 g_sum, FxU32 b_sum, FxU32 *result)
|
||||
static FxBool
|
||||
getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
{
|
||||
int x=0, y=0;
|
||||
int i, x=0, y=0;
|
||||
FxU32 r_sum, g_sum, b_sum;
|
||||
volatile Sstregs *sst = (Sstregs *) sstbase;
|
||||
|
||||
@@ -187,8 +187,9 @@ getTmuConfigData(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
if(unDither(r_sum,g_sum,b_sum,&info->tmuConfig) == FXFALSE)
|
||||
return(FXFALSE);
|
||||
|
||||
if(GETENV(("SST_TMUCFG")))
|
||||
SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig);
|
||||
if(GETENV(("SST_TMUCFG")) &&
|
||||
(SSCANF(GETENV(("SST_TMUCFG")), "%i", &i) == 1))
|
||||
info->tmuConfig = i;
|
||||
|
||||
/* reset trex's init registers */
|
||||
ISET(SST_TREX(sst,0)->trexInit1, info->tmuInit1[0]);
|
||||
@@ -277,7 +278,7 @@ sst1InitGetTmuMemory(FxU32 *sstbase, sst1DeviceInfoStruct *info, FxU32 tmu,
|
||||
if (data == SENSE0) {*TmuMemorySize = 1; return(FXTRUE);}
|
||||
|
||||
INIT_PRINTF(("sst1InitGetTmuMemory() ERROR: Could not detect memory size.\n"));
|
||||
return(FXFALSE);
|
||||
return(FXFALSE);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------
|
||||
@@ -453,9 +454,8 @@ sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
info->fbiMemSize = fbiMemSize(sstbase);
|
||||
|
||||
/* Detect board identification and memory speed */
|
||||
if(GETENV(("SST_FBICFG")))
|
||||
SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig);
|
||||
else
|
||||
if(!GETENV(("SST_FBICFG")) ||
|
||||
(SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig) != 1))
|
||||
info->fbiConfig = (IGET(sst->fbiInit3) & SST_FBI_MEM_TYPE) >>
|
||||
SST_FBI_MEM_TYPE_SHIFT;
|
||||
|
||||
@@ -476,8 +476,7 @@ sst1InitGetFbiInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
** been allocated
|
||||
**
|
||||
*/
|
||||
FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase,
|
||||
sst1DeviceInfoStruct *info)
|
||||
FX_EXPORT FxBool FX_CSTYLE sst1InitGetDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
{
|
||||
FxBool retval;
|
||||
|
||||
@@ -505,14 +504,12 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
/* fill device info struct with sane values... */
|
||||
INIT_PRINTF(("sst1DeviceInfo: Filling info Struct with default values...\n"));
|
||||
|
||||
if(GETENV(("SST_FBICFG")))
|
||||
SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig);
|
||||
else
|
||||
if(!GETENV(("SST_FBICFG")) ||
|
||||
(SSCANF(GETENV(("SST_FBICFG")), "%i", &info->fbiConfig) != 1))
|
||||
info->fbiConfig = 0x0;
|
||||
|
||||
if(GETENV(("SST_TMUCFG")))
|
||||
SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig);
|
||||
else
|
||||
if(!GETENV(("SST_TMUCFG")) ||
|
||||
(SSCANF(GETENV(("SST_TMUCFG")), "%i", &info->tmuConfig) != 1))
|
||||
info->tmuConfig = 0x0;
|
||||
|
||||
info->numberTmus = 1;
|
||||
@@ -576,15 +573,15 @@ FxBool sst1InitFillDeviceInfo(FxU32 *sstbase, sst1DeviceInfoStruct *info)
|
||||
iniDac->dacManufacturer, iniDac->dacDevice));
|
||||
}
|
||||
else {
|
||||
INIT_PRINTF(("sst1DeviceInfo: Dac Type: "));
|
||||
if(info->fbiDacType == SST_FBI_DACTYPE_ATT)
|
||||
INIT_PRINTF(("AT&T ATT20C409\n"));
|
||||
else if(info->fbiDacType == SST_FBI_DACTYPE_ICS)
|
||||
INIT_PRINTF(("ICS ICS5342\n"));
|
||||
else if(info->fbiDacType == SST_FBI_DACTYPE_TI)
|
||||
INIT_PRINTF(("TI TVP3409\n"));
|
||||
else
|
||||
INIT_PRINTF(("Unknown\n"));
|
||||
INIT_PRINTF(("sst1DeviceInfo: Dac Type: "));
|
||||
if(info->fbiDacType == SST_FBI_DACTYPE_ATT)
|
||||
INIT_PRINTF(("AT&T ATT20C409\n"));
|
||||
else if(info->fbiDacType == SST_FBI_DACTYPE_ICS)
|
||||
INIT_PRINTF(("ICS ICS5342\n"));
|
||||
else if(info->fbiDacType == SST_FBI_DACTYPE_TI)
|
||||
INIT_PRINTF(("TI TVP3409\n"));
|
||||
else
|
||||
INIT_PRINTF(("Unknown\n"));
|
||||
}
|
||||
INIT_PRINTF(("sst1DeviceInfo: SliDetect:%d\n", info->sstSliDetect));
|
||||
|
||||
|
||||
@@ -41,16 +41,22 @@
|
||||
|
||||
static int sst1InitFgets(char *, FILE *);
|
||||
static int sst1InitFgetc(FILE *);
|
||||
static int sst1InitParseFieldDac(char *);
|
||||
static int sst1InitParseFieldCfg(char *);
|
||||
static void sst1InitToLower(char *string);
|
||||
#if TEST || (!defined(INIT_LINUX) && defined(__DOS32__))
|
||||
static int sst1InitParseFieldDac(char *);
|
||||
static int sst1InitParseDacRdWrString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseDacRdWr(char *, sst1InitDacRdWrStruct *);
|
||||
static int sst1InitParseSetVideoString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetMemClkString(char *, sst1InitDacStruct *);
|
||||
static int sst1InitParseSetVideoModeString(char *, sst1InitDacStruct *);
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *);
|
||||
static void sst1InitToLower(char *string);
|
||||
#endif
|
||||
#if !defined(INIT_LINUX) && defined(__DOS32__)
|
||||
static void sst1InitFixFilename(char *dst, char *src);
|
||||
#endif
|
||||
#if TEST
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *, char *);
|
||||
#endif
|
||||
|
||||
#ifndef INIT_LINUX
|
||||
/*
|
||||
@@ -161,13 +167,11 @@ FX_ENTRY FxBool FX_CALL sst1InitVoodooFile()
|
||||
*/
|
||||
FX_ENTRY FxBool FX_CALL sst1InitVoodooFile() {
|
||||
static FxBool retVal = FXFALSE;
|
||||
int inCfg, inDac;
|
||||
FILE *file = 0;
|
||||
char buffer[1024], filename[256];
|
||||
char *tmpPtr;
|
||||
char path[512];
|
||||
int i;
|
||||
int helper = (GETENV(("SST_DEBUGDAC"))) ? 1 : 0;
|
||||
|
||||
if (getenv("VOODOO_FILE")) {
|
||||
/* Override voodoo.ini name */
|
||||
@@ -227,8 +231,8 @@ __errExit:
|
||||
/* Get the definition of myGetenv for glide builds */
|
||||
#include <init.h>
|
||||
|
||||
/* void main(int argc, char **argv) */
|
||||
static void foo(int argc, char **argv)
|
||||
#if TEST
|
||||
void main(int argc, char **argv)
|
||||
{
|
||||
char buffer[2048]; /* buffer for command line inputs */
|
||||
int inCfg, inDac;
|
||||
@@ -306,7 +310,9 @@ static void foo(int argc, char **argv)
|
||||
}
|
||||
fclose(file);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(INIT_LINUX) && defined(__DOS32__)
|
||||
static void sst1InitFixFilename(char *dst, char *src)
|
||||
{
|
||||
while(*src) {
|
||||
@@ -317,6 +323,7 @@ static void sst1InitFixFilename(char *dst, char *src)
|
||||
}
|
||||
*dst = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int sst1InitFgets(char *string, FILE *stream)
|
||||
{
|
||||
@@ -427,6 +434,7 @@ static int sst1InitParseFieldCfg(char *string)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#if TEST || (!defined(INIT_LINUX) && defined(__DOS32__))
|
||||
static int sst1InitParseFieldDac(char *string)
|
||||
{
|
||||
char *dacFieldReference, *dacFieldValue;
|
||||
@@ -448,7 +456,7 @@ static int sst1InitParseFieldDac(char *string)
|
||||
else
|
||||
dacPtr = dacPtr->nextDac;
|
||||
}
|
||||
if((dacPtr->nextDac = malloc(sizeof(sst1InitDacStruct))) == NULL)
|
||||
if((dacPtr->nextDac = malloc(sizeof(sst1InitDacStruct))) == NULL)
|
||||
return(0);
|
||||
dacPtr = dacPtr->nextDac;
|
||||
}
|
||||
@@ -537,6 +545,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
{
|
||||
char *addr, *data, *mask, *addrDataCmd;
|
||||
char stringCpy[2048];
|
||||
int i1, i2, i3;
|
||||
|
||||
strcpy(stringCpy, string);
|
||||
|
||||
@@ -564,8 +573,12 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = '\0';
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_WR;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i2) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->data = i2;
|
||||
} else if(!strcmp(stringCpy, "dacwrpop")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
@@ -577,9 +590,15 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_WRMOD_POP;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(mask, "%i", &dacRdWrPtr->mask);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(mask, "%i", &i2) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i3) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->mask = i2;
|
||||
dacRdWrPtr->data = i3;
|
||||
} else if(!strcmp(stringCpy, "dacrdwr")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
@@ -591,15 +610,23 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDMODWR;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(mask, "%i", &dacRdWrPtr->mask);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(mask, "%i", &i2) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i3) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->mask = i2;
|
||||
dacRdWrPtr->data = i3;
|
||||
} else if(!strcmp(stringCpy, "dacrd")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
if(addr[strlen(addr)-1] == ')') {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDNOCHECK;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
} else {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDCHECK;
|
||||
if((data = strtok(NULL, ",")) == NULL)
|
||||
@@ -607,15 +634,21 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
if(data[strlen(data)-1] != ')')
|
||||
return(0);
|
||||
data[strlen(data)-1] = 0;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
SSCANF(data, "%i", &dacRdWrPtr->data);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
if (SSCANF(data, "%i", &i2) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
dacRdWrPtr->data = i2;
|
||||
}
|
||||
} else if(!strcmp(stringCpy, "dacrdpush")) {
|
||||
if((addr = strtok(addrDataCmd, ",")) == NULL)
|
||||
return(0);
|
||||
if(addr[strlen(addr)-1] == ')') {
|
||||
dacRdWrPtr->type = DACRDWR_TYPE_RDPUSH;
|
||||
SSCANF(addr, "%i", &dacRdWrPtr->addr);
|
||||
if (SSCANF(addr, "%i", &i1) != 1)
|
||||
return(0);
|
||||
dacRdWrPtr->addr = i1;
|
||||
} else
|
||||
return(0);
|
||||
} else {
|
||||
@@ -625,6 +658,7 @@ static int sst1InitParseDacRdWr(char *string, sst1InitDacRdWrStruct *dacRdWrPtr)
|
||||
return(1);
|
||||
}
|
||||
|
||||
#if TEST
|
||||
static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *dacRdWrBase,
|
||||
char *prefix)
|
||||
{
|
||||
@@ -649,6 +683,7 @@ static void sst1InitPrintDacRdWr(sst1InitDacRdWrStruct *dacRdWrBase,
|
||||
dacRdWrPtr = dacRdWrPtr->nextRdWr;
|
||||
}
|
||||
}
|
||||
#endif /* TEST */
|
||||
|
||||
static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase)
|
||||
{
|
||||
@@ -683,19 +718,23 @@ static int sst1InitParseSetVideoString(char *string, sst1InitDacStruct *dacBase)
|
||||
}
|
||||
dacSetVideoPtr->nextSetVideo = NULL;
|
||||
/* Width */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->width) != 1)
|
||||
return(0);
|
||||
/* Height */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->height) != 1)
|
||||
return(0);
|
||||
/* Refresh */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->refresh) != 1)
|
||||
return(0);
|
||||
/* video16BPP */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoPtr->video16BPP) != 1)
|
||||
return(0);
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
return(0);
|
||||
@@ -757,7 +796,8 @@ static int sst1InitParseSetMemClkString(char *string,
|
||||
}
|
||||
dacSetMemClkPtr->nextSetMemClk = NULL;
|
||||
/* Frequency */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetMemClkPtr->frequency) != 1)
|
||||
return(0);
|
||||
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
@@ -820,7 +860,8 @@ static int sst1InitParseSetVideoModeString(char *string,
|
||||
}
|
||||
dacSetVideoModePtr->nextSetVideoMode = NULL;
|
||||
/* video16BPP */
|
||||
SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP);
|
||||
if (SSCANF(dacRdWrCmd, "%i", &dacSetVideoModePtr->video16BPP) != 1)
|
||||
return(0);
|
||||
|
||||
/* First DacRdWr */
|
||||
if((dacRdWrCmd = strtok(NULL, ";")) == NULL)
|
||||
@@ -848,6 +889,7 @@ static int sst1InitParseSetVideoModeString(char *string,
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
#endif /* TEST || (!defined(INIT_LINUX) && defined(__DOS32__)) */
|
||||
|
||||
static void sst1InitToLower(char *string)
|
||||
{
|
||||
|
||||
@@ -52,6 +52,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
FxU32 masterPVOutClkDel, slavePVOutClkDel;
|
||||
FxU32 pciFifoLwm, memFifoLwm;
|
||||
FxU32 clkFreqMaster;
|
||||
int i;
|
||||
|
||||
/* Check to make sure master and slave are installed properly */
|
||||
/* Master should have a clock frequency setting of 54 MHz */
|
||||
@@ -140,12 +141,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
slaveVInClkDel = 2;
|
||||
slaveVOutClkDel = 0;
|
||||
slavePVOutClkDel = 3;
|
||||
if(GETENV(("SST_SLIS_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIS_VOUT_CLKDEL")), "%i", &slaveVOutClkDel);
|
||||
if(GETENV(("SST_SLIS_PVOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIS_PVOUT_CLKDEL")), "%i", &slavePVOutClkDel);
|
||||
if(GETENV(("SST_SLIS_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIS_VIN_CLKDEL")), "%i", &slaveVInClkDel);
|
||||
if(GETENV(("SST_SLIS_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIS_VOUT_CLKDEL")), "%i", &i) == 1))
|
||||
slaveVOutClkDel = i;
|
||||
if(GETENV(("SST_SLIS_PVOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIS_PVOUT_CLKDEL")), "%i", &i) == 1))
|
||||
slavePVOutClkDel = i;
|
||||
if(GETENV(("SST_SLIS_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIS_VIN_CLKDEL")), "%i", &i) == 1))
|
||||
slaveVInClkDel = i;
|
||||
INIT_PRINTF(("sst1InitSli(): slaveVinClkdel=0x%x, slaveVOutClkDel=0x%x, slavePVOutClkDel=0x%x\n",
|
||||
slaveVInClkDel, slaveVOutClkDel, slavePVOutClkDel));
|
||||
if(sst1CurrentBoard->fbiVideo16BPP)
|
||||
@@ -261,12 +265,15 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
masterVInClkDel = 2;
|
||||
masterVOutClkDel = 0;
|
||||
masterPVOutClkDel = 3;
|
||||
if(GETENV(("SST_SLIM_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIM_VOUT_CLKDEL")), "%i", &masterVOutClkDel);
|
||||
if(GETENV(("SST_SLIM_PVOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIM_PVOUT_CLKDEL")), "%i", &masterPVOutClkDel);
|
||||
if(GETENV(("SST_SLIM_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_SLIM_VIN_CLKDEL")), "%i", &masterVInClkDel);
|
||||
if(GETENV(("SST_SLIM_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIM_VOUT_CLKDEL")), "%i", &i) == 1))
|
||||
masterVOutClkDel = i;
|
||||
if(GETENV(("SST_SLIM_PVOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIM_PVOUT_CLKDEL")), "%i", &i) == 1))
|
||||
masterPVOutClkDel = i;
|
||||
if(GETENV(("SST_SLIM_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_SLIM_VIN_CLKDEL")), "%i", &i) == 1))
|
||||
masterVInClkDel = i;
|
||||
INIT_PRINTF(("sst1InitSli(): masterVinClkdel=0x%x, masterVOutClkDel=0x%x, masterPVOutClkDel=0x%x\n",
|
||||
masterVInClkDel, masterVOutClkDel, masterPVOutClkDel));
|
||||
if(sst1CurrentBoard->fbiVideo16BPP)
|
||||
@@ -367,8 +374,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitSli(FxU32 *sstbase0, FxU32 *sstbase1)
|
||||
/* Clear Screen */
|
||||
FxU32 clearColor = 0x0;
|
||||
|
||||
if(GETENV(("SST_VIDEO_CLEARCOLOR")))
|
||||
SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &clearColor);
|
||||
if(GETENV(("SST_VIDEO_CLEARCOLOR")) &&
|
||||
(SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &i) == 1))
|
||||
clearColor = i;
|
||||
ISET(sstMaster->c1, clearColor);
|
||||
ISET(sstMaster->c0, clearColor);
|
||||
ISET(sstMaster->zaColor, 0x0);
|
||||
|
||||
@@ -284,6 +284,7 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
FxU32 ft_clk_del, tf0_clk_del, tf1_clk_del, tf2_clk_del;
|
||||
sst1ClkTimingStruct sstGrxClk;
|
||||
volatile Sstregs *sst = (Sstregs *) sstbase;
|
||||
int i;
|
||||
|
||||
if(!sst)
|
||||
return(FXFALSE);
|
||||
@@ -319,9 +320,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
|
||||
/* Adjust Fbi-to-Trex clock delay value */
|
||||
/* Adjust Trex-to-Fbi FIFO */
|
||||
if(GETENV(("SST_TF_FIFO_THRESH")))
|
||||
SSCANF(GETENV(("SST_TF_FIFO_THRESH")), "%i", &tf_fifo_thresh);
|
||||
else
|
||||
if(!GETENV(("SST_TF_FIFO_THRESH")) ||
|
||||
(SSCANF(GETENV(("SST_TF_FIFO_THRESH")), "%i", &tf_fifo_thresh) != 1))
|
||||
tf_fifo_thresh = 0x8;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Setting TREX-to-FBI FIFO THRESHOLD to 0x%x...\n",
|
||||
tf_fifo_thresh));
|
||||
@@ -332,8 +332,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
else
|
||||
/* .6 micron */
|
||||
ft_clk_del = 0xa; /* Okay for 16 MHz startup... */
|
||||
if(GETENV(("SST_PFT_CLK_DEL")))
|
||||
SSCANF(GETENV(("SST_PFT_CLK_DEL")), "%i", &ft_clk_del);
|
||||
if(GETENV(("SST_PFT_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_PFT_CLK_DEL")), "%i", &i) == 1))
|
||||
ft_clk_del = i;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Setting PRELIM FT-CLK delay to 0x%x...\n", ft_clk_del));
|
||||
ISET(sst->fbiInit3,
|
||||
(SST_FBIINIT3_DEFAULT & ~(SST_FT_CLK_DEL_ADJ | SST_TF_FIFO_THRESH)) |
|
||||
@@ -391,24 +392,23 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
}
|
||||
|
||||
/* set TREX0 init values */
|
||||
if(GETENV(("SST_TREX0INIT0"))) {
|
||||
if(GETENV(("SST_TREX0INIT0")) &&
|
||||
(SSCANF(GETENV(("SST_TREX0INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[0]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX0INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[0]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[0] = SST_TREX0INIT0_DEFAULT;
|
||||
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX0INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[0]));
|
||||
if(GETENV(("SST_TREX0INIT1"))) {
|
||||
|
||||
if(GETENV(("SST_TREX0INIT1")) &&
|
||||
(SSCANF(GETENV(("SST_TREX0INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[0]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX0INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX0INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[0]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[0] = SST_TREX0INIT1_DEFAULT;
|
||||
if(GETENV(("SST_PTF0_CLK_DEL"))) {
|
||||
SSCANF(GETENV(("SST_PTF0_CLK_DEL")), "%i", &tf0_clk_del);
|
||||
if(GETENV(("SST_PTF0_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_PTF0_CLK_DEL")), "%i", &tf0_clk_del) == 1) ) {
|
||||
sst1CurrentBoard->tmuInit1[0] = (sst1CurrentBoard->tmuInit1[0] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf0_clk_del<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
@@ -422,22 +422,22 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
|
||||
/* set TREX1 init values */
|
||||
if(GETENV(("SST_TREX1INIT0"))) {
|
||||
if(GETENV(("SST_TREX1INIT0")) &&
|
||||
(SSCANF(GETENV(("SST_TREX1INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[1]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX1INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[1]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[1] = SST_TREX1INIT0_DEFAULT;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX1INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[1]));
|
||||
if(GETENV(("SST_TREX1INIT1"))) {
|
||||
if(GETENV(("SST_TREX1INIT1")) &&
|
||||
(SSCANF(GETENV(("SST_TREX1INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[1]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX1INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX1INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[1]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[1] = SST_TREX1INIT1_DEFAULT;
|
||||
if(GETENV(("SST_PTF1_CLK_DEL"))) {
|
||||
SSCANF(GETENV(("SST_PTF1_CLK_DEL")), "%i", &tf1_clk_del);
|
||||
if(GETENV(("SST_PTF1_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_PTF1_CLK_DEL")), "%i", &tf1_clk_del) == 1) ) {
|
||||
sst1CurrentBoard->tmuInit1[1] = (sst1CurrentBoard->tmuInit1[1] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf1_clk_del<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
@@ -451,22 +451,22 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitRegisters(FxU32 *sstbase)
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
|
||||
/* set TREX2 init values */
|
||||
if(GETENV(("SST_TREX2INIT0"))) {
|
||||
if(GETENV(("SST_TREX2INIT0")) &&
|
||||
(SSCANF(GETENV(("SST_TREX2INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[2]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT0 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX2INIT0")), "%i",
|
||||
&sst1CurrentBoard->tmuInit0[2]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit0[2] = SST_TREX2INIT0_DEFAULT;
|
||||
INIT_PRINTF(("sst1InitRegisters(): Storing TREX2INIT0=0x%x\n",
|
||||
sst1CurrentBoard->tmuInit0[2]));
|
||||
if(GETENV(("SST_TREX2INIT1"))) {
|
||||
if(GETENV(("SST_TREX2INIT1")) &&
|
||||
(SSCANF(GETENV(("SST_TREX2INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[2]) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitRegisters(): Using SST_TREX2INIT1 environment variable\n"));
|
||||
SSCANF(GETENV(("SST_TREX2INIT1")), "%i",
|
||||
&sst1CurrentBoard->tmuInit1[2]);
|
||||
} else
|
||||
sst1CurrentBoard->tmuInit1[2] = SST_TREX2INIT1_DEFAULT;
|
||||
if(GETENV(("SST_PTF2_CLK_DEL"))) {
|
||||
SSCANF(GETENV(("SST_PTF2_CLK_DEL")), "%i", &tf2_clk_del);
|
||||
if(GETENV(("SST_PTF2_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_PTF2_CLK_DEL")), "%i", &tf2_clk_del) == 1) ) {
|
||||
sst1CurrentBoard->tmuInit1[2] = (sst1CurrentBoard->tmuInit1[2] &
|
||||
~SST_TEX_TF_CLK_DEL_ADJ) |
|
||||
(tf2_clk_del<<SST_TEX_TF_CLK_DEL_ADJ_SHIFT);
|
||||
|
||||
@@ -103,8 +103,8 @@
|
||||
#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)
|
||||
#define IGET(A) sst1InitRead32 ((FxU32 *)(void *)&(A))
|
||||
#define ISET(A,D) sst1InitWrite32((FxU32 *)(void *)&(A), D)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -58,6 +58,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
FxU32 vInClkDel, vOutClkDel;
|
||||
FxU32 tf0_clk_del, tf1_clk_del, tf2_clk_del;
|
||||
FxU32 ft_clk_del;
|
||||
#ifndef DIRECTX
|
||||
float vidClkFreq;
|
||||
#endif
|
||||
|
||||
if(!sst)
|
||||
return(FXFALSE);
|
||||
@@ -354,30 +357,30 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
}
|
||||
|
||||
/* Setup SST video timing registers */
|
||||
if(GETENV(("SST_HSYNC"))) {
|
||||
SSCANF(GETENV(("SST_HSYNC")), "%i", &vtmp);
|
||||
if(GETENV(("SST_HSYNC")) &&
|
||||
(SSCANF(GETENV(("SST_HSYNC")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_HSYNC=0x%x\n", vtmp));
|
||||
ISET(sst->hSync, vtmp);
|
||||
} else
|
||||
ISET(sst->hSync, ((sstVideoRez->hSyncOff << SST_VIDEO_HSYNC_OFF_SHIFT) |
|
||||
(sstVideoRez->hSyncOn << SST_VIDEO_HSYNC_ON_SHIFT)));
|
||||
if(GETENV(("SST_VSYNC"))) {
|
||||
SSCANF(GETENV(("SST_VSYNC")), "%i", &vtmp);
|
||||
if(GETENV(("SST_VSYNC")) &&
|
||||
(SSCANF(GETENV(("SST_VSYNC")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_VSYNC=0x%x\n", vtmp));
|
||||
ISET(sst->vSync, vtmp);
|
||||
} else
|
||||
ISET(sst->vSync, ((sstVideoRez->vSyncOff << SST_VIDEO_VSYNC_OFF_SHIFT) |
|
||||
(sstVideoRez->vSyncOn << SST_VIDEO_VSYNC_ON_SHIFT)));
|
||||
if(GETENV(("SST_BACKPORCH"))) {
|
||||
SSCANF(GETENV(("SST_BACKPORCH")), "%i", &vtmp);
|
||||
if(GETENV(("SST_BACKPORCH")) &&
|
||||
(SSCANF(GETENV(("SST_BACKPORCH")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_BACKPORCH=0x%x\n", vtmp));
|
||||
ISET(sst->backPorch, vtmp);
|
||||
} else
|
||||
ISET(sst->backPorch,
|
||||
((sstVideoRez->vBackPorch << SST_VIDEO_VBACKPORCH_SHIFT) |
|
||||
(sstVideoRez->hBackPorch << SST_VIDEO_HBACKPORCH_SHIFT)));
|
||||
if(GETENV(("SST_DIMENSIONS"))) {
|
||||
SSCANF(GETENV(("SST_DIMENSIONS")), "%i", &vtmp);
|
||||
if(GETENV(("SST_DIMENSIONS")) &&
|
||||
(SSCANF(GETENV(("SST_DIMENSIONS")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using SST_DIMENSIONS=0x%x\n", vtmp));
|
||||
sstVideoRez->yDimension = (vtmp >> SST_VIDEO_YDIM_SHIFT) & 0x3ff;
|
||||
sstVideoRez->xDimension = vtmp & 0x3ff;
|
||||
@@ -385,13 +388,13 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
ISET(sst->videoDimensions,
|
||||
((sstVideoRez->yDimension << SST_VIDEO_YDIM_SHIFT) |
|
||||
((sstVideoRez->xDimension-1) << SST_VIDEO_XDIM_SHIFT)));
|
||||
if(GETENV(("SST_MEMOFFSET"))) {
|
||||
SSCANF(GETENV(("SST_MEMOFFSET")), "%i", &vtmp);
|
||||
if(GETENV(("SST_MEMOFFSET")) &&
|
||||
(SSCANF(GETENV(("SST_MEMOFFSET")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using video memOffset=0x%x\n", vtmp));
|
||||
sstVideoRez->memOffset = vtmp;
|
||||
}
|
||||
if(GETENV(("SST_TILESINX"))) {
|
||||
SSCANF(GETENV(("SST_TILESINX")), "%i", &vtmp);
|
||||
if(GETENV(("SST_TILESINX")) &&
|
||||
(SSCANF(GETENV(("SST_TILESINX")), "%i", &vtmp) == 1) ) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Using video tilesInX=0x%x\n", vtmp));
|
||||
sstVideoRez->tilesInX_Over2 = vtmp;
|
||||
}
|
||||
@@ -445,14 +448,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
|
||||
memFifoLwm = 23;
|
||||
if(GETENV(("SST_MEMFIFO_LWM")))
|
||||
SSCANF(GETENV(("SST_MEMFIFO_LWM")), "%i", &memFifoLwm);
|
||||
if(GETENV(("SST_MEMFIFO_LWM")) &&
|
||||
(SSCANF(GETENV(("SST_MEMFIFO_LWM")), "%i", &vtmp) == 1))
|
||||
memFifoLwm = vtmp;
|
||||
memFifoHwm = 54;
|
||||
if(GETENV(("SST_MEMFIFO_HWM")))
|
||||
SSCANF(GETENV(("SST_MEMFIFO_HWM")), "%i", &memFifoHwm);
|
||||
if(GETENV(("SST_MEMFIFO_HWM")) &&
|
||||
(SSCANF(GETENV(("SST_MEMFIFO_HWM")), "%i", &vtmp) == 1))
|
||||
memFifoHwm = vtmp;
|
||||
pciFifoLwm = 13;
|
||||
if(GETENV(("SST_PCIFIFO_LWM")))
|
||||
SSCANF(GETENV(("SST_PCIFIFO_LWM")), "%i", &pciFifoLwm);
|
||||
if(GETENV(("SST_PCIFIFO_LWM")) &&
|
||||
(SSCANF(GETENV(("SST_PCIFIFO_LWM")), "%i", &vtmp) == 1))
|
||||
pciFifoLwm = vtmp;
|
||||
INIT_PRINTF(("sst1InitVideo(): pciFifoLwm:%d memFifoLwm:%d memFifoHwm:%d\n",
|
||||
pciFifoLwm, memFifoLwm, memFifoHwm));
|
||||
|
||||
@@ -513,8 +519,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
memFifoEntries = sstVideoRez->memFifoEntries_2MB;
|
||||
else
|
||||
memFifoEntries = sstVideoRez->memFifoEntries_4MB;
|
||||
if(GETENV(("SST_MEMFIFO_ENTRIES")))
|
||||
SSCANF(GETENV(("SST_MEMFIFO_ENTRIES")), "%i", &memFifoEntries);
|
||||
if(GETENV(("SST_MEMFIFO_ENTRIES")) &&
|
||||
(SSCANF(GETENV(("SST_MEMFIFO_ENTRIES")), "%i", &vtmp) == 1))
|
||||
memFifoEntries = vtmp;
|
||||
INIT_PRINTF(("sst1InitVideo(): Enabling Memory FIFO (Entries=%d)...\n",
|
||||
0xffff - (memFifoEntries << 5)));
|
||||
|
||||
@@ -538,15 +545,17 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
vInClkDel = 2;
|
||||
if(sst1CurrentBoard->fbiRevision == 2)
|
||||
vInClkDel = 0;
|
||||
if(GETENV(("SST_VIN_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_VIN_CLKDEL")), "%i", &vInClkDel);
|
||||
if(GETENV(("SST_VIN_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_VIN_CLKDEL")), "%i", &vtmp) == 1))
|
||||
vInClkDel = vtmp;
|
||||
|
||||
if(sst1CurrentBoard->fbiRevision == 2)
|
||||
vOutClkDel = 2;
|
||||
else
|
||||
vOutClkDel = 0;
|
||||
if(GETENV(("SST_VOUT_CLKDEL")))
|
||||
SSCANF(GETENV(("SST_VOUT_CLKDEL")), "%i", &vOutClkDel);
|
||||
if(GETENV(("SST_VOUT_CLKDEL")) &&
|
||||
(SSCANF(GETENV(("SST_VOUT_CLKDEL")), "%i", &vtmp) == 1))
|
||||
vOutClkDel = vtmp;
|
||||
|
||||
INIT_PRINTF(("sst1InitVideo(): vInClkDel=0x%x vOutClkDel=0x%x\n",
|
||||
vInClkDel, vOutClkDel));
|
||||
@@ -579,10 +588,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
sst1InitIdleFBINoNOP(sstbase);
|
||||
if(!GETENV(("SST_VIDEO_FILTER_DISABLE"))) {
|
||||
ISET(sst->fbiInit1, IGET(sst->fbiInit1) | SST_VIDEO_FILTER_EN);
|
||||
if(GETENV(("SST_VIDEO_FILTER_THRESHOLD"))) {
|
||||
SSCANF(GETENV(("SST_VIDEO_FILTER_THRESHOLD")), "%i", &n);
|
||||
if(GETENV(("SST_VIDEO_FILTER_THRESHOLD")) &&
|
||||
(SSCANF(GETENV(("SST_VIDEO_FILTER_THRESHOLD")), "%i", &n) == 1)) {
|
||||
INIT_PRINTF(("sst1InitVideo(): Setting Video Filtering Treshold to 0x%x...\n", n));
|
||||
|
||||
ISET(sst->videoFilterRgbThreshold, n);
|
||||
} else
|
||||
/* sst->videoFilterRgbThreshold = 0x180c18; */
|
||||
@@ -648,14 +656,18 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
}
|
||||
|
||||
/* Override with environment variables */
|
||||
if(GETENV(("SST_FT_CLK_DEL")))
|
||||
SSCANF(GETENV(("SST_FT_CLK_DEL")), "%i", &ft_clk_del);
|
||||
if(GETENV(("SST_TF0_CLK_DEL")))
|
||||
SSCANF(GETENV(("SST_TF0_CLK_DEL")), "%i", &tf0_clk_del);
|
||||
if(GETENV(("SST_TF1_CLK_DEL")))
|
||||
SSCANF(GETENV(("SST_TF1_CLK_DEL")), "%i", &tf1_clk_del);
|
||||
if(GETENV(("SST_TF2_CLK_DEL")))
|
||||
SSCANF(GETENV(("SST_TF2_CLK_DEL")), "%i", &tf2_clk_del);
|
||||
if(GETENV(("SST_FT_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_FT_CLK_DEL")), "%i", &vtmp) == 1) )
|
||||
ft_clk_del = vtmp;
|
||||
if(GETENV(("SST_TF0_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_TF0_CLK_DEL")), "%i", &vtmp) == 1) )
|
||||
tf0_clk_del = vtmp;
|
||||
if(GETENV(("SST_TF1_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_TF1_CLK_DEL")), "%i", &vtmp) == 1) )
|
||||
tf1_clk_del = vtmp;
|
||||
if(GETENV(("SST_TF2_CLK_DEL")) &&
|
||||
(SSCANF(GETENV(("SST_TF2_CLK_DEL")), "%i", &vtmp) == 1) )
|
||||
tf2_clk_del = vtmp;
|
||||
|
||||
INIT_PRINTF(("sst1InitVideo(): Setting FBI-to-TREX clock delay to 0x%x...\n", ft_clk_del));
|
||||
INIT_PRINTF(("sst1InitVideo(): Setting TREX#0 TREX-to-FBI clock delay to 0x%x\n",
|
||||
@@ -696,10 +708,8 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
|
||||
/* Adjust Video Clock */
|
||||
#ifndef DIRECTX
|
||||
if(GETENV(("SST_VIDCLK2X"))) {
|
||||
float vidClkFreq;
|
||||
|
||||
SSCANF(GETENV(("SST_VIDCLK2X")), "%f", &vidClkFreq);
|
||||
if(GETENV(("SST_VIDCLK2X")) &&
|
||||
(SSCANF(GETENV(("SST_VIDCLK2X")), "%f", &vidClkFreq) == 1) ) {
|
||||
if(sst1InitSetVidClk(sstbase, vidClkFreq) == FXFALSE)
|
||||
return(FXFALSE);
|
||||
} else {
|
||||
@@ -740,8 +750,9 @@ FX_EXPORT FxBool FX_CSTYLE sst1InitVideo(FxU32 *sstbase,
|
||||
/* Clear Screen */
|
||||
FxU32 clearColor = 0x0;
|
||||
|
||||
if(GETENV(("SST_VIDEO_CLEARCOLOR")))
|
||||
SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &clearColor);
|
||||
if(GETENV(("SST_VIDEO_CLEARCOLOR")) &&
|
||||
(SSCANF(GETENV(("SST_VIDEO_CLEARCOLOR")), "%i", &vtmp) == 1) )
|
||||
clearColor = vtmp;
|
||||
ISET(sst->c1, clearColor);
|
||||
ISET(sst->c0, clearColor);
|
||||
ISET(sst->zaColor, 0x0);
|
||||
|
||||
Reference in New Issue
Block a user