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

📄 sync.c

📁 MST720-DEMO程序
💻 C
📖 第 1 页 / 共 4 页
字号:
/******************************************************************************
 Copyright (c) 2005 MStar Semiconductor, Inc.
 All rights reserved.

 [Module Name]: Sync.c
 [Date]:	16-Feb-2005
 [Comment]:
   For video input sync detect functions.
 [Reversion History]:
*******************************************************************************/

#define _SYNC_C_
/********************
* INCLUDE FILES     *
*********************/
#include "Project.h"
#include "TypeDef.h"
#include "Ms7X_reg.h"
#include "Global.h"
#include "Mcu_reg.h"
#include "PANEL.h"
#include "Debug.h"
#include "Ms_Rwreg.h"
#include "Misc.h"
#include "Sync.h"
#include "OSDMenu.h"
#include "Ms_Func.h"
#include "msACE.h"
#if ((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
#include "Maria2_dsp_lib.h"
#endif	// ENABLE_VD_DSP


/**********************
* FUNCTION PROTOTYPES *
***********************/
#if !DEMODULELATOR_MODE
void mstSyncDemodulationModeSet(BIT bMode)
{
	
	mstWriteByte(GEN_00_REGBK, REGBANKVCF);		// Switch to Bank3 VCF
	
	if(bMode)
		mstWriteByte(BK3_11_COMBCFGB, 0x20);		// Set demodulation to mode 1
	else
		mstWriteByte(BK3_11_COMBCFGB, 0x00);		// Set demodulation to mode 0

	mstWriteByte(GEN_00_REGBK, REGBANKSCALER);		//Switch to Bank0 Scaler
	
}
#endif	// !DEMODULELATOR_MODE

void mstSyncSourceSwitch(void)
{
	mstPowerManagement(PM_POWER_ON);
	mstEnableMute();

#if (MARIA_TYPE_SEL == MARIA_2)
//-------------- seven 051018----------------------------
	mstWriteByte(GEN_00_REGBK, REGBANKADC); 
	if(tOSDSourcSELSequence[Display.ucSourceSEL]==VGA)
	{
		mstWriteByte(BK1_55,0xC0);
//		msACEPCYUV2RGBCtl(1);
	}
	else
	{
		mstWriteByte(BK1_55,0x00);
//		msACEPCYUV2RGBCtl(0);
	}
	mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
//-------------------------------------------------------
#endif		
	
	switch (tOSDSourcSELSequence[Display.ucSourceSEL])
	{
		case CVBS1:
			
		#if RS232DBG
			sysWriteString("CVBS 1 IN \x0d\x0a");
		#endif	// RS232DBG
		
			mstWriteDataTable(tSyncCVBSTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_18_CALEN, 0x00);		// Disable YCbCr/YPbPr whitw balance
		#if ((BOARD_TYPE_SEL == BD_DEMO_7985M_IDP)||(BOARD_TYPE_SEL == BD_DEMO_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7985M_IDP)||(BOARD_TYPE_SEL == BD_EXMCU_7988M_IAP))//kevin
			mstWriteByte(BK1_2F_ADC_MUX, 0x10);		// select CVBS1 input
			mstWriteByte(BK1_90_SARADC_CTRL, (mstReadByte(BK1_90_SARADC_CTRL)&~_BIT3));
		#else
			mstWriteByte(BK1_2F_ADC_MUX, 0x00);		// select CVBS1 input
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
		
		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK2_1A_SVD_EN, 0x40);		// SVD_EN[7] (CVBS)
		#else
			mstWriteByte(BK2_1A_SVD_EN, 0x07);		// SVD_EN[7] (CVBS)
		#endif
		
		#if (!DEMODULELATOR_MODE && FSC_8X && (MARIA_TYPE_SEL == MARIA_1))
			mstWriteByte(BK2_2D_VDFD_CTRL3, 0x80);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_1)
			mstWriteByte(BK2_69_SRC_CTRL1, 0x82);
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler
		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x20);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK3_A1, 0x02);		// for SECAM input
		#else
			mstWriteByte(BK3_40_TIMDETCFGA, mstReadByte(BK3_40_TIMDETCFGA) | _BIT5);
