⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtd2533b_eeprom.c

📁 Realtek LCD monitor chip RTD25xx source code
💻 C
📖 第 1 页 / 共 4 页
字号:

if(GET_INPUTSOURCE_TYPE() == _SOURCE_VGA) //V307 modify
    CEepromRead(_ADC_DATA_ADDRESS, sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
else
    CEepromRead(_ADC_DATA_ADDRESS + sizeof(StructAdcDataType), sizeof(StructAdcDataType), &stAdcData.AdcGain[_RED]);
}

//--------------------------------------------------
// Description  : Load default ADC data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadAdcDataDefault(void)
{
    CEepromWrite(_ADC_DATA_ADDRESS, sizeof(StructAdcDataType), &tEEPROM_ADC_DATA.AdcGain[_RED]);
    CEepromWrite(_ADC_DATA_ADDRESS + sizeof(StructAdcDataType), sizeof(StructAdcDataType), &tEEPROM_ADC_DATA.AdcGain[_RED]); //V307 modify
    stAdcData = tEEPROM_ADC_DATA;
}

//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Description  : Save Brightness/Contrast data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveBriConData(void)
{
    CEepromWrite(_COLOR_PROC0_ADDRESS + (GET_INPUTSOURCE_TYPE()) * 2, 2, &stConBriData.Brightness);
}

//--------------------------------------------------
// Description  : Load Brightness/Contrast data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadBriConData(void)
{
    CEepromRead(_COLOR_PROC0_ADDRESS + (GET_INPUTSOURCE_TYPE()) * 2, 2, &stConBriData.Brightness);
}

//--------------------------------------------------
// Description  : Load default Brightness/Contrast data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadBriConDataDefault(void)
{
    CEepromWrite(_COLOR_PROC0_ADDRESS, 2 * 3, &tEEPROM_COLOR_PROC0_DATA[0].Brightness);
    CEepromLoadBriConData();
}

//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Description  : Save Color Temperature data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveColorTempData(void)
{
    CEepromWrite(_COLORTEMP_DATA_ADDRESS + 15 * GET_INPUTSOURCE_TYPE() + 3 * GET_COLOR_TEMP_TYPE(), 3, &stColorTempData.ColorTemp[_RED]);
}

//--------------------------------------------------
// Description  : Load Color Temperature data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadColorTempData(void)
{
    CEepromRead(_COLORTEMP_DATA_ADDRESS + 15 * GET_INPUTSOURCE_TYPE() + 3 * GET_COLOR_TEMP_TYPE(), 3, &stColorTempData.ColorTemp[_RED]);
}

//--------------------------------------------------
// Description  : Load default Color Temperature data
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadColorTempDataDefault(void)
{
    CEepromWrite(_COLORTEMP_DATA_ADDRESS, 15 * 3, &tEEPROM_COLORTEMP_DATA[0].ColorTemp9300Red);
    CEepromLoadColorTempData();
}

//----------------------------------------------------------------------------------------------------
/*
//--------------------------------------------------
// Description  : Load EDID data (MTV512)
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveEDIDData(void)
{
    CEepromWrite(_EDID0_ADDRESS, 128, &MCU_DDCRAM_0[0]);
    CEepromWrite(_EDID1_ADDRESS, 128, &MCU_DDCRAM_1[0]);
}
*/
//--------------------------------------------------
// Description  : Load EDID data (MTV512)
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadEDIDData(void)
{
#if((_MCU_TYPE == _MYSON_MTV512) || (_MCU_TYPE == _REALTEK_RTD2120))

    CEepromRead(_EDID0_ADDRESS, 128, &MCU_DDCRAM_0[0]);
    CEepromRead(_EDID1_ADDRESS, 128, &MCU_DDCRAM_1[0]);

#endif
}

//--------------------------------------------------
// Description  : Load EDID data (MTV512)
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadEDIDDataDefault(void)
{
#if((_MCU_TYPE == _MYSON_MTV512) || (_MCU_TYPE == _REALTEK_RTD2120))

    CEepromWrite(_EDID0_ADDRESS, 128, &tEDID_TABLE_VGA[0]);
    CEepromWrite(_EDID1_ADDRESS, 128, &tEDID_TABLE_DVI[0]);
    CEepromLoadEDIDData();

#endif
}


#endif  //End of #if(_MEMORY_LOCATION == _EEPROM)





//--------------------------------------------------------------------------------------------------------------------
//******************* Using Flash to replace external Eeprom *******************//
//--------------------------------------------------------------------------------------------------------------------




#if((_MCU_TYPE == _REALTEK_RTD2120) && (_MEMORY_LOCATION == _FLASH))


//--------------------------------------------------
// Description  : Eeprom check at firmware startup
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromStartupCheck(void)
{
    if(MCU_FLASH[(_END_PAGE - _START_PAGE + 2) * 1024 - 1] != _VERSION_CODE)
    {
        CEepromInitialFlash();
        CEepromLoadDefault();
    }
    else
    {
        if(!CEepromInitialFlashAddr())
        {
            CEepromInitialFlash();
            CEepromLoadDefault();
        }
        else
        {
            CEepromCheckLoadDefault();
            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];
    }

    CEepromStartLoadDefault();

    CEepromInitialModeData();
    CEepromInitialUserFIFOModeData();
    CEepromInitialCenterModeData();
    CEepromLoadSystemDataDefault();
    CEepromLoadOsdUserDataDefault();
    CEepromLoadAdcDataDefault();
    CEepromLoadBriConDataDefault();
    CEepromLoadColorTempDataDefault();
    CEepromLoadEDIDDataDefault();

    CEepromFinishLoadDefault();

    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  : Save mode setting data, such as FirstAuto,
//                HPosition, VPosition, Clock and Phase.
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromSaveModeData(BYTE ucMode)
{
    pFlashTemp[0] = (BYTE)(stModeUserData.FirstAuto << 7) | ucMode;
    pFlashTemp[1] = (BYTE)(stModeUserData.HPosition >> 8);
    pFlashTemp[2] = (BYTE)stModeUserData.HPosition;
    pFlashTemp[3] = (BYTE)(stModeUserData.VPosition >> 8);
    pFlashTemp[4] = (BYTE)stModeUserData.VPosition;
    pFlashTemp[5] = (BYTE)(stModeUserData.Clock >> 8);
    pFlashTemp[6] = (BYTE)stModeUserData.Clock;
    pFlashTemp[7] = stModeUserData.Phase;

    if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
        CEepromSaveFlashData(_PRESET, pFlashTemp);
    else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
        CEepromSaveFlashData(_USER, pFlashTemp);
}

//--------------------------------------------------
// Description  : Load mode setting data, such as FirstAuto,
//                HPosition, VPosition, Clock and Phase.
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadModeData(BYTE ucMode)
{
    BYTE page;

    if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
        page = _PRESET;
    else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
        page = _USER;

    if(CEepromLoadFlashData(page,ucMode,pFlashTemp))
    {
        stModeUserData.FirstAuto = (pFlashTemp[0] >> 7) & _BIT0;
        stModeUserData.HPosition = (pFlashTemp[1] << 8) | pFlashTemp[2];
        stModeUserData.VPosition = (pFlashTemp[3] << 8) | pFlashTemp[4];;
        stModeUserData.Clock = (pFlashTemp[5] << 8) | pFlashTemp[6];;          
        stModeUserData.Phase = pFlashTemp[7];        
    }
    else
    {
        stModeUserData.FirstAuto    = 0;
        stModeUserData.HPosition    = tINPUTMODE_PRESET_TABLE[ucMode].IHStartPos;
        stModeUserData.VPosition    = tINPUTMODE_PRESET_TABLE[ucMode].IVStartPos;
        stModeUserData.Clock        = tINPUTMODE_PRESET_TABLE[ucMode].IHTotal;
        stModeUserData.Phase        = 0;
    }
}

//--------------------------------------------------
// Description  : Initial mode setting data with defaults
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromInitialModeData(void)
{
    BYTE modecnt, i;

    for(modecnt=0;modecnt<_MAX_PRESET_MODE;modecnt++)
    {
        if(CEepromLoadFlashData(_PRESET,modecnt,pFlashTemp))
        {
            pFlashTemp[0] = modecnt;
            pFlashTemp[1] = (BYTE)(tINPUTMODE_PRESET_TABLE[modecnt].IHStartPos >> 8);
            pFlashTemp[2] = (BYTE)tINPUTMODE_PRESET_TABLE[modecnt].IHStartPos;
            pFlashTemp[3] = (BYTE)(tINPUTMODE_PRESET_TABLE[modecnt].IVStartPos>> 8);
            pFlashTemp[4] = (BYTE)tINPUTMODE_PRESET_TABLE[modecnt].IVStartPos;
            pFlashTemp[5] = (BYTE)(tINPUTMODE_PRESET_TABLE[modecnt].IHTotal >> 8);
            pFlashTemp[6] = (BYTE)tINPUTMODE_PRESET_TABLE[modecnt].IHTotal;
            pFlashTemp[7] = 0;
        
           CEepromSaveFlashData(_PRESET, pFlashTemp);
        }
    }

    for(modecnt=0;modecnt<16;modecnt++)
    {            
        if(CEepromLoadFlashData(_USER,modecnt,pFlashTemp))
        {
            pFlashTemp[0] = modecnt;       

            for(i=1;i<8;i++)
                pFlashTemp[i] = 0xff;
 
            CEepromSaveFlashData(_USER, pFlashTemp);
        }
    }
}

//--------------------------------------------------
// 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);

    pFlashTemp[0] = stSystemData.UserFIFOMode;
    pFlashTemp[1] = stUserFIFOMode.ModeNum;
    pFlashTemp[2] = (BYTE)(stUserFIFOMode.IHFreq >> 8);
    pFlashTemp[3] = (BYTE)stUserFIFOMode.IHFreq;
    pFlashTemp[4] = (BYTE)stUserFIFOMode.IVFreq;    
    pFlashTemp[5] = 0xff;
    pFlashTemp[6] = 0xff;
    pFlashTemp[7] = 0xff;
 
    CEepromSaveFlashData(_FIFO, pFlashTemp);
}

//--------------------------------------------------
// Description  : Load 4 sets of user FIFO mode data.
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromLoadUserFIFOModeData(BYTE ucNum, BYTE *pArray)
{
    BYTE cnt, i;

    for(cnt=ucNum*4;cnt<ucNum*4+4;cnt++)
    {
        if(CEepromLoadFlashData(_FIFO,cnt,pFlashTemp))
        {
            for(i=0;i<4;i++)
                pArray[(cnt & 0x03) * 4 + i] = pFlashTemp[i + 1];
        }
        else
        {
            for(i=0;i<4;i++)
                pArray[(cnt & 0x03) * 4 + i] = 0xff;
        }    
    }                
}

//--------------------------------------------------
// Description  : Initial user FIFO mode data with defaults
// Input Value  : None
// Output Value : None
//--------------------------------------------------
void CEepromInitialUserFIFOModeData(void)
{
    BYTE cnt, i;

    for(cnt=0;cnt<16;cnt++)
    {
        if(CEepromLoadFlashData(_FIFO,cnt,pFlashTemp))
        {
            pFlashTemp[0] = cnt;

            for(i=1;i<8;i++)
                pFlashTemp[i] = 0xff;

            CEepromSaveFlashData(_FIFO, pFlashTemp);
        }
    }
}

//--------------------------------------------------
// Description  : 
//                
// Input Value  : 
// Output Value : None
//--------------------------------------------------
void CEepromSaveCenterModeData(BYTE ucMode)
{
    BYTE page;

    if(GET_MODE_SEARCH_TYPE() == _PRESET_MODE_TYPE)
        page = _AUTO_PRESET;
    else if(GET_MODE_SEARCH_TYPE() == _USER_MODE_TYPE)
        page = _AUTO_USER;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -