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

📄 audio_api1.c

📁 The driver of audio processor SGTV5830 音频处理芯片SGTV5830驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
	SGTV58xx_I2SAIn_DPllReset();
}

////////////////////////////////// Initialize /////////////////////////////////////////////////

void SGTV58xx_Initialize(void)
{
	WORD wTemp;
//-------------------------zenghw add for audio factory menu-------------------
	g_Data.ucAISADA = FactoryMenu_Audio_Struct.fnGetPersistentItemValue(FactoryMenu_AudioMenu_PrefADC_Gain_CTLR);
	g_Data.ucPreScalarI2SA= FactoryMenu_Audio_Struct.fnGetPersistentItemValue(FactoryMenu_AudioMenu_Prescale_I2SA_DIN);
	g_Data.ucPreScalarADC= FactoryMenu_Audio_Struct.fnGetPersistentItemValue(FactoryMenu_AudioMenu_Prescale_ADC);
	g_Data.ucPreScalarDemod= FactoryMenu_Audio_Struct.fnGetPersistentItemValue(FactoryMenu_AudioMenu_Prescale_TV);



#ifdef ZHW_DEBUG_SGTV_MSG
	tvDebugPrint("************* SGTV start initialized *****************\n");
#endif
	SGTV58xx_HardwareReset();
	SGTV58xx_SoftReset();

	// 0) Temporary fix for Rev SGTV58xx CA1A -
	//     TODO - read chip id and get revision then set as appropriate
	SGTV58xx_I2C_Write(0x500e, 0x0010);

	// 1) Clock setup
	SGTV58xx_I2C_Write(SGTV58XX_REG__CLKRST_CLOCK, s_DeviceConfig.wClkrstClock);

	// 2) Block Disable/ Enable
	wTemp = SGTV58XX_CLKRST_BLOCK_DISABLE__SYNC_DELAY_DISABLE__DISABLE_VALUE | 		// Disable sync delay
			SGTV58XX_CLKRST_BLOCK_DISABLE__SPDIF_OUT_DISABLE__DISABLE_VALUE | 		// Disable SPDIF output - unused
			SGTV58XX_CLKRST_BLOCK_DISABLE__ASYNC_I2S_OUT_DISABLE__ENABLE_VALUE | 	// Enable Async I2S out
			SGTV58XX_CLKRST_BLOCK_DISABLE__ASYNC_I2S_IN_DISABLE__ENABLE_VALUE | 		// Enable Async I2S in
			SGTV58XX_CLKRST_BLOCK_DISABLE__SYNC_I2S_DISABLE__ENABLE_VALUE | 			// Enable sync I2S
			SGTV58XX_CLKRST_BLOCK_DISABLE__PEAK_DETECT_DISABLE__ENABLE_VALUE | 		// Enable Peak Detect
			SGTV58XX_CLKRST_BLOCK_DISABLE__TONE_GENERATOR_DISABLE__ENABLE_VALUE | 	// Enable Tone generator
			SGTV58XX_CLKRST_BLOCK_DISABLE__DAP_DISABLE__ENABLE_VALUE | 				// Enable DAP
			SGTV58XX_CLKRST_BLOCK_DISABLE__DEMOD_DISABLE__ENABLE_VALUE;				// Enable Demodulator

	SGTV58xx_I2C_Write(SGTV58XX_REG__CLKRST_BLOCK_DISABLE, wTemp);

	// 3) Power-up items
	// 3a) Analog power
	SGTV58xx_I2C_Write(SGTV58XX_REG__ANA_CTRL_PWD_CNTRL, s_DeviceConfig.wAnaCtrlPower);

	// 3b) DEMOD power
	wTemp = SGTV58XX_DEMOD_ANA_CTRL_1__AGC_SEL_SIF__SIF0_VALUE | 						// Default to SIF0
			SGTV58XX_DEMOD_ANA_CTRL_1__AGC_BIAS_CTL__NORMAL_VALUE | 				// AGC Bias = Normal
			SGTV58XX_DEMOD_ANA_CTRL_1__ADC_CLK_DIV__NORMAL_VALUE | 					// AGC Clock Divider = Normal
			SGTV58XX_DEMOD_ANA_CTRL_1__ADC_INV_SAMP_CLK__NORMAL_VALUE | 			// ADC Invert Sample Clock = Normal
			SGTV58XX_DEMOD_ANA_CTRL_1__ADC_CLK_DEF__ON_VALUE | 						// ADC Clock is On
			SGTV58XX_DEMOD_ANA_CTRL_1__PWD_DEMOD_TOP__POWERED_UP_VALUE;			// Demodulator power up

	SGTV58xx_I2C_Write(SGTV58XX_REG__DEMOD_ANA_CTRL_1, wTemp);

	// 4) GPIO and interrupt
	//    - none being used so use defaults as disabled

	// 5) Port Setup (I2S, SPDIF, DEMOD)
	// 5a) I2S Sync
	SGTV58xx_I2C_Write(SGTV58XX_REG__I2SS_CTRL, s_DeviceConfig.wI2SSCtrl);
	SGTV58xx_I2C_Write(SGTV58XX_REG__I2SAIN_CTRL, s_DeviceConfig.wI2SAInCtrl);			// updated possible
	SGTV58xx_I2C_Write(SGTV58XX_REG__I2SAOUT_CTRL, s_DeviceConfig.wI2SAOutCtrl);		// updated possible

	// 5b) SPDIF
	//      - not using - so use defaults

	// 5c) DEMOD (asd control) - done in channel change
	//      set number of asd iterations and supported standards
	wTemp = s_DeviceConfig.wDEMOD_Num_ASD_Iterations << SGTV58XX_DEMOD_SUPPORTED_STDS__ASD_ITERATIONS__STARTBIT;
	wTemp |= s_DeviceConfig.wDEMOD_Supported_Stds;
	SGTV58xx_I2C_Write(SGTV58XX_REG__DEMOD_SUPPORTED_STDS, wTemp);

	//      set auto-mute noise level in ASD Control register
	SGTV58xx_I2C_Write(SGTV58XX_REG__DEMOD_ASD_CTRL, s_DeviceConfig.wDEMOD_AutomuteNoiseLevel);

	//     set force RSS for NICAM
	SGTV58xx_I2C_Write(SGTV58XX_REG__DEMOD_NICAM_CTRL, SGTV58XX_DEMOD_NICAM_CTRL__FORCE_RSS__FORCE_VALUE );   // setup to Force RSS for NICAM

	// 6) DAP + MISC(TG & PD) settings - default values to use
	// 6a) DAP Control
	wTemp = SGTV58XX_DAP_CTRL__LOUDNESS_BOOST__0_DB_VALUE | 		// Set Loudness Boost to Max
			SGTV58XX_DAP_CTRL__LOUDNESS_EN__BYPASS_VALUE | 		// Enable Loudness
			SGTV58XX_DAP_CTRL__EQ_EN__GEQ_VALUE |					// Enable GEQ
			SGTV58XX_DAP_CTRL__TONE_CONTROL_EN__ENABLED_VALUE | 	// Enable SGTL - Tone Control
			SGTV58XX_DAP_CTRL__SGTL_EN__ENABLE_VALUE;				// Enable SGTL Block
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_CTRL, wTemp);

	// 6b) DAP AVC Control
	wTemp = SGTV58XX_DAP_AVC_CTRL__AVC_DECAY__4_S_DELAY_VALUE |			// 4 second decay
			SGTV58XX_DAP_AVC_CTRL__THRESHOLD__MINUS_18_DB_VALUE | 		// -18 dB threshold
			SGTV58XX_DAP_AVC_CTRL__LIMITER_EN__COMPRESSOR_MODE_VALUE | 	// use Compressor Mode
			SGTV58XX_DAP_AVC_CTRL__AVC_EN__ENABLE_VALUE;					// Enable the AVC
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_AVC_CTRL, wTemp);

	// 6c) DAP Headphone DAC Control
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_HP_DAC_CTRL, SGTV58XX_HP_DAC_CTRL__ENABLE__ENABLE);	// Enable Headphone TC

	// 6d) DAP GEQ0
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_GEQ0, s_DeviceConfig.wGEQ0);	// set to configuration

	// 6e) DAP GEQ1
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_GEQ1, s_DeviceConfig.wGEQ1);	// set to configuration

	// 6f) DAP GEQ2
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_GEQ2, s_DeviceConfig.wGEQ2);	// set to configuration

	// 6g) DAP GEQ3
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_GEQ3, s_DeviceConfig.wGEQ3);	// set to configuration

	// 6h) DAP GEQ4
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_GEQ4, s_DeviceConfig.wGEQ4);	// set to configuration

	// 6i) DAP Licensed Audio - SRS
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_LIC_AUDIO_CTRL, SGTV58XX_DAP_LIC_AUDIO_CTRL__ENABLE__SRS_VALUE);	// Enable SRS
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_WOWHD, s_DeviceConfig.wWOWHDConfig);

	// 6j) DAC Bass Management
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_DAC_BM, s_DeviceConfig.wBassManagement);

	// 6k) Tone Generator - Volume
	SGTV58xx_I2C_Write(SGTV58XX_REG__TG_VOLUME, s_DeviceConfig.wToneGeneratorVolume);

	// 6L) Tone Generator - Frequency
	SGTV58xx_I2C_Write(SGTV58XX_REG__TG_FREQ, s_DeviceConfig.wToneGeneratorFreq);

	// 6m) Tone Generator - Mix
	SGTV58xx_I2C_Write(SGTV58XX_REG__TG_MIX, SGTV58XX_TG_MIX__MIX__FULL_SSS_VALUE);

	// NOTE: GOOD place to set different coefficients if need to

	// 6n) Peak Detect
	//      use defaults for now - which is off - items set in GetPeakDetect()

	// 7) Prescaler - control set
	// TODO - all prescaler control

	// 8) Prescaler - values
	// 8a) I2SIN0 Prescaler
	// 8b) I2SIN1 Prescaler
	// 8c) I2SAIN Prescaler
	// 8d) Tone Generator Prescaler
	// 8e) SGTL Prescaler
	// 8f) Headphone TC Prescaler
	// 8g) BM Stereo Prescaler
	// 8h) BM Mono Prescaler
	// 8i) SRS/BBE Prescaler
	// 8j) ADC Prescaler
	// 8k) DEMOD Prescaler

	// 9) Routing - only hardcoded items done here -
	//			complete connection should be handled by higher up control
	//			which should be done after this function call
	// 9a) I2S OUT Routing - nothing to do - being done in configure() function
	// 9b) SPDIF out Routing - not using - so nothing to do
	// 9c) DAC out Routing
	// hardcoding - SRS/BBE -> Analog Main
	//            - Headphone Tone Control -> Analog Headphone
//	wTemp = ((WORD)SGTV58XX_SSS_INPUT__DAP_SRS_BBE_IN_VALUE << SGTV58XX_SSS_DACOUT__DACMAIN__STARTBIT ) |
//			((WORD)SGTV58XX_SSS_INPUT__DAP_HDPH_TC_IN_VALUE << SGTV58XX_SSS_DACOUT__DACHDPH__STARTBIT );
	wTemp = (((WORD)(SGTV58XX_SSS_INPUT__DAP_HDPH_TC_IN_VALUE)) << SGTV58XX_SSS_DACOUT__DACHDPH__STARTBIT );
	SGTV58xx_I2C_Write(SGTV58XX_REG__SSS_DACOUT, wTemp);

	// 9d) DAC - MAIN LF Routing
	// hardcoding - BM_Mono -> Analog Sub
	wTemp = (((WORD)(SGTV58XX_SSS_INPUT__DAP_BM_M_IN_VALUE))) << SGTV58XX_SSS_DAC__MAIN_LF__STARTBIT;
	SGTV58xx_I2C_Write(SGTV58XX_REG__SSS_DAC_MAIN_LF, wTemp);

	// 9e) MISC Routing
	// hardcoding - SGTL_DP -> Tone Generator
	//			- DEMOD -> Sync Delay
	wTemp = (((WORD)(SGTV58XX_SSS_INPUT__DAP_SGTL_DP_IN_VALUE)) << SGTV58XX_SSS_MISC__TONE_GENERATOR__STARTBIT ) |
			(((WORD)(SGTV58XX_SSS_INPUT__DEMOD_VALUE)) << SGTV58XX_SSS_MISC__SYNC_DELAY__STARTBIT );
	SGTV58xx_I2C_Write(SGTV58XX_REG__SSS_MISC, wTemp);

	// 9f) DAP Routing
	// hardcoding - BM_Stereo -> SRS
	//			- Tone Generator -> BM
	wTemp = (((WORD)(SGTV58XX_SSS_INPUT__DAP_BM_S_IN_VALUE)) << SGTV58XX_SSS_DAP__BBE_SRS__STARTBIT ) |
			(((WORD)(SGTV58XX_SSS_INPUT__TG_VALUE)) << SGTV58XX_SSS_DAP__BASS_MANAGEMENT__STARTBIT );
	SGTV58xx_I2C_Write(SGTV58XX_REG__SSS_DAP, wTemp);

	// 10) Sync Delay
	SGTV58xx_I2C_Write(SGTV58XX_REG__SYNC_DELAY_CONTROL, s_DeviceConfig.wSyncDelay);

	// 11) Volume(unmute) -
	// 11a) DAC Volume not done here - should be handled by higher up control
	// 11b) ADC Volume and unmute
//	wTemp = SGTV58XX_ANA_CTRL_ADC_VOL__ADC_MUTE_R__UNMUTE_VALUE |              // unmute right
//			SGTV58XX_ANA_CTRL_ADC_VOL__ADC_VOL_R__0_DB_GAIN_VALUE |       // set right volume
//			SGTV58XX_ANA_CTRL_ADC_VOL__ADC_MUTE_L__UNMUTE_VALUE |         // unmute left
//			SGTV58XX_ANA_CTRL_ADC_VOL__ADC_VOL_L__0_DB_GAIN_VALUE;        // set left volume
#if 0	
	wTemp = SGTV58XX_ANA_CTRL_ADC_VOL__ADC_MUTE_R__UNMUTE_VALUE |              // unmute right
			(((WORD)(g_Data.ucPreScalarADC))<<8 ) |       // set right volume     //zenghw change for byte to word  g_Data.ucPreScalarDAPSGTLDP  
			SGTV58XX_ANA_CTRL_ADC_VOL__ADC_MUTE_L__UNMUTE_VALUE |         // unmute left
			g_Data.ucPreScalarADC;        // set left volume  zenghw old is g_Data.ucPreScalarDAPSGTLDP  
	// lsz 060626 M2k60703 }
// M2k60703 }
	SGTV58xx_I2C_Write(SGTV58XX_REG__ANA_CTRL_ADC_VOL, wTemp);
#else
	wTemp = (0xefef &              // unmute right
			(((WORD)(g_Data.ucAISADA))<<8 ) )|       // set right volume     //zenghw change for byte to word  g_Data.ucPreScalarDAPSGTLDP  
			(0xefef &         // unmute left,  0xef7f
			g_Data.ucAISADA);        // set left volume  zenghw old is g_Data.ucPreScalarDAPSGTLDP  
	// lsz 060626 M2k60703 }
// M2k60703 }
	SGTV58xx_I2C_Write(SGTV58XX_REG__ANA_CTRL_ADC_VOL, wTemp);



#endif
	// 12) turn on peak detect
	// 2) Enable Peak Detect
	wTemp = SGTV58xx_I2C_Read(SGTV58XX_REG__PD_ENABLE);
	wTemp &= SGTV58XX_PD_ENABLE__ENABLE__CLEARMASK;
	wTemp |= SGTV58XX_PD_ENABLE__ENABLE__ENABLE_VALUE;
	SGTV58xx_I2C_Write(SGTV58XX_REG__PD_ENABLE, wTemp);
	SGTV58xx_I2SAOut_Config();		// moved from channel config, Tenny at 2k60801
	SGTV58xx_ChannelConfig(g_Data.ucMenuMPSource, g_Data.ucMenuPIPSource, _FALSE_);

	/*
        // Should get value from memory actually
	g_FactoryAudioDatas.ucRegVal_Vol1 = 0x80;
	g_FactoryAudioDatas.ucRegVal_Vol25 = 0xd8;
	g_FactoryAudioDatas.ucRegVal_Vol50 = 0xe8;
	g_FactoryAudioDatas.ucRegVal_Vol75 = 0xf0;
	g_FactoryAudioDatas.ucRegVal_Vol100 = 0xff;
	*/
       //SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__SSS_PSCLR_CTRL,0x3ff,0x3ff); // lsz 060616
// M2k60703 {
       SGTV58xx_I2C_Write(SGTV58XX_REG__SSS_PSCLR_CTRL,0x7ff ); // lsz 060621
// M2k60703 }
       SGTV58xx_PreScalarSet(PreScalar_I2SA, _TRUE_, g_Data.ucPreScalarI2SA);
	SGTV58xx_PreScalarSet(PreScalar_ADC, _TRUE_, g_Data.ucPreScalarADC);
	SGTV58xx_PreScalarSet(PreScalar_Demod, _TRUE_, g_Data.ucPreScalarDemod);

	SGTV58xx_I2C_Write(SGTV58XX_REG__DAC_AOS0, 0x00);// lsz 060612 	
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAC_HP, 0x00);// lsz 060724
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAC_HP_VOL, 0xffff);// lsz 060724
	SGTV58xx_I2C_Write(0x5008, 0x00c0);// lsz 060719
	SGTV58xx_I2C_Write(SGTV58XX_REG__DAP_AVC_PRG_HI_THRESH,0x730); // lsz

// 	SGTV58xx_VolumeSet(SGTVVolume_DAC0, 0xffff);	// Tenny at 2k61020
	xMspDspCommand(AUDIO_VOL_DAC0, FactoryMenu_Audio_Struct.fnGetPersistentItemValue(FactoryMenu_AudioMenu_DAC0));  //ZENGHW ADD 20070208
	
       SGTV58xx_VolumeSet(SGTVVolume_DAC1, Default_DAC1_Volume);
//	SGTV58xx_I2C_Write(SGTV58XX_REG__DAC_AOS1, 0);	// Tenny at 2k61027 ZENGHW 20070402
	dAudio_OutputMute(D_AUDIO_LOUDSPEAKER, _FALSE_); //zenghw removed

	Audio_SetOverModulation(0x02);//zenghw add for volume demolulator P016  0x03

//	//2Tenny at 2k60921 { Patch for SAP detection
//	SGTV58xx_I2C_Write(0x8080, 0x1000);
//	SGTV58xx_I2C_Write(0x8082, 0x0b00);
//	//2Tenny at 2k60921 }
	// Initial variables
	g_AudioInfo.bForceMono_SAP = _FALSE_;
	g_AudioInfo.bNicamLEnabled = _FALSE_;
	g_AudioInfo.bNicamLocked = _FALSE_;
	g_AudioInfo.bSAPDetected = _FALSE_;
	g_AudioInfo.bStatusChanged = _FALSE_;
	g_AudioInfo.bUserChanged = _FALSE_;
	g_AudioInfo.ucUserPreSelect = StereoMode_MONO;  //zenghw add

#if 0
	g_MspData.ucMspReadStatus = MSP_TRANS_ONLY_FM_MONO;	// No standard detected
	g_MspData.ucMspUserSelect = MSP_USER_STEREO_A; 		// Default audio mode is FM MONO.
	g_MspData.ucMspOutputMode = MSP_OUT_MONO;				// Default audio output is FM MONO.
	g_AudioInfo.ucAutoDetectState = 0x00;
	gMspFlags.F_MspSecamL = 0;					// SECAM-L debug
	gMspFlags.F_MspASS = 1;
#endif	
}

////////////////////////////////// Demodulator /////////////////////////////////////////////
void SGTV58xx_AGC_Disable(BOOL bDisable)
{
	WORD wTemp;
	if(bDisable)
	{
		wTemp = g_FactoryAudioDatas.ucGain4NicamL << 1;	// set Gain value for AM signals(L)
		wTemp |= SGTV58XX_DEMOD_AGC_CTRL__AGC_EN__USE_GAIN_VALUE;
	}
	else
	{
		wTemp = 0x22;	// Set Gain value for FM signals(unused),AGC enabled
		wTemp |= SGTV58XX_DEMOD_AGC_CTRL__AGC_EN__USE_AGC_VALUE;
	}
	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_AGC_CTRL,
							 (SGTV58XX_DEMOD_AGC_CTRL__AGC_EN__GETMASK | SGTV58XX_DEMOD_AGC_CTRL__GAIN_VALUE__GETMASK),
							  wTemp);
}

void SGTV58xx_L_DK_SelectL(BOOL bSelectNicamL)
{
	WORD wTemp = 0;
	wTemp =   SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L_DK_SEL__NICAM_DK_VALUE
			| SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_DK__AUTODETECT_VALUE
			| SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L__NO_AUTODETECT_VALUE;
	if(bSelectNicamL)
		wTemp = SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L_DK_SEL__NICAM_L_VALUE
				| SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_DK__NO_AUTODETECT_VALUE
				| SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L__AUTODETECT_VALUE;
	SGTV58xx_I2C_MaskWrite( SGTV58XX_REG__DEMOD_SUPPORTED_STDS,
							 ( SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L_DK_SEL__GETMASK
							 | SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_DK__GETMASK
							 | SGTV58XX_DEMOD_SUPPORTED_STDS__NICAM_L__GETMASK),
							  wTemp);
}

void SGTV58xx_ASD_SupportSTD(WORD wStandard)
{
	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_DEMOD_CTRL, 0x0008, 0x0008);  //zenghw add bit3
	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_SUPPORTED_STDS, 0x0ffe,wStandard); //zenghw changed
	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_DEMOD_CTRL, 0x0008, 0x0000);  //zenghw add bit3
}

// M2k60712 with LSZ {
BOOL SGTV58xx_ASD_IS_SupportSTD(void) // lsz 060707
{
WORD Temp;
	Temp= SGTV58xx_I2C_Read(SGTV58XX_REG__DEMOD_SUPPORTED_STDS);
	Temp&=SGTV58XX_DEMOD_SUPPORTED_STDS__UNSUPPORTED;
	if(Temp)
		{

		return _FALSE_;
		}
	else
		return _TRUE_ ;
}
// M2k60712 with LSZ }

void SGTV58xx_ASD_Enable(void)
{
	WORD wTemp = 0;

	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_DEMOD_CTRL, 0x0008, 0x0008);  //zenghw add bit3
	
	wTemp =   SGTV58XX_DEMOD_ASD_CTRL__ASD_DISABLE__ENABLE_VALUE
			| SGTV58XX_DEMOD_ASD_CTRL__AUTOMUTE_NOISE_LEVEL__6_DB_SNR
			| SGTV58XX_DEMOD_ASD_CTRL__DISABLE_AUTOMUTE__ENABLE_VALUE
			| SGTV58XX_DEMOD_ASD_CTRL__CHANNEL_CHANGE__CHANGE_CHANNEL_VALUE
			| SGTV58XX_DEMOD_ASD_CTRL__STANDARD__SEARCHING_FOR_STANDARD_VALUE;
	SGTV58xx_I2C_Write(SGTV58XX_REG__DEMOD_ASD_CTRL, wTemp);

//	//4Tenny at 2k70120 {: Disable continue ASD if not searching state
	wTemp = 0;
	if(!g_Tuner1Data.ucTunerStep)  //zenghw 20070402
		wTemp = SGTV58XX_DEMOD_DEMOD_CTRL__DISABLE_CONT_ASD;
	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_DEMOD_CTRL,
							  SGTV58XX_DEMOD_DEMOD_CTRL__DISABLE_CONT_ASD,
							  wTemp);
	
//	//4Tenny at 2k70120 }
	
}


void SGTV58xx_StandardForcedTo(ESGTV58xxStandard eStandard)
{
	WORD wTemp;

	SGTV58xx_L_DK_SelectL(eStandard == Standard_NICAM_L);
	SGTV58xx_AGC_Disable(eStandard == Standard_NICAM_L);

⌨️ 快捷键说明

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