//			mstWriteByte(BK3_65_REG_SAT, 0x80);		// (65h ORG:0x80)
			mstWriteByte(BK3_4C_DEGDETCFG, 0x00);
		#endif

			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);	// select register bank scaler
			mstWriteByte(BK0_04_ISCTRL, 0x10);

			mstResetVedioDecoder();				// Reset vedio decoder
			
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
			mstSetContrast(Display.ucVedioContrast);
			break;
			
		case CVBS2:
			
		#if RS232DBG
			sysWriteString("CVBS 2 IN \x0d\x0a");
		#endif	// RS232DBG
		
			mstWriteDataTable(tSyncCVBSTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_18_CALEN, 0x00);		// Disable YCbCr/YPbPr whitw balance
		#if ((BOARD_TYPE_SEL == BD_DEMO_7985M_IDP)||(BOARD_TYPE_SEL == BD_DEMO_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7985M_IDP)||(BOARD_TYPE_SEL == BD_EXMCU_7988M_IAP))//kevin
			mstWriteByte(BK1_2F_ADC_MUX, 0x10);		// select CVBS2 input
			mstWriteByte(BK1_90_SARADC_CTRL, (mstReadByte(BK1_90_SARADC_CTRL)|_BIT3));
		#else
			mstWriteByte(BK1_2F_ADC_MUX, 0x08);
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
		
		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK2_1A_SVD_EN, 0x40);		// SVD_EN[7] (CVBS)
		#else
			mstWriteByte(BK2_1A_SVD_EN, 0x07);		// SVD_EN[7] (CVBS)
		#endif
		
		#if (!DEMODULELATOR_MODE && FSC_8X && (MARIA_TYPE_SEL == MARIA_1))
			mstWriteByte(BK2_2D_VDFD_CTRL3, 0x80);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_1)
			mstWriteByte(BK2_69_SRC_CTRL1, 0x82);
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler
		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x20);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK3_A1, 0x02);		// for SECAM input
		#else
			mstWriteByte(BK3_40_TIMDETCFGA, mstReadByte(BK3_40_TIMDETCFGA) | _BIT5);
//			mstWriteByte(BK3_65_REG_SAT, 0x80);		// (65h ORG:0x80)
			mstWriteByte(BK3_4C_DEGDETCFG, 0x00);
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);	// select register bank scaler
			mstWriteByte(BK0_04_ISCTRL, 0x10);
			
			mstResetVedioDecoder();				// Reset vedio decoder
			
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
			mstSetContrast(Display.ucVedioContrast);
			break;

		case SVIDEO1:
			
		#if RS232DBG
			sysWriteString("SVIDEO 1 IN \x0d\x0a");
		#endif	// RS232DBG
		
			mstWriteDataTable(tSyncCVBSTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_18_CALEN, 0x00);		// Disable YCbCr/YPbPr whitw balance
		#if ((BOARD_TYPE_SEL == BD_DEMO_7985M_IDP)||(BOARD_TYPE_SEL == BD_DEMO_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7988M_IAP)||(BOARD_TYPE_SEL == BD_SOCKET_7985M_IDP)||(BOARD_TYPE_SEL == BD_EXMCU_7988M_IAP))//kevin
			mstWriteByte(BK1_2F_ADC_MUX, 0x10);		// select S-Video input
			mstWriteByte(BK1_90_SARADC_CTRL, (mstReadByte(BK1_90_SARADC_CTRL)&~_BIT3));
		#else
			mstWriteByte(BK1_2F_ADC_MUX, 0x10);
		#endif

			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
		
		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK2_1A_SVD_EN, 0xC0);		// SVD_EN[7] (CVBS)
		#else
			mstWriteByte(BK2_1A_SVD_EN, 0x07);		// SVD_EN[7] (CVBS)
		#endif

		#if (!DEMODULELATOR_MODE && FSC_8X && (MARIA_TYPE_SEL == MARIA_1))
			mstWriteByte(BK2_2D_VDFD_CTRL3, 0x82);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_1)
			mstWriteByte(BK2_69_SRC_CTRL1, 0x04);
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler
		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x20);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK3_A1, 0x0A);		// for SECAM input
		#else
			mstWriteByte(BK3_40_TIMDETCFGA, mstReadByte(BK3_40_TIMDETCFGA) & ~_BIT5);
			mstWriteByte(BK3_4C_DEGDETCFG, 0x20);
//			mstWriteByte(BK3_65_REG_SAT, 0x80);		// jordan0609
		#endif
			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);	// select register bank scaler
			mstWriteByte(BK0_04_ISCTRL, 0x01);

			mstResetVedioDecoder();				// Reset vedio decoder
			
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
			mstSetContrast(Display.ucVedioContrast);
			break;

		case SVIDEO2:
	
		#if RS232DBG
			sysWriteString("SVIDEO 2 IN \x0d\x0a");
		#endif	// RS232DBG

			mstWriteDataTable(tSyncCVBSTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_18_CALEN, 0x00);		// Disable YCbCr/YPbPr whitw balance
			mstWriteByte(BK1_2F_ADC_MUX, 0x18);
			
			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
			
		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK2_1A_SVD_EN, 0xC0);		// SVD_EN[7] (CVBS)
		#else
			mstWriteByte(BK2_1A_SVD_EN, 0x07);		// SVD_EN[7] (CVBS)
		#endif
		
		#if (!DEMODULELATOR_MODE && FSC_8X && (MARIA_TYPE_SEL == MARIA_1))
			mstWriteByte(BK2_2D_VDFD_CTRL3, 0x82);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_1)
			mstWriteByte(BK2_69_SRC_CTRL1, 0x04);
		#endif
			
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler
		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x20);
		#endif

		#if (MARIA_TYPE_SEL == MARIA_2)
			mstWriteByte(BK3_A1, 0x0A);		// for SECAM input
		#else
			mstWriteByte(BK3_40_TIMDETCFGA, mstReadByte(BK3_40_TIMDETCFGA) & ~_BIT5);
			mstWriteByte(BK3_4C_DEGDETCFG, 0x20);
//			mstWriteByte(BK3_65_REG_SAT, 0x80);		// jordan0609
		#endif
		
			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);	// select register bank scaler
			mstWriteByte(BK0_04_ISCTRL, 0x01);

			mstResetVedioDecoder();				// Reset vedio decoder
			
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
			mstSetContrast(Display.ucVedioContrast);
			break;

		case VGA:

		#if RS232DBG
			sysWriteString("VGA IN \x0d\x0a");
		#endif	// RS232DBG
		
			mstWriteDataTable(tSyncRGBTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_2F_ADC_MUX, 0x20);
			mstWriteByte(BK1_18_CALEN, 0xD8);		// seven 051018 Disable YCbCr/YPbPr whitw balance
			
			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
			mstWriteByte(BK2_1A_SVD_EN, 0x00);
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler

		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x00);
		#endif	
			mstSetMACE(0);
			
		#if((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
			g_bEnableVDDSP = 0;
			VD_DSP_Ctl(FALSE);
		#endif
		
			mstSetContrast(Display.ucPcContrast);
			mstSetVGAGainOffset();
			break;


		case YPBPR:

		#if RS232DBG
			sysWriteString("YPbPr IN \x0d\x0a");
		#endif	// RS232DBG
			
			mstWriteDataTable(tSyncYCbCrTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_2F_ADC_MUX, 0x28);		// Select YCbCr/YPbPr input
			mstWriteByte(BK1_18_CALEN, 0x18);		// Enable YCbCr/YPbPr whitw balance
			
			mstWriteByte(GEN_00_REGBK, REGBANKVFE);
			mstWriteByte(BK2_1A_SVD_EN, 0x00);
			
			mstWriteByte(GEN_00_REGBK, REGBANKVCF);	// select register bank scaler
		#if DEMODULELATOR_MODE
			mstWriteByte(BK3_11_COMBCFGB, 0x00);
		#endif
			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
		#if((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
			g_bEnableVDDSP = 0;
			VD_DSP_Ctl(FALSE);
		#endif
			mstSetContrast(Display.ucVedioContrast);
			mstSetYPbPrGainOffset();
			break;
			
		case CCIR656:

		#if RS232DBG
			sysWriteString("CCIR656 IN \x0d\x0a");
		#endif	// RS232DBG
		
			mstWriteDataTable(tSyncCCIRTable);
			mstWriteByte(GEN_00_REGBK, REGBANKADC);
			mstWriteByte(BK1_18_CALEN, 0x00);		// Disable YCbCr/YPbPr whitw balance
			mstWriteByte(GEN_00_REGBK, REGBANKSCALER);

			mstWriteByte(BK0_E2_SWRST0, 0x20);		// Reset Digital input port
			miscDelay1ms(20);
			mstWriteByte(BK0_E2_SWRST0, 0x00);
			
		#if USE_ALLMACEOSD
			mstSetMACE(1);
		#else
			mstSetMACE(Display.ucMACE);
		#endif	//USE_ALLMACEOSD
		#if((MARIA_TYPE_SEL == MARIA_2) && ENABLE_VD_DSP)
			g_bEnableVDDSP = 0;
			VD_DSP_Ctl(FALSE);
		#endif
			mstSetContrast(Display.ucVedioContrast);
			break;

		default:
			break;
	}
	mstWriteByte(BK0_27_OPL_SET2, mstReadByte(BK0_27_OPL_SET2));	// For short line tune
	g_ucSystemFlag |= INPUT_TIMING_CHANGE_FLAG;

⌨️ 快捷键说明

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