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

📄 chips.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
    {        case CHIPS_UP :            if (_bDualMode < DUAL_MIXEDMONO)                _bDualMode ++ ;            break ;        case CHIPS_DOWN :            if (_bDualMode > DUAL_STEREO)                _bDualMode -- ;            break ;        case CHIPS_NORMAL :            _bDualMode = 0 ;            break ;        case CHIPS_TOGGLE :            _bDualMode ++ ;            _bDualMode %= 4 ;            break ;        case CHIPS_LEVEL :            return _bDualMode ;        case CHIPS_SUPPORT :            return TRUE ;        default :            break ;    }    CHIPS_OpenAudio(TRUE);    //OSD_OUTPUT_MACRO(MSG_DUAL, _bDualMode, 3 );    return TRUE;}#endif//  *********************************************************************//  Function    :   _ChangeDSPCode//  Description :   It will load correct dsp code according to the desired audio type//                  This function is mainly called by _SetAudType function//                  Only BA5580 need to change dsp code//  Arguments   :   bType:      The type of command (Reference HAL_SetAudioType)//  Return      :   None//  Change      ://  Side Effect ://  *********************************************************************void _ChangeDSPCode(BYTE bType){//Kevin909, runtime unzip separate Audio codes#ifdef RUNTIME_UNZIP_AUDIO_CODE    DWORD dwTempReg;    // LLY2.55, remove it since current using PROC2 code will be kept in __bCurProc2Code    //static BYTE _bCurAudioType = HAL_AUDIO_NONE;    switch(bType)    {    case HAL_AUDIO_MPG:    case HAL_AUDIO_MP3:    case HAL_AUDIO_MP2:        bType = HAL_AUDIO_MPG;        break;    default:        break;    }    // LLY2.55, don't compare desired PROC2 code w/ _bCurAudioType    // Since, current F/W will call HAL_ReloadAudioDecoder() directly w/o keeping current using code    // So, the comparsion statement maybe worng.    // ex. DMP solution: LOGO (JPEG code) --> play MP3 + JPEG (load MP3 code by call HAL_ReloadAudioDecoder() directly)    //     --> KEY_FUNCTION to return main (it's JPEG logo) ==> will be think as same PROC2 code.	/*	if((bType == _bCurAudioType) || (bType == HAL_AUDIO_NONE))        return;	*/	if( (bType == __bCurProc2Code) || (bType == HAL_AUDIO_NONE) )	{        return;	}#if 0    switch(bType)    {    case HAL_AUDIO_MPG:    case HAL_AUDIO_MP3:    case HAL_AUDIO_MP2:        HAL_WriteAM(HAL_AM_AUDIO_TYPE, 2);        break; // MPEG    case HAL_AUDIO_PCM:    case HAL_AUDIO_LPCM:        HAL_WriteAM(HAL_AM_AUDIO_TYPE, 3);        break; // PCM    case HAL_AUDIO_DTS:        HAL_WriteAM(HAL_AM_AUDIO_TYPE, 4);        if(__wDiscType & BOOK_DVD)        {            HAL_WriteAM(HAL_AM_DTS_MODE, 0);        }        else if(__wDiscType & BOOK_CDDA)        {            HAL_WriteAM(HAL_AM_DTS_MODE, 1);        }        break; // DTS    case HAL_AUDIO_WMA:        HAL_WriteAM(HAL_AM_AUDIO_TYPE, 6);        break; // WMA        // LLY2.17, add for AAC audio stream    case HAL_AUDIO_AAC:        break; // AAC    case HAL_AUDIO_AC3:    default:        HAL_WriteAM(HAL_AM_AUDIO_TYPE, 1);        break; // default audio code is AC3    }#endif    // LLY2.55, remove it since current using PROC2 code will be kept in __bCurProc2Code    // within HAL_ReloadAudioDecoder()	//_bCurAudioType = bType;    //for stop: may be removed if audio decoder doesn't check audio type	HAL_Reset(HAL_RESET_AUDIO);    //senshong2.38a: JPEG decoder use REG_AIU_GR(2) ~ REG_AIU_GR(17) to connect width processor 2 from processor 1    //So before playback audio, we need to reset REG_AIU_GR(2) ~ REG_AIU_GR(17).#ifdef SUPPORT_JPEGDEC_ON_PROC2    {        BYTE bIndx;        for ( bIndx=2; bIndx<17; bIndx++)        {            REG_AIU_GR(bIndx)= 0;        }    }#endif    //reload audio decoder    // Micky2.11a    HAL_ReloadAudioDecoder(bType);    //restart	HAL_Reset(HAL_RESET_AUDIO);#if (AUDIO_ALIGN_FORMAT == I2S_ALIGN)    dwTempReg = (BIT_RESOL_VALUE<<7) | (BIT_RESOL_VALUE<<4) | (ALIGN_VALUE<<2) | (1<<18) | (1<<1); //[31] timer#else    dwTempReg = (BIT_RESOL_VALUE<<7) | (BIT_RESOL_VALUE<<4) | (ALIGN_VALUE<<2) | (1<<18); //[31] timer#endif // #if (AUDIO_ALIGN_FORMAT == I2S_ALIGN)    // LLY2.61, re-modify the procedure for programming REG_AIU_SPORT_CONFG0 bit[16:13]    // 1. only enable bit[13] (downmix L/R) while using internal audio DAC    // 2. enable bit[16:13] (5.1 channel + downmix L/R) while internal + external audio DAC.    // 3. enable bit[13] for 2 channel external audio DAC mode    // 4. enable bit[16:14] for 5.1 channel external audio DAC mode    // Notice: CT909P IC only support 2 channel only external audio DAC, so only can enable bit[13]    //         CT909R IC bit[16:13] must control together since H/W bug even internal audio DAC    //         or 2 channel only exteranl audio DAC    //         CT909G IC, bit[16:13] can be control indepentent. And, it's ok to enable all bit    //         even 2 channel only mode.#ifdef  CT909P_IC_SYSTEM    dwTempReg |= (0x1L<<13);#else   // #ifdef CT909P_IC_SYSTEM    dwTempReg |= (0xfL<<13);#endif  // #ifdef CT909P_IC_SYSTEM    if(REG_AIU_SPORT_CONFG0 != dwTempReg)    {        DBG_Printf(DBG_THREAD_CHEERDVD, DBG_INFO_PRINTF, "\nREG_AIU_SPORT_CONFG0 Setting Wrong");        // LLY2.56, do key lock first since AIU_SPORT_CONFG0 will be accessed by PROC2 together        MACRO_PLAT_KEY_LOCK( );        REG_AIU_SPORT_CONFG0 = dwTempReg;        MACRO_PLAT_KEY_UNLOCK( );    }#endif // RUNTIME_UNZIP_AUDIO_CODE}//  Kevin1.10, create//  *********************************************************************//  Function    :   CHIPS_ControlAnalogOutput//  Description :   Control Analog Output on/off//  Arguments   :   None//  Return      :   None//  Side Effect :   None//  *********************************************************************//#pragma NOAREGS // may be called in ISR (CHIPS_ControlAnalogOutput() -> CHIPS_OpenAudio()-> ISRvoid CHIPS_ControlAnalogOutput(void){    //kevin0.91, fix DTS still has analog output for the part No. that doesn't support DTS    if((__SetupInfo.bAudioAnalogOut == SETUP_AUDIO_ANALOG_OUT_OFF) || ((__bAudioType == HAL_AUDIO_DTS) && !(__dwSupportFeature&SUPPORT_FEATURE_DTS)))        HAL_WriteAM(HAL_AM_PCM_MUTE, 1);    else        HAL_WriteAM(HAL_AM_PCM_MUTE, 0);}//  *********************************************************************//  Function    :   _SetAudType//  Description :   It will set audio type to register according to the parameter//                  This function is mainly called by HAL_SetAudioType function//  Arguments   :   bType:      The type of command (Reference HAL_SetAudioType)//  Return      :   None//  Change      ://  Side Effect ://  *********************************************************************void _SetAudType(BYTE bType){    //WORD wTemp;    BYTE bOldAudType, bOldSpdifMode;    // TCC171, Backup old audio type and spdif mode. Only these 2 value change need reset dsp.    bOldAudType = _bAudType;    bOldSpdifMode = _bSpDifMode;	//kevin0.67, change Proc2 code will take effect since the following HAL_RESET_AUDIO	//Kevin2.31, move from below here. Run-time unzip DSP ucode will destroy audio config regs/DMs    _ChangeDSPCode(bType);#ifndef DOLBY_CERTIFICATION //Kevin0.76a, keep acmod settings    // TCC031, reference setup module for current setting    CHIPS_Initial(CHIPS_INIT_CHANNELMODE);#endif    // TCC274, move to a function    _SetAudio(bType);    // TCC171, only these 2 types change need reset dsp.    // Brian.276p, JPEG mode (HAL_AUDIO_NONE) doesn't need reset    //Kevin1.07, fix "Setup->Audio->Digital out->SPDIF PCM/RAW->exit setup, audio will be unsmooth"    //if ((bOldAudType != _bAudType || bOldSpdifMode != _bSpDifMode) && bType != HAL_AUDIO_NONE)    if((bOldAudType != _bAudType) && (bType != HAL_AUDIO_NONE))    {        // TCC046, need to reset dsp before set register & dm        HAL_Reset (HAL_RESET_AUDIO);    }    //Kevin1.24a, add    //Kevin1.10, Control Analog Output on/off    CHIPS_ControlAnalogOutput();    //Kevin1.24a, uncomment to fix SPDIF: mute->prestop->resume => auto mute off _dwACR2[14]    //Kevin1.10, comment    CHIPS_ControlSPDIFOutput();    //Kevin1.08, set ProLogic|| DM    CHIPS_ProLogicControl();    //Kevin0.80    CHIPS_ControlHDCD();}//  *********************************************************************//  Function    :   CHIPS_SPDIF_OnOff//  Description :   Turn on/off SPDIF via AND gate hardware since BE chip//  Arguments   :   bOn: 1: Turn on SPDIF (SPDIF carrier signal)//                       0: Turn off SPDIF (grounding)//  Return      :   None//  Side Effect :   None//  *********************************************************************//#pragma NOAREGS         // may be called in ISRvoid CHIPS_SPDIF_OnOff(BYTE bOn){    // Joey_238: SPDIF rule. [D30:D29], 01: off, 00: on, 02: on and mute    if(bOn)    {        REG_PLAT_SYSTEM_CONFIGURATION1 &= ~(3 << 29);   // set D30-D29 = 0        REG_AIU_AIUEN |= AIU_DMA_ENABLE_SPDIF_OUT;    }    else    {        REG_PLAT_SYSTEM_CONFIGURATION1 = (REG_PLAT_SYSTEM_CONFIGURATION1 & ~(3 << 29)) | (1 << 29); // set D30-D29 = 1    }}//  Kevin2.80, create//  *********************************************************************//  Function    :   CHIPS_SPDIF_Mute//  Description :   enable/disable SPDIF//  Arguments   :   bEnable: 1: enable SPDIF//                           0: disable SPDIF//  Return      :   None//  Side Effect :   None//  *********************************************************************//#pragma NOAREGS         // may be called in ISRvoid CHIPS_SPDIF_Mute(BYTE bEnable){    // Joey_238: SPDIF rule. [D30:D29], 01: off, 00: on, 02: on and mute    if(((REG_PLAT_SYSTEM_CONFIGURATION1 >> 29) & 3) != 1)    {        if(bEnable)        {            REG_PLAT_SYSTEM_CONFIGURATION1 &= ~(3 << 29);   // set D30-D29 = 0            REG_AIU_AIUEN |= AIU_DMA_ENABLE_SPDIF_OUT;        }        else        {            REG_PLAT_SYSTEM_CONFIGURATION1 = (REG_PLAT_SYSTEM_CONFIGURATION1 & ~(3 << 29)) | (2 << 29); // set D30-D29 = 2        }    }}//  *********************************************************************//  Function    :   CHIPS_ControlSPDIFOutput//  Description :   Control SPDIF enable/disable//  Arguments   :   None//  Return      :   None//  Side Effect ://  *********************************************************************// because CHIP_ControlSPDIFOutput() --> CHIPS_OpenAudio() --> ISR//#pragma NOAREGS         // may be called in ISRvoid CHIPS_ControlSPDIFOutput(void){//kevin1.10, avoid PROC2 performance is not enough when doing language study// wyc2.17-909S, for language study    // Joey2.60: SPDIF PCM without volume control.    HAL_WriteAM(HAL_AM_DO_SPDIF_PCM_SCALE, 1);#if (SLOW_MODE_CONFIG != NORMAL_SLOW_MODE)    if((__bLangStudyFlag == TRUE) && (_bSpDifMode ==1))    {	    CHIPS_SPDIF_Mute(0); //disable spdif        CHIPS_SPDIF_OnOff(0); //turn off SPDIF via AND gate    }    else#endif    if(_bSpDifMode == 2)    {		CHIPS_SPDIF_Mute(0); //disable spdif        CHIPS_SPDIF_OnOff(0); //turn off SPDIF via AND gate    }	else    {        if(__btMute)   // In mute state            CHIPS_SPDIF_Mute(0);        else    		CHIPS_SPDIF_Mute(1); //enable spdif        CHIPS_SPDIF_OnOff(1); //turn on SPDIF via AND gate    }}//  *********************************************************************//  Function    :   CHIPS_OpenAudio//  Description :   It will set dsp related registers according to the//                  global variables set by almost all above functions//  Arguments   :   bParam:      The type of command//                      TRUE : Turn on audio//                      FALSE : Turn off audio//  Return      :   None//  Change      ://  Side Effect ://  *********************************************************************// when not using karaoke chip// function is called automatically when playing each item// so it must open the volume by channel, mute, key control status//#pragma NOAREGS         // may be called in ISR//Kevin0.87, modify//void CHIPS_OpenAudio(BYTE bParam)BYTE CHIPS_OpenAudio(BYTE bParam){    if(bParam == FALSE) // Turn on audio    {        // Brian.173, Mute the MIC input first        CHIPS_MICEnable(FALSE);        // LLY.273, use "soft-mute" to replace original method        CHIPS_SoftMute();        CHIPS_SPDIF_Mute(0);        // LLY2.16, do H/W mute while mute to pass 瓣夹 mute testing (909R bug??)        //HAL_IOMute(TRUE);    }    else    {        if(__btMute) // watch out for this break, 'casue the following function will not be called.            return TRUE;        if(__bSurround != CHIPS_SURROUND_NONE)        {            HAL_WriteAM(HAL_AM_SURR_EN, 1);            if(__bSurround == CHIPS_SURROUND_LIVE) // live            {                HAL_WriteAM(HAL_AM_SURR_0, SURROUND_TYPE_LIVE);            }            else if(__bSurround == CHIPS_SURROUND_THEATER)            {                HAL_WriteAM(HAL_AM_SURR_0, SURROUND_TYPE_THEATER);            }            // TCC028, add surround type for future usage            else if(__bSurround == CHIPS_SURROUND_STEREO)            {                HAL_WriteAM(HAL_AM_SURR_0, SURROUND_TYPE_STEREO);            }            else if(__bSurround == CHIPS_SURROUND_MOVIE)            {                HAL_WriteAM(HAL_AM_SURR_0, SURROUND_TYPE_MOVIE);            }            else if(__bSurround == CHIPS_SURROUND_KARAOKE)            {                HAL_WriteAM(HAL_AM_SURR_0, SURROUND_TYPE_KARAOKE);            }        }        else        {

⌨️ 快捷键说明

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