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

📄 audio_api1.c

📁 The driver of audio processor SGTV5830 音频处理芯片SGTV5830驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
	case SSSOutput_DAP_HPTC:
		wReg = SGTV58XX_REG__SSS_DAP;
		wMask = SGTV58XX_SSS_DAP__HP_TONE_CONTROL__GETMASK;
		ucStartBit = SGTV58XX_SSS_DAP__HP_TONE_CONTROL__STARTBIT;
		break;
	case SSSOutput_DAP_BM:
		wReg = SGTV58XX_REG__SSS_DAP;
		wMask = SGTV58XX_SSS_DAP__BASS_MANAGEMENT__GETMASK;
		ucStartBit = SGTV58XX_SSS_DAP__BASS_MANAGEMENT__STARTBIT;
		break;
	case SSSOutput_DAP_SRSBBE:
		wReg = SGTV58XX_REG__SSS_DAP;
		wMask = SGTV58XX_SSS_DAP__BBE_SRS__GETMASK;
		ucStartBit = SGTV58XX_SSS_DAP__BBE_SRS__STARTBIT;
		break;
	}

	wValue=((WORD)(eSSSInput)) << ucStartBit;

	
	SGTV58xx_I2C_MaskWrite(wReg, wMask, wValue);
	
		
#ifdef ZHW_DEBUG_SGTV_MSG
	
//	tvDebugPrint3("wreg = 0x%4x  , wMask = 0x %4x,  eSSSInput = %4x \n" ,wReg,wMask,wValue);
//	tvDebugPrint2("wreg = 0x%4x  , reg value = 0x%4x\n" ,wReg,(WORD)SGTV58xx_I2C_Read(wReg));

#endif


	
}

/*
	ucSource: source select for Scartx output
		= 0 : DAC0
		= 1 : DAC1
		= 2 : AIS_ANAx
*/
void SGTV58xx_ScartxOutputConfig(ESGTV58xxScartInput eSCInput, ESGTV58xxScartOutput eSCOutput)
{
	WORD wMask;
	BYTE ucStartBit;
	if(eSCOutput == SCARTOutput_AOUT2)
	{
		wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT2_SEL__GETMASK;
		ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT2_SEL__STARTBIT;
	}
	else if(eSCOutput == SCARTOutput_AOUT1)
	{
		wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT1_SEL__GETMASK;
		ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT1_SEL__STARTBIT;
	}
	else // if(eSCOutput == SCARTOutput_AOUT0)
	{
		wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT0_SEL__GETMASK;
		ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT0_SEL__STARTBIT;
	}

	SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__ANA_CTRL_AOS_DAC_CNTRL, wMask, ((WORD)eSCInput << ucStartBit));
}

// UserPrefCurrentInputMain - Main Source
// UserPrefCurrentInputPip - Source
// bSwitch - _TRUE_ for speaker outpu PIP audio
void SGTV58xx_ChannelConfig(BYTE ucMPSource, BYTE ucPPSource, BOOL bSwitch)
{
//	ESGTV58xxSSSInput eSSSInput;
	ESGTV58xxAnalogInput eAnalogInputMP, eAnalogInputPP;
	BOOL bI2SSignalChecked = _FALSE_;

//	SGTV58xx_I2SAOut_Config();
	// 1. Config for TV Out
	SGTV58xx_DemodInputSelectSIF0(_TRUE_);  

//	if(IsSourceHDMIPort(ucMPSource))
	if(tvMPSourceIsHDMI())		
	{
		if(tdMPSourceIsHDMI())//tvHDMISignalCheck  if HDMI OR DVI
		{
			bI2SSignalChecked = _TRUE_;
//			gm_AvsSetSource(gm_HdmiGetAvsSource());  //zenghw remove for temp 20061108
		}
		else
		{
//			gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);
			ucMPSource = SRC_MP_RGB;
		}
	}
//	else if(IsSourceHDMIPort(ucPPSource) && UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP)
	else if(tvPPSourceIsHDMI() && (g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_))
	{
		if(tvMPSourceIsHDMI())//tvHDMISignalCheck  if HDMI OR DVI
		{
			bI2SSignalChecked = _TRUE_;
//			gm_AvsSetSource(gmd_AVS_SOURCE_HDMI_I2S_OUTPUT);//zenghw remove for temp 20061108
		}
		else
		{
//			gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);
			ucPPSource = SRC_PIP_RGB;
		}
	}
//	else  		//zenghw remove for temp 20061108
//		gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);

	// Tenny at 2k61023 { Disable I2S prescaler if HDMI is unused
	if(bI2SSignalChecked)
	{
		SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__SSS_PSCLR_CTRL,
								  SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__GETMASK,
								  SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__PRESCALER_ON_VALUE);
	}
	else
	{
		SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__SSS_PSCLR_CTRL,
								  SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__GETMASK,
								  SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__PRESCALER_OFF_VALUE);
	}

	switch(ucMPSource)
	{
	case SRC_MP_TV:// TV
#if 0
		if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
		{
			//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
			if(bI2SSignalChecked)
			{
				SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
			}
			else
			{
				SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
				SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
			}
		}
		else //2#else
		{
			SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
		} //2#endif
#endif
//		SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0); // lsz 060610  SSSOutput_DAC0);	// SIF to DAC0
              SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC1); // lsz 060612
		if(g_Data.ucWinStatus)  //PIP ,POP, MULTIWIN
 		{
			if(g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_)  //PIP OR POP
			{
				switch(ucPPSource)
				{
//				case ALL_BOARDS_RF2:
				case SRC_PIP_SVIDEO:
				case SRC_PIP_AV1:
				case SRC_PIP_AV2:
				case SRC_PIP_HDTV1:			// YPbPr 1
				case SRC_PIP_HDTV2:			// YPbPr 2
				case SRC_PIP_RGB:			// VGA & DVI1/2
//				case ALL_BOARDS_COMP3:			// DVB_T, Tenny at 2k60912  zenghw remove fot temp
					if(ucPPSource == SRC_PIP_SVIDEO ||ucPPSource == SRC_PIP_AV1)
						eAnalogInputPP = INPUT_PIP_AV1;
					else if(ucPPSource == SRC_PIP_AV2)
						eAnalogInputPP = INPUT_PIP_AV2;
					else if(ucPPSource == SRC_PIP_HDTV1)
						eAnalogInputPP = INPUT_PIP_YPBPR1;
					else if(ucPPSource == SRC_PIP_HDTV2)
						eAnalogInputPP = INPUT_PIP_YPBPR2;
					else if(ucPPSource == SRC_PIP_RGB)
						eAnalogInputPP = INPUT_PIP_VGA;
		//			else if(ucPPSource == ALL_BOARDS_COMP3)  //zenghw remove fot temp
		//				eAnalogInputPP = Input_Analog8;
					else //if(ucPPSource== ALL_BOARDS_RF2)
						eAnalogInputPP = Input_Analog9;

					SGTV58xx_AISxSelectInput(eAnalogInputPP, AIS_ADC);	// Ain_PP to AIS_ADC
					if(bSwitch)
					{
						if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
						{
							SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
							SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
						}
						else //2 #else
						{
							SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
						} //2#endif

						SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0);
					}
					else
					{
						if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
						{
							//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
							if(bI2SSignalChecked)
							{
								SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
							}
							else
							{
								SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
								SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
							}
						}
						else //2#else
						{
							SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
						} //2#endif
						SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAC0);	// AIS_ADC to DAC0
					}
					break;
				case SRC_PIP_HDMI1:
				case SRC_PIP_HDMI2:
				case SRC_PIP_HDMI3:
					if(bSwitch)
					{
						SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// I2SA to SGTL_DP
						SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0); // lsz 060615
                                          SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
					}
					else
					{
						if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
						{
							SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
						} //2#endif
						SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAC0);	// I2SA to DAC0
						SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);

					}
					break;
				}
#ifdef ZHW_DEBUG_SGTV_MSG
				tvDebugPrint1("PIP is On,so Headphone output audio from input %d \n", ucPPSource);
#endif
			}
			else
			{
				if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
				{
					//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
					if(bI2SSignalChecked)
					{
						SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
					}
					else
					{
						SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
						SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
					}
				}
				else //2#else
				{
					SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
				} //2#endif
				SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_DAC0);	// Mute DAC0 output
#ifdef ZHW_DEBUG_SGTV_MSG
				tvDebugPrint("Mute Headphone output when Multi-Window active\n");
#endif
			}
		}
		else
		{
			if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
			{
				//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
				if(bI2SSignalChecked)
				{
					SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
				}
				else
				{
					SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
					SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
				}
			}
			else //2#else
			{
				SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
			} //2#endif
			SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0);
#ifdef ZHW_DEBUG_SGTV_MSG
			tvDebugPrint("PIP is Off,Headphone output audio same as Main\n");
#endif
		}
		SGTV58xx_ScartxOutputConfig(SCARTInput_DAC0, SCARTOutput_AOUT0);	// DAC0 to Headphone
		SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC1);				// SIF to DAC1
		SGTV58xx_ScartxOutputConfig(SCARTInput_DAC1, SCARTOutput_AOUT1);	// DAC1 to AV Out
		SGTV58xx_ScartxOutputConfig(SCARTInput_DAC1, SCARTOutput_AOUT2);	// DAC1 to SC Out
		break;

	case SRC_MP_AV1:			// Video 1
	case SRC_MP_AV2:			// Video 1
	case SRC_MP_SVIDEO: 		// SVideo lsz 060524
//	case ALL_BOARDS_CVBS2:			// Video 2    zenghw remove for temp 20061108
	case SRC_MP_HDTV1:			// YPbPr 1
	case SRC_MP_HDTV2:			// YPbPr 2
	case SRC_MP_RGB:			// VGA
	case SRC_MP_USB:			// USB
//	case SRC_MP_DTV:			// VGA
	
//	case ALL_BOARDS_COMP3:			// DVB_T, Tenny at 2k60912  zenghw remove for temp 20061108
              if((ucMPSource == SRC_MP_AV1)||(ucMPSource == SRC_MP_SVIDEO)) // lsz 060524
			eAnalogInputMP = INPUT_MP_AV1;
		else if(ucMPSource == SRC_MP_AV2)   //zenghw remove for temp 20061108
			eAnalogInputMP = INPUT_MP_AV2;
		else if(ucMPSource == SRC_MP_HDTV1)
			eAnalogInputMP = INPUT_MP_YPBPR1;
		else if(ucMPSource == SRC_MP_HDTV2)
			eAnalogInputMP = INPUT_MP_YPBPR2;
		else if(ucMPSource == SRC_MP_RGB)
			eAnalogInputMP = INPUT_MP_VGA;
		else if(ucMPSource == SRC_MP_USB)//if(ucMPSource == ALL_BOARDS_COMP3)
			eAnalogInputMP = INPUT_MP_USB;
		else
			eAnalogInputMP = INPUT_MP_DTV;
			

#ifdef ZHW_DEBUG_SGTV_MSG
		tvDebugPrint1("eAnalogInputMP=%d \n",eAnalogInputMP);
#endif
#if 0
		SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ADC);	// Ain_MP to AIS_ADC
		if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
		{
			//gm_Printf("Used extern sync delay!");
			//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
			if(bI2SSignalChecked)
			{
				SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
			}
			else
			{
				SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
				SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP);	// SIF to SGTL_DP
			}
		}
		else //2 #else
		{
			//gm_Printf("Unused extern sync delay!");
			SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
		} //2#endif
#endif
//		SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA0);	// Ain_MP to AIS_ANA0
//		SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0);	// AIS_ANA0 to Headphone

#if 0
		if(UserPrefPipMode != NO_PIP)
		{
			if(IsSinglePipMode(UserPrefPipMode) || IsSideBySidePipMode(UserPrefPipMode))
			{
#else
		if(g_Data.ucWinStatus)  //PIP ,POP, MULTIWIN
		{
			if(g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_)  //PIP OR POP
			 {
#endif			 
				switch(ucPPSource)
				{
				case SRC_PIP_TV:			// TV
				case SRC_PIP_SVIDEO:		 // Video1 & SVideo
				case SRC_PIP_AV1:			// Video 1
				case SRC_PIP_AV2:			// Video 1
//				case ALL_BOARDS_CVBS3:			// Video 2   zenghw remove for temp P001
				case SRC_PIP_HDTV1:			// YPbPr 1
				case SRC_PIP

⌨️ 快捷键说明

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