📄 rtd2553v_eeprom.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : Eeprom.c No.0000
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __RTD2553V_EEPROM__
#include "Common\Header\Include.h"
#if((_SCALER_TYPE == _RTD2553V) || (_SCALER_TYPE == _RTD2546N) || (_SCALER_TYPE == _RTD2525L))
#if(_MEMORY_LOCATION == _EEPROM)
//--------------------------------------------------
// Description : Eeprom check at firmware startup
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromStartupCheck(void)
{
BYTE cnt;
for(cnt=0;cnt<2;cnt++)
{
CEepromRead(_EEPROM_PAGE3_BANK1 + 126, 1, pData);
if(pData[0] == _VERSION_CODE) break;
}
if(pData[0] != _VERSION_CODE)
{
CEepromLoadDefault();
pData[0] = _VERSION_CODE;
CEepromWrite(_EEPROM_PAGE3_BANK1 + 126, 1, pData);
}
else
{
CEepromLoadSystemData();
CEepromLoadOsdUserData();
CEepromLoadAdcData();
CEepromLoadBriConData();
CEepromLoadColorTempData();
CEepromLoadEDIDData();
}
}
//--------------------------------------------------
// Description : Load eeprom default
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadDefault(void)
{
StructModeUserFIFODataType stFIFOModeTemp;
if((GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE) && (stModeInfo.ModeCurr < 16))
{
CEepromLoadUserFIFOModeData((stModeInfo.ModeCurr / 4), pData);
stFIFOModeTemp.ModeNum = pData[(stModeInfo.ModeCurr % 4) * 4];
}
CEepromInitialModeData();
CEepromInitialUserFIFOModeData();
CEepromInitialCenterModeData();
CEepromLoadSystemDataDefault();
CEepromLoadOsdUserDataDefault();
CEepromLoadAdcDataDefault();
CEepromLoadBriConDataDefault();
CEepromLoadColorTempDataDefault();
CEepromLoadEDIDDataDefault();
if((GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE) && (stModeInfo.ModeCurr < 16))
{
if(stSystemData.UserFIFOMode >= 15)
stSystemData.UserFIFOMode = 0;
else
stSystemData.UserFIFOMode++;
stFIFOModeTemp.IHFreq = stModeInfo.IHFreq;
stFIFOModeTemp.IVFreq = stModeInfo.IVFreq;
CEepromSaveUserFIFOModeData(stFIFOModeTemp);
stModeUserData.FirstAuto = 0;
stModeUserData.HPosition = tINPUTMODE_PRESET_TABLE[stFIFOModeTemp.ModeNum].IHStartPos;
stModeUserData.VPosition = tINPUTMODE_PRESET_TABLE[stFIFOModeTemp.ModeNum].IVStartPos;
stModeUserData.Clock = tINPUTMODE_PRESET_TABLE[stFIFOModeTemp.ModeNum].IHTotal;
stModeUserData.Phase = 0;
CEepromSaveModeData(stSystemData.UserFIFOMode);
stModeInfo.ModeCurr = stSystemData.UserFIFOMode;
}
else if((GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE) && (stModeInfo.ModeCurr < _MAX_PRESET_MODE))
{
CEepromLoadModeData(stModeInfo.ModeCurr);
}
}
//--------------------------------------------------
// Description : Eeprom write function
// Input Value : usAddr --> absolute address
// usLength --> Numbers of data we want to write
// pWriteArray --> Writing data array
// Output Value : Return _SUCCESS if succeed
//--------------------------------------------------
bit CEepromWrite(WORD usAddr, WORD usLength, BYTE *pWriteArray)
{
return CI2cWrite(_EEPROM_ADDRESS + (BYTE)((usAddr & 0xff00) >> 7), (BYTE)(usAddr & 0x00ff), usLength, pWriteArray);
}
//--------------------------------------------------
// Description : Eeprom read function
// Input Value : usAddr --> absolute address
// usLength --> Numbers of data we want to read
// pReadArray --> Result array
// Output Value : Return _SUCCESS if succeed
//--------------------------------------------------
bit CEepromRead(WORD usAddr, WORD usLength, BYTE *pReadArray)
{
return CI2cRead(_EEPROM_ADDRESS + (BYTE)((usAddr & 0xff00) >> 7), (BYTE)(usAddr & 0x00ff), usLength, pReadArray);
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description : Save mode setting data, such as FirstAuto,
// HPosition, VPosition, Clock and Phase.
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveModeData(BYTE ucMode)
{
if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
{
CEepromWrite(_MODE_DATA_0_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserDataType), &stModeUserData.FirstAuto);
}
else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
{
CEepromWrite(_USER_FIFO_MODE_DATA_1_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserDataType), &stModeUserData.FirstAuto);
}
}
//--------------------------------------------------
// Description : Load mode setting data, such as FirstAuto,
// HPosition, VPosition, Clock and Phase.
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadModeData(BYTE ucMode)
{
if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
{
if(CEepromRead(_MODE_DATA_0_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserDataType), &stModeUserData.FirstAuto) == _FAIL)
{
stModeUserData.FirstAuto = 0;
stModeUserData.HPosition = stModeInfo.IHStartPos;
stModeUserData.VPosition = stModeInfo.IVStartPos;
stModeUserData.Clock = stModeInfo.IHTotal;
stModeUserData.Phase = 0;
}
}
else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
{
if(CEepromRead(_USER_FIFO_MODE_DATA_1_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserDataType), &stModeUserData.FirstAuto) == _FAIL)
{
stModeUserData.FirstAuto = 0;
stModeUserData.HPosition = stModeInfo.IHStartPos;
stModeUserData.VPosition = stModeInfo.IVStartPos;
stModeUserData.Clock = stModeInfo.IHTotal;
stModeUserData.Phase = 0;
}
}
}
//--------------------------------------------------
// Description : Initial mode setting data with defaults
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromInitialModeData(void)
{
BYTE modecnt, modetype;
modetype = GET_MODE_SEARCH_TYPE();
SET_MODE_SEARCH_TYPE(_PRESET_MODE_TYPE);
for(modecnt=0;modecnt<_MAX_PRESET_MODE;modecnt++)
{
stModeUserData.FirstAuto = 0;
stModeUserData.HPosition = tINPUTMODE_PRESET_TABLE[modecnt].IHStartPos;
stModeUserData.VPosition = tINPUTMODE_PRESET_TABLE[modecnt].IVStartPos;
stModeUserData.Clock = tINPUTMODE_PRESET_TABLE[modecnt].IHTotal;
stModeUserData.Phase = 0;
CEepromSaveModeData(modecnt);
}
for(modecnt=0;modecnt<8;modecnt++)
{
CEepromWrite(_USER_FIFO_MODE_DATA_1_ADDRESS + (modecnt * 16), 16, tEEPROM_USER_FIFO_MODE_DEFAULT);
}
SET_MODE_SEARCH_TYPE(modetype);
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description : Save user FIFO mode data, such as ModeNum,
// IHFreq, IVFreq.
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveUserFIFOModeData(StructModeUserFIFODataType stUserFIFOMode)
{
stUserFIFOMode.IHFreq = ((stUserFIFOMode.IVFreq & 0x0f00) << 4) | (stUserFIFOMode.IHFreq & 0x0fff);
stUserFIFOMode.IVFreq = ((stUserFIFOMode.IVFreq & 0x00ff) << 8);
CEepromWrite(_USER_FIFO_MODE_DATA_0_ADDRESS + (stSystemData.UserFIFOMode * 4), 4, &stUserFIFOMode.ModeNum);
}
//--------------------------------------------------
// Description : Load 4 sets of user FIFO mode data.
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadUserFIFOModeData(BYTE ucNum, BYTE *pArray)
{
CEepromRead(_USER_FIFO_MODE_DATA_0_ADDRESS + (ucNum * 16), 16, pArray);
}
//--------------------------------------------------
// Description : Initial user FIFO mode data with defaults
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromInitialUserFIFOModeData(void)
{
BYTE modecnt;
for(modecnt=0;modecnt<4;modecnt++)
{
CEepromWrite(_USER_FIFO_MODE_DATA_0_ADDRESS + (modecnt * 16), 16, tEEPROM_USER_FIFO_MODE_DEFAULT);
}
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description :
// Input Value :
// Output Value : None
//--------------------------------------------------
void CEepromSaveCenterModeData(BYTE ucMode)
{
if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
{
CEepromWrite(_MODE_CENTER_DATA_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserCenterDataType), (BYTE *)&stModeUserCenterData.CenterHPos);
}
else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
{
CEepromWrite(_MODE_CENTER_DATA_ADDRESS + (WORD)_MAX_PRESET_MODE * 8 + (WORD)ucMode * 8, sizeof(StructModeUserCenterDataType), (BYTE *)&stModeUserCenterData.CenterHPos);
}
}
//--------------------------------------------------
// Description :
// Input Value :
// Output Value : None
//--------------------------------------------------
void CEepromLoadCenterModeData(BYTE ucMode)
{
if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
{
if(CEepromRead(_MODE_CENTER_DATA_ADDRESS + (WORD)ucMode * 8, sizeof(StructModeUserCenterDataType), (BYTE *)&stModeUserCenterData.CenterHPos) == _FAIL)
{
stModeUserCenterData.CenterHPos = stModeInfo.IHStartPos;
stModeUserCenterData.CenterVPos = stModeInfo.IVStartPos;
stModeUserCenterData.CenterClock = stModeInfo.IHTotal;
}
}
else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
{
if(CEepromWrite(_MODE_CENTER_DATA_ADDRESS + (WORD)_MAX_PRESET_MODE * 8 + (WORD)ucMode * 8, sizeof(StructModeUserCenterDataType), (BYTE *)&stModeUserCenterData.CenterHPos) == _FAIL)
{
stModeUserCenterData.CenterHPos = stModeInfo.IHStartPos;
stModeUserCenterData.CenterVPos = stModeInfo.IVStartPos;
stModeUserCenterData.CenterClock = stModeInfo.IHTotal;
}
}
}
//--------------------------------------------------
// Description : Initial mode setting data with defaults
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromInitialCenterModeData(void)
{
BYTE modecnt, modetype;
modetype = GET_MODE_SEARCH_TYPE();
SET_MODE_SEARCH_TYPE(_PRESET_MODE_TYPE);
for(modecnt=0;modecnt<_MAX_PRESET_MODE;modecnt++)
{
stModeUserCenterData.CenterHPos = tINPUTMODE_PRESET_TABLE[modecnt].IHStartPos;
stModeUserCenterData.CenterVPos = tINPUTMODE_PRESET_TABLE[modecnt].IVStartPos;
stModeUserCenterData.CenterClock = tINPUTMODE_PRESET_TABLE[modecnt].IHTotal;
CEepromSaveCenterModeData(modecnt);
}
for(modecnt=0;modecnt<8;modecnt++)
{
CEepromWrite(_MODE_CENTER_DATA_ADDRESS + (WORD)_MAX_PRESET_MODE * 8 + ((WORD)modecnt * 16), 16, tEEPROM_USER_FIFO_MODE_DEFAULT);
}
SET_MODE_SEARCH_TYPE(modetype);
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description : Save system data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveSystemData(void)
{
CEepromWrite(_SYSTEM_DATA_ADDRESS, sizeof(StructSystemDataType), &stSystemData.MonitorFlag);
}
//--------------------------------------------------
// Description : Load system data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadSystemData(void)
{
CEepromRead(_SYSTEM_DATA_ADDRESS, sizeof(StructSystemDataType), &stSystemData.MonitorFlag);
}
//--------------------------------------------------
// Description : Load default system data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadSystemDataDefault(void)
{
CEepromWrite(_SYSTEM_DATA_ADDRESS, sizeof(StructSystemDataType), &tEEPROM_SYSTEM_DATA.MonitorFlag);
stSystemData = tEEPROM_SYSTEM_DATA;
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description : Save OSD data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveOsdUserData(void)
{
CEepromWrite(_OSDUSER_DATA_ADDRESS, sizeof(StructOsdUserDataType), &stOsdUserData.OsdSettingFlag);
}
//--------------------------------------------------
// Description : Load OSD data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadOsdUserData(void)
{
CEepromRead(_OSDUSER_DATA_ADDRESS, sizeof(StructOsdUserDataType), &stOsdUserData.OsdSettingFlag);
}
//--------------------------------------------------
// Description : Load default OSD data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadOsdUserDataDefault(void)
{
CEepromWrite(_OSDUSER_DATA_ADDRESS, sizeof(StructOsdUserDataType), &tEEPROM_OSDUSER_DATA.OsdSettingFlag);
stOsdUserData = tEEPROM_OSDUSER_DATA;
}
//----------------------------------------------------------------------------------------------------
//--------------------------------------------------
// Description : Save ADC data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveAdcData(void)
{
// CEepromWrite(_ADC_DATA_ADDRESS, sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA) //V307 modify
CEepromWrite(_ADC_DATA_ADDRESS, sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
else
CEepromWrite(_ADC_DATA_ADDRESS + sizeof(StructAdcDataType), sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
}
//--------------------------------------------------
// Description : Load ADC data
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadAdcData(void)
{
// CEepromRead(_ADC_DATA_ADDRESS, sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -