📄 mst705Ȧ
字号:
msWriteByte(BK1_94_SAR_CH1_UPB, 0x3F);
msWriteByte(BK1_95_SAR_CH1_LOB, 0x05);
msWriteByte(BK1_96_SAR_CH2_UPB, 0x3F);
msWriteByte(BK1_97_SAR_CH2_LOB, 0x00);
msWriteByte(BK1_98_SAR_CH3_UPB, 0x3F);
msWriteByte(BK1_99_SAR_CH3_LOB, 0x00);
msWriteByte(BK1_7B_TERM_SEL, BK1_7B_TERM_SEL_VALUE);
msWriteByte(BK1_7C_CROING, BK1_7C_CROING_VALUE);
msWriteRegsTbl(tInitializeVFE);
msWriteRegsTbl(tInitializeVCE);
#if (CCFL_FUNCTION)
msWriteRegsTbl(tInitializeCCFL);
#endif
#if (PANEL_LVDS)
msWriteRegsTbl(tInitializeLVDS);
#endif
msWriteByte(BK0_00_REGBK, REG_BANK2_VD);
msWriteByteMask(BK2_9A_SYNC_CTRL1, 0x01, 0x01);
msWriteBit(BK2_38_VSTROBE_LIMIT, HIBYTE(INIT_MSVD_TV_BRIGHTNESS)&0x10,_BIT6);
msWriteByte(BK2_3A,LOBYTE(INIT_MSVD_TV_BRIGHTNESS));
msWriteByte(BK0_00_REGBK, REG_BANK3_COMB);
if( VD_Type == MARIA2_D )
msWriteByte(BK3_B9, 0x01);
else if( VD_Type >= MARIA2_E )
msWriteByte(BK3_B9, 0x05);
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
msWriteBit(BK0_F7_TEST_BUS_SELECT, 1,_BIT6);
msWriteByte(BK0_F8_TEST_MODE, 0);
msWriteByte(BK0_FF_BOUNDING_MISC, 0x02 );
msWriteBit(BK0_F7_TEST_BUS_SELECT, 0,_BIT6);
M9initAGC_U01();
#if FUN_MGD
msInitializeChip_MGD();
#endif
msWriteByte(BK0_00_REGBK, REG_BANK7_CHIPTOP);
//#if(MARIA9_VERSION==MARIA9_B)
msWriteByte(BK7_04_CHIPTOP, 0x1A); //Set SAR clock divider as 16=> 27MHz/16 is SAR clock
msWriteByte(BK7_60_CHIPTOP, 0x80); //Set as SAR freerun mode
//#endif
#if(PANEL_DIGITAL_TCON||PANEL_TTL||PANEL_LVDS)
msWriteByte(BK7_09_CHIPTOP, 0x00);
msWriteByte(BK7_0A_CHIPTOP, 0x00);
msWriteByte(BK7_0B_CHIPTOP, 0x00);
msWriteByte(BK7_0C_CHIPTOP, 0x00);
msWriteByte(BK7_0D_CHIPTOP, 0x00);
msWriteByte(BK7_0E_CHIPTOP, 0x00);
msWriteByte(BK7_0F_CHIPTOP, 0x00);
#endif
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
}
void OSDGammaInit(void)
{
Osd_InitOSD();
msInitGamma(); // programming gamma table
}
//*******************************************************************
// Function Name: msSetupInputPort
//
// Decscription: setup input port registers for
// Analog/Digital/YCbCr(Video) input
//
// caller: mSar_WriteByte(), msReadByte() in ms_rwreg.c
// callee: msMonitorInputTiming() in detect.c
//*******************************************************************
#if (MST_CHIP==MST702||MST_CHIP==MST703||MST_CHIP==MST705)
void SwitchInputPort(InputPortType PortSwitch)
{
BYTE bk6_03_mask;
switch(PortSwitch)
{
case Input_TV:
bk6_03_mask=TV_RealPortSet;
break;
case Input_CVBS1:
bk6_03_mask=CVBS1_RealPortSet;
break;
case Input_CVBS2:
bk6_03_mask=CVBS2_RealPortSet;
break;
case Input_CVBS3:
bk6_03_mask=CVBS3_RealPortSet;
break;
case Input_CVBS4:
bk6_03_mask=CVBS4_RealPortSet;
break;
case Input_SVIDEO1:
bk6_03_mask=SVIDEO1_RealPortSet;
break;
case Input_SVIDEO2:
bk6_03_mask=SVIDEO2_RealPortSet;
break;
#if YPBPR_ENABLE
case Input_YPBPR:
bk6_03_mask=YPbPr_RealPortSet;
break;
#endif
default:
break;
}
#if VGA_ENABLE
if(PortSwitch==Input_VGA)
msWriteRegsTbl(tPCFCC);
else
#endif
{
if(IsVideoPortInUse())
{
msWriteRegsTbl(tVideoFCC); // Nelson 2006-03-25 Add
if(PortSwitch==Input_TV)
msWriteRegsTbl(t_TVInitializeFCC);
else if(IsSVideoInUse())
msWriteRegsTbl(t_SVInitializeFCC);
else
msWriteRegsTbl(t_AVInitializeFCC);
}
}
msWriteByte(BK0_00_REGBK, REG_BANK6s00_ADCATOP);
msWrite2BytesMask_16bitADDR(BK6s00_03h_ADC_ATOP,bk6_03_mask,0xFF);
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
}
#endif
void SetChromaMode(void)
{
BYTE uctemp, temp2;
#if TV_ENABLE
if(IsTVInUse())
{
#if TV_SYSTEM==TV_NTSC
uctemp=CHROMA_NTSC;
#else
uctemp=((g_TVChSetting.TvCurChannelMisc&ColorSysMask)>>4)%CHROMA_NUMS;
#endif
devSetSWF(((g_TVChSetting.TvCurChannelMisc&SoundSysMask)%TV_SOUND_NUMS));
}
else
#endif
uctemp=g_VideoSetting.VideoColorSys%CHROMA_NUMS;
msWriteByte(BK0_00_REGBK, REG_BANK3_COMB);
switch (uctemp)
{
case CHROMA_SECAM:
case CHROMA_AUTO:
temp2=0;
break;
case CHROMA_PAL:
temp2=0x02;
break;
case CHROMA_NTSC:
default:
temp2=0x01;
break;
}
msWriteByteMask(BK3_1C_CTRLSWCH, temp2, 0x03);
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
}
void msLineBufferDelayCtl( BOOL bInterlace )
{
BYTE ucBank,ucTmp=0;
ucBank = msReadByte( BK0_00_REGBK);
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER );
if(bInterlace)
ucTmp = 0x10;
else
ucTmp = 0x20;
msWriteByte(BK0_0F_ASCTRL, ucTmp );
msWriteByte(BK0_00_REGBK, ucBank );
}
///////////////////////////////////////////////////////////////////////////////
// <Function>: msSetInterrupt
//
// <Description>: Set chip interrrupt.
//
// <Parameter>: - <Flow> - <Description>
//-----------------------------------------------------------------------------
// IntSel - In - interrupt setting
///////////////////////////////////////////////////////////////////////////////
void msSetInterrupt(msInterruptType IntSel)
{
BYTE ucBank;
ucBank = msReadByte( BK0_00_REGBK);
msWriteByte(BK0_00_REGBK,REG_BANK_SCALER);
msWriteByte(BK0_1D_INTENC, 0x00); // Interrupt enable control byte C
msWriteByte(BK0_1F_INTEND, 0x00); // Interrupt enable control byte D
switch( IntSel )
{
case INTERRUPT_PC:
msWriteByte(BK0_1F_INTEND, 0x0E); // V change,H loss,V loss
break;
case INTERRUPT_YPBPR:
msWriteByte(BK0_1F_INTEND, 0x06); // H loss,V loss
break;
case INTERRUPT_INPUT_VSYNC:
msWriteByte(BK0_1D_INTENC, 0x40); // H loss,V loss
break;
default:
break;
}
msWriteByte(BK0_00_REGBK, ucBank);
}
void ChipPowerUpcontrol(void)
{
BYTE vbk0_e0,vbk0_e1,vbk1_31,vbk1_32,ucBank;
ucBank=msReadByte(BK0_00_REGBK);
if( IsCVBSInUse())
{
vbk0_e0=0x80;
vbk0_e1=0x1C;
vbk1_31=0x24;
vbk1_32=0x76;
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
msWrite2BytesMask_16bitADDR(BK6s00_04h_ADC_ATOP,0/*0x0200*/,0x7FFF);
msWrite2BytesMask_16bitADDR(BK6s00_05h_ADC_ATOP,0x0,0x0007);
}
else if(IsSVideoInUse())
{
vbk0_e0=0x90;
vbk0_e1=0x18;
vbk1_31=0x20;
vbk1_32=0x34;
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
msWrite2BytesMask_16bitADDR(BK6s00_04h_ADC_ATOP,0/*0x0608*/,0x7FFF);
msWrite2BytesMask_16bitADDR(BK6s00_05h_ADC_ATOP,0/*0x1*/,0x0007);
}
#if CCIR656_ENABLE
else if(IsCCIR656InUse())
{
vbk0_e0=0xB0;
vbk0_e1=0x19;
vbk1_31=0x3e;
vbk1_32=0xFF;
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
msWrite2BytesMask_16bitADDR(BK6s00_04h_ADC_ATOP,0x0F68,0x7FFF);
msWrite2BytesMask_16bitADDR(BK6s00_05h_ADC_ATOP,0x5,0x0007);
}
#endif
#if VGA_ENABLE
else if(IsVGAInUse())
{
vbk0_e0=0xb0;
vbk0_e1=0x11;
vbk1_31=0x00;
vbk1_32=0x04;
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
msWrite2BytesMask_16bitADDR(BK6s00_04h_ADC_ATOP,0,0x7FFF);
msWrite2BytesMask_16bitADDR(BK6s00_05h_ADC_ATOP,0x0,0x0007);
}
#endif
#if YPBPR_ENABLE
else if(IsYPbPrInUse())
{
vbk0_e0=0xb0;
vbk0_e1=0x11;
vbk1_31=0x00;
vbk1_32=0x04;
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
msWrite2BytesMask_16bitADDR(BK6s00_04h_ADC_ATOP,0,0xffff);
msWrite2BytesMask_16bitADDR(BK6s00_05h_ADC_ATOP,0x0,0xffff);
}
#endif
msWriteByte(BK0_00_REGBK, REG_BANK_SCALER); // switch to Bank 1
msWriteByte(BK0_E0_PDMD0, vbk0_e0);
msWriteByte(BK0_E1_PDMD1, vbk0_e1);
Delay1ms(5);
msWriteByte(BK0_00_REGBK, REG_BANK1_ADC_ACE_MCU); // switch to Bank 1
msWriteByte(BK1_31, vbk1_31);
msWriteByte(BK1_32, vbk1_32);
msWriteByte(BK0_00_REGBK, ucBank);
}
void msNLCCurveInit(void)
{
if(IsSVideoInUse())
{
g_NLCContrast.X0 = INIT_SV_CONTRAST_X0;
g_NLCContrast.X1 = INIT_SV_CONTRAST_X1;
g_NLCContrast.X2 = INIT_SV_CONTRAST_X2;
g_NLCContrast.X3 = INIT_SV_CONTRAST_X3;
g_NLCContrast.X4 = INIT_SV_CONTRAST_X4;
g_NLCBrightness.X0 = INIT_SV_BRIGHTNESS_X0;
g_NLCBrightness.X1 = INIT_SV_BRIGHTNESS_X1;
g_NLCBrightness.X2 = INIT_SV_BRIGHTNESS_X2;
g_NLCBrightness.X3 = INIT_SV_BRIGHTNESS_X3;
g_NLCBrightness.X4 = INIT_SV_BRIGHTNESS_X4;
g_NLCSaturation.X0 = INIT_SV_SATURATION_X0;
g_NLCSaturation.X1 = INIT_SV_SATURATION_X1;
g_NLCSaturation.X2 = INIT_SV_SATURATION_X2;
g_NLCSaturation.X3 = INIT_SV_SATURATION_X3;
g_NLCSaturation.X4 = INIT_SV_SATURATION_X4;
}
#if VGA_ENABLE
else if(IsVGAInUse())
{
g_NLCContrast.X0 = INIT_VGA_CONTRAST_X0;
g_NLCContrast.X1 = INIT_VGA_CONTRAST_X1;
g_NLCContrast.X2 = INIT_VGA_CONTRAST_X2;
g_NLCContrast.X3 = INIT_VGA_CONTRAST_X3;
g_NLCContrast.X4 = INIT_VGA_CONTRAST_X4;
g_NLCBrightness.X0 = INIT_VGA_BRIGHTNESS_X0;
g_NLCBrightness.X1 = INIT_VGA_BRIGHTNESS_X1;
g_NLCBrightness.X2 = INIT_VGA_BRIGHTNESS_X2;
g_NLCBrightness.X3 = INIT_VGA_BRIGHTNESS_X3;
g_NLCBrightness.X4 = INIT_VGA_BRIGHTNESS_X4;
}
#endif
#if YPBPR_ENABLE
else if(IsYPbPrInUse())
{
g_NLCContrast.X0 = INIT_YPBPR_CONTRAST_X0;
g_NLCContrast.X1 = INIT_YPBPR_CONTRAST_X1;
g_NLCContrast.X2 = INIT_YPBPR_CONTRAST_X2;
g_NLCContrast.X3 = INIT_YPBPR_CONTRAST_X3;
g_NLCContrast.X4 = INIT_YPBPR_CONTRAST_X4;
g_NLCBrightness.X0 = INIT_YPBPR_BRIGHTNESS_X0;
g_NLCBrightness.X1 = INIT_YPBPR_BRIGHTNESS_X1;
g_NLCBrightness.X2 = INIT_YPBPR_BRIGHTNESS_X2;
g_NLCBrightness.X3 = INIT_YPBPR_BRIGHTNESS_X3;
g_NLCBrightness.X4 = INIT_YPBPR_BRIGHTNESS_X4;
g_NLCSaturation.X0 = INIT_YPBPR_SATURATION_X0;
g_NLCSaturation.X1 = INIT_YPBPR_SATURATION_X1;
g_NLCSaturation.X2 = INIT_YPBPR_SATURATION_X2;
g_NLCSaturation.X3 = INIT_YPBPR_SATURATION_X3;
g_NLCSaturation.X4 = INIT_YPBPR_SATURATION_X4;
}
#endif
else
{
g_NLCContrast.X0 = INIT_VIDEO_CONTRAST_X0;
g_NLCContrast.X1 = INIT_VIDEO_CONTRAST_X1;
g_NLCContrast.X2 = INIT_VIDEO_CONTRAST_X2;
g_NLCContrast.X3 = INIT_VIDEO_CONTRAST_X3;
g_NLCContrast.X4 = INIT_VIDEO_CONTRAST_X4;
g_NLCBrightness.X0 = INIT_VIDEO_BRIGHTNESS_X0;
g_NLCBrightness.X1 = INIT_VIDEO_BRIGHTNESS_X1;
g_NLCBrightness.X2 = INIT_VIDEO_BRIGHTNESS_X2;
g_NLCBrightness.X3 = INIT_VIDEO_BRIGHTNESS_X3;
g_NLCBrightness.X4 = INIT_VIDEO_BRIGHTNESS_X4;
g_NLCSaturation.X0 = INIT_VIDEO_SATURATION_X0;
g_NLCSaturation.X1 = INIT_VIDEO_SATURATION_X1;
g_NLCSaturation.X2 = INIT_VIDEO_SATURATION_X2;
g_NLCSaturation.X3 = INIT_VIDEO_SATURATION_X3;
g_NLCSaturation.X4 = INIT_VIDEO_SATURATION_X4;
}
g_NLCAudioVolume.X0 = INIT_AudioVolume_X0;
g_NLCAudioVolume.X1 = INIT_AudioVolume_X1;
g_NLCAudioVolume.X2 = INIT_AudioVolume_X2;
g_NLCAudioVolume.X3 = INIT_AudioVolume_X3;
g_NLCAudioVolume.X4 = INIT_AudioVolume_X4;
}
void NEW_ADCSetting(BYTE SRCTYPE)
{
BYTE XDATA ucBank;
ucBank = msReadByte(BK0_00_REGBK);
switch (SRCTYPE)
{
case SRCTYPE_YCBCR:
msWriteByte( BK0_00_REGBK, REG_BANK6s00_ADCATOP );
//input mux setup
msWrite2BytesMask_16bitADDR(BK6s00_01h_ADC_ATOP,_BIT0,_BIT2|_BIT1|_BIT0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -