📄 eeprom.c
字号:
/****************************************************************************
+----------------------------------------------------------------------+
| Copyright Trumpion Microelectronics Inc. 1999 |
| Trumpion Microelectronics Inc. reserves the right to change products |
| or specifications without notice. |
+----------------------------------------------------------------------+
Project : LCD monitor
Version : 0.94
File Name : eeprom.c
Functions : EEPROM interface function implement
Revision :
1999-05-18 OriginalTeam First Created
2000-07-17 Bill Tseng Modified for Zurac-II
****************************************************************************/
//=========================================================================
// include files =
//=========================================================================
#include "lib\extent.h"
#include "lib\wreg516.h"
#include "lib\declare.h"
#include "lib\DEFINE.h"
#include "lib\global.h"
#include "lib\modedata.h"
#include "lib\initial.h"
#include "lib\eeprom.h"
#include "LIB\OSDMENU.H"
/************************************************************************
* Function : EepromCommonRecall *
* Description : Recall *
* Input : ModeType *
* Output : none *
************************************************************************/
Byte EepromCommonRecall(Byte ModeType)
{
Byte i,csum,eecsum,misc,misc2;
if( ModeType == 0 )
{
EepromRead( EE3_CHECKSUM_A0, 1);
eecsum = TrmBuf[0];
EepromRead( EE3_PANEL_TYPE, 8);
for(i=csum=0; i<8; i++)
csum += TrmBuf[i];
if( csum != eecsum ) /* checksum error */
return 1;
PanelType = TrmBuf[0];
OSDHorPosition = TrmBuf[1];
OSDVerPosition = TrmBuf[2];
OSDLanguage = TrmBuf[3];
OSDTimerByte = TrmBuf[4];
misc = TrmBuf[5];
misc2 = TrmBuf[6];
ColorTemp = TrmBuf[7];
// FgGammaEnable = FgTransparency = FgDosMode = 0;
FgDosMode = FgDosMode1 =0;
FgBurnin = 0;
DitherMode = ScalingMode = 0;
// if( misc & 0x80 ) FgGammaEnable = 1;
// if( misc & 0x40 ) FgTransparency = 1;
if( misc & 0x40 ) FgDosMode1 = 1;
if( misc & 0x20 ) FgDosMode = 1;
if( misc & 0x10 ) FgBurnin = 1;
if( (misc & 0x0C)==0x0C ) DitherMode = 3;
else if( (misc & 0x0C)==0x08 ) DitherMode = 2;
else if( (misc & 0x0C)==0x04 ) DitherMode = 1;
ScalingMode = (misc & 0x03);
AlphaBlending = (misc2 / 32);
GammaIndex = misc2 & 0x1F;
// FgShowBurnin = FgBurnin;
}
else if( ModeType==1 )
{
EepromRead( EE3_CHECKSUM_A1, 1);
eecsum = TrmBuf[0];
EepromRead( EE3_BRIGHTNESS, 4);
for(i=csum=0; i<4; i++)
csum += TrmBuf[i];
if( csum != eecsum ) /* checksum error */
return 1;
EepromRead( EE3_BRIGHTNESS, 4);
BrightnessValue = TrmBuf[0];
ContrastValue = TrmBuf[1];
BrightnessValueZ = TrmBuf[2];
ContrastValueZ = TrmBuf[3];
}
else if( ModeType==2 )
{
EepromRead( EE3_CHECKSUM_A2, 1);
eecsum = TrmBuf[0];
EepromRead( EE3_GAIN_R, 6);
for(i=0,csum=0; i<6; i++)
csum += TrmBuf[i];
if( csum != eecsum ) /* checksum error */
return 1;
#if SWAP_RED_BLUE
U1BgainValue = TrmBuf[0];
U1GgainValue = TrmBuf[1];
U1RgainValue = TrmBuf[2];
M_BrightnessB = TrmBuf[3];
M_BrightnessG = TrmBuf[4];
M_BrightnessR = TrmBuf[5];
#else
U1RgainValue = TrmBuf[0];
U1GgainValue = TrmBuf[1];
U1BgainValue = TrmBuf[2];
M_BrightnessR = TrmBuf[3];
M_BrightnessG = TrmBuf[4];
M_BrightnessB = TrmBuf[5];
#endif
}
else if( ModeType== 3 )
{
// EepromRead( EE3_ZURAC_RCONTRAST , 6);
// ZRContrast = TrmBuf[0];
// ZGContrast = TrmBuf[1];
// ZBContrast = TrmBuf[2];
// ZRBrightness = TrmBuf[3];
// ZGBrightness = TrmBuf[4];
// ZBBrightness = TrmBuf[5];
}
return 0;
}
void EepromCommonStore(Byte ModeType)
{
Byte i,csum,misc,misc2;
if( ModeType == 0 )
{
misc = 0;
// if( FgGammaEnable ) misc |= 0x80;
// if( FgTransparency ) misc |= 0x40;
if( FgDosMode1 ) misc |= 0x40;
if( FgDosMode ) misc |= 0x20;
if( FgBurnin ) misc |= 0x10;
if( DitherMode==3 ) misc |= 0x0C;
else if( DitherMode==2 ) misc |= 0x08;
else if( DitherMode==1 ) misc |= 0x04;
misc |= ScalingMode;
misc2 = AlphaBlending << 5;
misc2 += GammaIndex;
TrmBuf[ 1] = PanelType;
TrmBuf[ 2] = OSDHorPosition;
TrmBuf[ 3] = OSDVerPosition;
TrmBuf[ 4] = OSDLanguage;
TrmBuf[ 5] = OSDTimerByte;
TrmBuf[ 6] = misc;
TrmBuf[ 7] = misc2;
TrmBuf[ 8] = ColorTemp;
for(i=1,csum=0; i<=8; i++)
csum += TrmBuf[i];
EepromWrite( EE3_PANEL_TYPE,8 );
TrmBuf[ 1] = csum;
EepromWrite( EE3_CHECKSUM_A0,1 );
}
else if( ModeType == 1 )
{
TrmBuf[ 1] = BrightnessValue;
TrmBuf[ 2] = ContrastValue;
TrmBuf[ 3] = BrightnessValueZ;
TrmBuf[ 4] = ContrastValueZ;
for(i=1,csum=0; i<=4; i++)
csum += TrmBuf[i];
EepromWrite( EE3_BRIGHTNESS,4 );
TrmBuf[ 1] = csum;
EepromWrite( EE3_CHECKSUM_A1,1 );
}
else if( ModeType == 2 )
{
#if SWAP_RED_BLUE
TrmBuf[1] = U1BgainValue;
TrmBuf[2] = U1GgainValue;
TrmBuf[3] = U1RgainValue;
TrmBuf[4] = M_BrightnessB;
TrmBuf[5] = M_BrightnessG;
TrmBuf[6] = M_BrightnessR;
#else
TrmBuf[1] = U1RgainValue;
TrmBuf[2] = U1GgainValue;
TrmBuf[3] = U1BgainValue;
TrmBuf[4] = M_BrightnessR;
TrmBuf[5] = M_BrightnessG;
TrmBuf[6] = M_BrightnessB;
#endif
for(i=1,csum=0; i<=6; i++)
csum += TrmBuf[i];
EepromWrite( EE3_GAIN_R,6);
TrmBuf[1] = csum;
EepromWrite( EE3_CHECKSUM_A2 , 1); // write checksum
}
else if( ModeType== 3 )
{
// TrmBuf[0] = ZRContrast;
// TrmBuf[1] = ZGContrast;
// TrmBuf[2] = ZBContrast;
// TrmBuf[3] = ZRBrightness;
// TrmBuf[4] = ZGBrightness;
// TrmBuf[5] = ZBBrightness;
// EepromWrite( EE3_ZURAC_RCONTRAST , 6);
}
return;
}
void EepromCommonDefault(Byte ModeType)
{
Byte misc,misc2;
if( ModeType == 0 )
{
PanelType = EEPROMDefault_table2[ 0];
OSDHorPosition = EEPROMDefault_table2[ 1];
OSDVerPosition = EEPROMDefault_table2[ 2];
OSDLanguage = EEPROMDefault_table2[ 3];
OSDTimerByte = EEPROMDefault_table2[ 4];
misc = EEPROMDefault_table2[ 5];
misc2 = EEPROMDefault_table2[ 6];
ColorTemp = EEPROMDefault_table2[ 7];
// FgGammaEnable = FgTransparency = FgDosMode = 0;
FgDosMode = FgDosMode = 0;
FgBurnin = 0;
DitherMode = 0;
ScalingMode = 0;
// if( misc & 0x80 ) FgGammaEnable = 1;
// if( misc & 0x40 ) FgTransparency = 1;
if( misc & 0x40 ) FgDosMode1 = 1;
if( misc & 0x20 ) FgDosMode = 1;
if( misc & 0x10 ) FgBurnin = 1;
if( (misc & 0x0C)==0x0C ) DitherMode = 3;
else if( (misc & 0x0C)==0x08 ) DitherMode = 2;
else if( (misc & 0x0C)==0x04 ) DitherMode = 1;
ScalingMode = (misc & 0x03);
AlphaBlending = misc2 / 32;
GammaIndex = misc2 & 0x1F;
}
else if( ModeType == 1 )
{
BrightnessValue = EEPROMDefault_table2[ 8];
ContrastValue = EEPROMDefault_table2[ 9];
BrightnessValueZ = EEPROMDefault_table2[10];
ContrastValueZ = EEPROMDefault_table2[11];
}
else if( ModeType == 2 )
{
U1RgainValue = EEPROMDefault_table2[12];
U1GgainValue = EEPROMDefault_table2[13];
U1BgainValue = EEPROMDefault_table2[14];
M_BrightnessR = EEPROMDefault_table2[15];
M_BrightnessG = EEPROMDefault_table2[16];
M_BrightnessB = EEPROMDefault_table2[17];
}
else if( ModeType == 3 )
{
// ZRContrast = EEPROMDefault_table2[30];
// ZGContrast = EEPROMDefault_table2[31];
// ZBContrast = EEPROMDefault_table2[32];
// ZRBrightness = EEPROMDefault_table2[33];
// ZGBrightness = EEPROMDefault_table2[34];
// ZBBrightness = EEPROMDefault_table2[35];
}
return;
}
/************************************************************************
* Function : recall mode data from eeprom *
* Description : recall mode data from EEPROM *
* Input : ModeCounter *
* Output : none *
************************************************************************/
Byte EepromTimingRecall(Byte ModeNum)
{
Word wval;
Byte i,csum;
wval = EE1_USER_MODEDEP+(ModeNum*USER_DATA_NUM);
EepromRead( wval, USER_DATA_NUM);
for(i=csum=0; i<7; i++) /* checksum value */
csum += TrmBuf[i];
if( csum != TrmBuf[7] ) /* checksum error */
return 1;
wval = MAKEWORD(TrmBuf[0],TrmBuf[1]); /* 12 bits */
HorPositionValue = wval / 16;
wval = MAKEWORD(TrmBuf[1],TrmBuf[2]); /* 12 bits */
VerPositionValue = wval & 0x0FFF;
PhaseValue = TrmBuf[3];
ClockValue = MAKEWORD(TrmBuf[4],TrmBuf[5]);
// HScaling = TrmBuf[6];
ModeInfo = TrmBuf[6];
HScaling = 0x20;
return 0;
}
void EepromTimingStore(Byte ModeNum)
{
Byte i,j,csum;
i = LOBYTE(HorPositionValue);
j = HIBYTE(VerPositionValue);
j = (i << 4) + (j & 0x0F);
TrmBuf[1] = (Byte) (HorPositionValue / 16); // HPOS(msb 8 bits)
TrmBuf[2] = j; // HPOS(lsb 4 bits) + VPOS(msb 4 bits)
TrmBuf[3] = (Byte) (VerPositionValue & 0xFF); // VPOS(lsb 8 bits)
TrmBuf[4] = PhaseValue; // Phase
TrmBuf[5] = HIBYTE( ClockValue ); // ClockValue
TrmBuf[6] = LOBYTE( ClockValue ); // H-scaling
TrmBuf[7] = ModeInfo;
// TrmBuf[7] = HScaling;
for(i=1,csum=0; i<=7; i++)
csum += TrmBuf[i];
TrmBuf[8] = csum; // checksum
EepromWrite( EE1_USER_MODEDEP+(ModeNum*8) , 8);
return;
}
void EepromTimingDefault(Byte ModeNum)
{
DataPointer = EEPROMDefault_table1[ModeNum];
HorPositionValue = MAKEWORD(*DataPointer,*(DataPointer+1));
VerPositionValue = MAKEWORD(*(DataPointer+2),*(DataPointer+3));
PhaseValue = *(DataPointer+4);
ClockValue = MAKEWORD(*(DataPointer+5),*(DataPointer+6));
// HScaling = *(DataPointer+7);
ModeInfo = *(DataPointer+7);
return;
}
/************************************************************************
* Function : EepromColorRecall *
* Description : Recall *
* Input : ModeType - 0 : 6500 *
* 1 : 9300 *
* Output : none *
************************************************************************/
Byte EepromColorRecall(Byte ModeType)
{
Word SubAddress;
Byte i,csum,eecsum;
if( ModeType== COLOR_9300 )
SubAddress = EE3_CHECKSUM_B0; // Checksum address
else if( ModeType== COLOR_6500 )
SubAddress = EE3_CHECKSUM_B1;
else if( ModeType== COLOR_5000 )
SubAddress = EE3_CHECKSUM_B2;
else
SubAddress = EE3_CHECKSUM_B3;
EepromRead( SubAddress, 1);
eecsum = TrmBuf[0];
if( ModeType== COLOR_9300 )
SubAddress = EE3_GAIN_R_9300; // Color address
else if( ModeType== COLOR_6500 )
SubAddress = EE3_GAIN_R_6500;
else if( ModeType== COLOR_5000 )
SubAddress = EE3_GAIN_R_5000;
else
SubAddress = EE3_GAIN_R_USER;
EepromRead( SubAddress, 6);
for(i=0,csum=0; i<6; i++)
csum += TrmBuf[i];
if( csum != eecsum ) /* checksum error */
return 1;
#if SWAP_RED_BLUE
ZBContrast = TrmBuf[0];
ZGContrast = TrmBuf[1];
ZRContrast = TrmBuf[2];
ZBBrightness = TrmBuf[3];
ZGBrightness = TrmBuf[4];
ZRBrightness = TrmBuf[5];
#else
ZRContrast = TrmBuf[0];
ZGContrast = TrmBuf[1];
ZBContrast = TrmBuf[2];
ZRBrightness = TrmBuf[3];
ZGBrightness = TrmBuf[4];
ZBBrightness = TrmBuf[5];
#endif
return 0;
}
void EepromColorStore(Byte ModeType)
{
Word SubAddress;
Byte i,csum;
if( ModeType== COLOR_9300 )
SubAddress = EE3_GAIN_R_9300; // Color address
else if( ModeType== COLOR_6500 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -