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

📄 mst705Ȧ

📁 MST705源代码
💻
📖 第 1 页 / 共 5 页
字号:
    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 + -