📄 userpref.c
字号:
/******************************************************************************
Copyright (c) 2003 MStar Semiconductor, Inc.
All rights reserved.
[Module Name]: UserPref.c
[Date]: 18-Dec-2003
[Comment]:
User preference subroutines.
[Reversion History]:
*******************************************************************************/
#define _USERPREF_C_
// System
// Common
#include "define.h"
#include "mcu.h"
#include "userdef.h"
// External
#include "common.h"
#include "global.h"
#include "ram.h"
#include "board.h"
#include "uart.h"
#include "i2c.h"
// Internal
#include "userpref.h"
#ifdef EEPROM_DEBUG
#define EE_PUTSTR(str) putstr(str)
#define EE_PRINTF(str,val) printf(str,val)
#else
#define EE_PUTSTR(str)
#define EE_PRINTF(str,val)
#endif
/*
WORD usrCalCheckSum(BYTE* pBuf, BYTE ucBufLen)
{
XDATA WORD CheckSum;
ucBufLen -= 2;
CheckSum = 0;
do
{
CheckSum += pBuf[ucBufLen - 1];
ucBufLen--;
}while (ucBufLen);
return CheckSum;
}
*/
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrCheckEEPROM
//
// <Description>: Check EEPROM ID and update.
///////////////////////////////////////////////////////////////////////////////
void usrCheckEEPROM(void)
{
BOOL bInitEEPROM = FALSE;
// Test EEPROM 1
#if(Type_Select==Type_9211)
s_I2CSel=MCU_RAM;
rmWriteByte(RM_TEST_ID_ADDRESS, 0xD9);//0x55);
if (0xD9 != rmReadByte(RM_TEST_ID_ADDRESS))
{
EE_PUTSTR("\r\nEEPROM test1 failed!");
bInitEEPROM = TRUE;
}
// Test EEPROM 2
// s_I2CSel=TV_RAM;
s_I2CSel=MCU_RAM;
rmWriteByte(RM_TEST_ID_ADDRESS, 0xD9);//0xAA);
if (0xD9 != rmReadByte(RM_TEST_ID_ADDRESS))
{
EE_PUTSTR("\r\nEEPROM test2 failed!");
bInitEEPROM = TRUE;
}
#else
s_I2CSel=MCU_RAM;
rmWriteByte( RM_TEST_ID_ADDRESS, 0x55 );
if ( 0x55 != rmReadByte( RM_TEST_ID_ADDRESS ) )
{
//EE_PUTSTR("\r\n NVM fail1");
bInitEEPROM = TRUE;
}
// Test EEPROM 2
s_I2CSel=MCU_RAM;
rmWriteByte( RM_TEST_ID_ADDRESS, 0xAA );
if ( 0xAA != rmReadByte( RM_TEST_ID_ADDRESS ) )
{
//EE_PUTSTR("\r\n NVM fail2");
bInitEEPROM = TRUE;
}
//EE_PUTSTR("\r\nEEPROM test OK!");
// Check EEPROM ...
if ( rmReadByte( RM_EEPROM_ID_ADDRESS ) != USR_EEPROM_ID ) // check EEPROM ID
{
//EE_PUTSTR("\r\n NVM ID Invalid!");
bInitEEPROM = TRUE;
}
#endif
if (bInitEEPROM) // EEPROM need init
{
putstr( "\r\n CHECK EER!" );
usrInitAllSetting(); // initialize All setting
}
else
{
putstr( "\r\n CHECK OK!" );
SetLed_OK();
SetLed_READING();
SetLed_WRITING();
}
}
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrInitAllSetting
//
// <Description>: Initialize All setting.
///////////////////////////////////////////////////////////////////////////////
void usrInitAllSetting(void)
{
ClrLed_OK();
ClrLed_READING();
ClrLed_WRITING();
}
///************************************
//Type_Select=Type_9211
//***********************************
#if(Type_Select==Type_9211)
void usrInitAdcSetting()
{
usrInitAdcPCSetting(); // initialize PC ADC setting
usrInitAdcVIDEONTSCSetting(); // initialize VIDEO ADC setting for NTSC
usrInitAdcVIDEOPALSetting(); // initialize VIDEO ADC setting for PAL
usrInitAdcYUVNTSCSetting(); // initialize YUV ADC setting
usrInitAdcYUV720PSetting(); // power add 20041115
usrInitAdcYUVOtherSetting(); // initialize YUV ADC setting
}
void usrLoadAdcSetting()
{
usrLoadAdcPCSetting(); // initialize PC ADC setting
usrLoadAdcVIDEONTSCSetting(); // initialize VIDEO ADC setting for NTSC
usrLoadAdcVIDEOPALSetting(); // initialize VIDEO ADC setting for PAL
usrLoadAdcYUVNTSCSetting(); // initialize YUV ADC setting
usrLoadAdcYUV720PSetting(); // power add 20041115
usrLoadAdcYUVOtherSetting(); // initialize YUV ADC setting
}
void usrInitColorTempSetting()
{
usrInitPCColorSetting(); // initialize color setting
usrInitVideoSetting(); // initialize video setting
usrInitVideoColorTempSetting(); // initialize video temperature setting
}
void usrInitVariableFromEEPROM(void)
{
// usrInitFactorySetting();
usrInitSystemSetting(); // initialize system setting
usrInitAdcSetting();
usrInitColorTempSetting();
usrInitPictureModeData(); // initialize video picture mode data
usrInitSoundSetting(); // initialize sound setting
usrInitSoundModeData(); // initialize sound mode data
usrInitCRTDeflectionStaticSetting(); // initialize CRT-Deflection Setting
usrInitCRTDeflectionDynamicSetting(); // initialize CRT-Deflection Setting
// usrInitCRTVideoAmpSetting(); // initialize CRT-Video Amplifier Setting
usrInitVideoDecoder();
DevVDPatchInit(); // add power 20041209
usrInitNonLinearAdjustCurve(); // initialize VIDEO non-linear curve setting
usrInitAllPCModeSetting(); // initialize all PC mode setting
usrInitAllYUVModeSetting(); // initialize all YUV mode setting
tvInitSetting(); // initialize TV driver
#if 0//Adjust_SubLuma
// usrInitSubLumaSetting();
usrUpDateContCurveWithSubLuma();
usrUpDateBriCurveWithSubLuma();
#endif
userInitOtherSetting(); // power 20041024
}
void usrLoadVariableFromEEPROM(void)
{
// usrLoadFactorySetting();
usrLoadSystemSetting(); // load system setting // ADC dynami
usrLoadAdcSetting();
////**** usrInitColorTempSetting
usrLoadPCColorSetting(); // load color setting
// usrLoadPCColorTempSetting(); // load color temperature setting //must after PC color setting
usrLoadVideoSetting(); // load video setting
usrLoadVideoColorTempSetting(); // load video temperature setting //must after video setting
usrLoadPictureModeData(); // load video picture mode data
usrLoadSoundSetting(); // load sound setting
usrLoadSoundModeData(); // load sound mode data //must after sound setting
usrLoadCRTDeflectionStaticSetting(); // load CRT-Deflection static Setting
usrLoadCRTDeflectionDynamicSetting(); //Load CRT-Deflection Setting
// usrLoadCRTVideoAmpSetting(); // load CRT-Video Amplifier Setting
// usrLoadVideoDecoder();
usrLoadNonLinearAdjustCurve(); // load VIDEO non-linear curve setting
usrLoadAllPCModeSetting(); // Load all PC mode setting
usrLoadAllYUVModeSetting(); // Load all YUV mode setting
tvLoadSetting(); // load TV driver
#if 0//Adjust_SubLuma
usrLoadSubLumaSetting();
usrUpDateContCurveWithSubLuma();
usrUpDateBriCurveWithSubLuma();
#endif
userLoadOtherSetting(); // tecon
}
void userInitOtherSetting(void)
{
s_I2CSel=MCU_RAM;
BOARDCHECKSUMH=rmReadByte(RM_TEST_ID_ADDRESS);
BOARDCHECKSUML=rmReadByte(RM_EEPROM_ID_ADDRESS);
#if 1//USE_CALENDAR
INIT_YEAR=rmReadByte(RM_EEPROM_CALENDAR); // year
INIT_MONTH=rmReadByte(RM_EEPROM_CALENDAR+1); // month
#endif
INIT_TIMER_TOLERANCE=rmReadByte(RM_TIMER_TOLERANCE);
// USE_LOCK_PSW=1;
rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
s_I2CSel=TV_RAM;
rmWriteByte(RM_TEST_ID_ADDRESS, BOARDCHECKSUMH);
rmWriteByte(RM_EEPROM_ID_ADDRESS, BOARDCHECKSUML);
rmWriteByte(RM_Factory_Option_ADDRESS,0x00);
#if 1//USE_CALENDAR
rmWriteByte(RM_EEPROM_CALENDAR,INIT_YEAR); // year
rmWriteByte(RM_EEPROM_CALENDAR+1,INIT_MONTH); // month
#endif
rmWriteByte(RM_TIMER_TOLERANCE,INIT_TIMER_TOLERANCE);
// USE_LOCK_PSW=1;
rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
}
void userLoadOtherSetting(void)
{
s_I2CSel=TV_RAM;
BOARDCHECKSUMH=rmReadByte(RM_TEST_ID_ADDRESS);
BOARDCHECKSUML=rmReadByte(RM_EEPROM_ID_ADDRESS);
#if 1//USE_CALENDAR
INIT_YEAR=rmReadByte(RM_EEPROM_CALENDAR); // year
INIT_MONTH=rmReadByte(RM_EEPROM_CALENDAR+1); // month
#endif
INIT_TIMER_TOLERANCE=rmReadByte(RM_TIMER_TOLERANCE);
// USE_LOCK_PSW=1;
rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
s_I2CSel=MCU_RAM;
rmWriteByte(RM_TEST_ID_ADDRESS, BOARDCHECKSUMH);
rmWriteByte(RM_EEPROM_ID_ADDRESS, BOARDCHECKSUML);
rmWriteByte(RM_Factory_Option_ADDRESS,0x00);
#if 1//USE_CALENDAR
rmWriteByte(RM_EEPROM_CALENDAR,INIT_YEAR); // year
rmWriteByte(RM_EEPROM_CALENDAR+1,INIT_MONTH); // month
#endif
rmWriteByte(RM_TIMER_TOLERANCE,INIT_TIMER_TOLERANCE);
// USE_LOCK_PSW=1;
rmBurstWriteBytes(RM_LOCKSETING_ADDRESS, (BYTE *)&g_LockSetting, SIZE_LOCKSETING);
}
void usrInitSystemSetting(void)
{
s_I2CSel=MCU_RAM;
rmBurstReadBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
s_I2CSel=TV_RAM;
rmBurstWriteBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
}
///////////////////////////////////////////////////////////////////////////////
// <Function>: usrLoadSystemSetting
//
// <Description>: Load system setting.
///////////////////////////////////////////////////////////////////////////////
void usrLoadSystemSetting(void)
{
s_I2CSel=TV_RAM;
rmBurstReadBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
s_I2CSel=MCU_RAM;
rmBurstWriteBytes(RM_SYS_SETTING_ADDRESS, (BYTE *)&g_SysSetting, SIZE_SYS_SETTING);
}
void usrInitAdcPCSetting(void)
{
s_I2CSel=MCU_RAM;
rmBurstReadBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
s_I2CSel=TV_RAM;
rmBurstWriteBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}
void usrLoadAdcPCSetting(void)
{
s_I2CSel=TV_RAM;
rmBurstReadBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
s_I2CSel=MCU_RAM;
rmBurstWriteBytes(RM_ADC_PC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}
void usrInitAdcVIDEONTSCSetting(void)
{
s_I2CSel=MCU_RAM;
rmBurstReadBytes(RM_ADC_VIDEO_NTSC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
s_I2CSel=TV_RAM;
rmBurstWriteBytes(RM_ADC_VIDEO_NTSC_SETTING_ADDRESS, (BYTE *)&g_AdcSetting, SIZE_ADC_SETTING);
}
void usrLoadAdcVIDEONTSCSetting(void)
{
s_I2CSel=TV_RAM;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -