Media_Status I2S_Open( void ){ #ifdef __I2S_UNIT_TEST__ kal_uint16 sr = Media_I2S_INPUT_MODE_SR_UT; #else kal_uint16 sr = Media_I2S_INPUT_MODE_SR; #endif #if defined(MT6256) || defined(MT6255) || defined(MT6250) || defined(MT6260) #if defined(__INTERAL_FM_VIA_I2S__) kal_uint8 isspkmute = 0; #endif #endif #if defined(__VIBRATION_SPEAKER_SUPPORT__) VIBR_Vibration_Deactivate(); #endif PcmSink_TerminateSound(); #if defined(__AUDIO_COMPONENT_SUPPORT__) Media_SetIsDSPDec(KAL_TRUE); // to bypass sink component #endif kal_trace( TRACE_FUNC, L1AUDIO_I2S_ENABLE, ASP_TYPE_I2SBypass, sr ); ASSERT( sr == 32000 || sr == 44100 || sr == 48000 ); ASSERT( I2S_RECORD_STATE_CLOSED == i2s.state); i2s.is_ON = KAL_TRUE; i2s.state = I2S_RECORD_STATE_INIT; i2s.sample_rate = sr; i2s.aud_id = L1Audio_GetAudioID(); #if defined(__BES_LOUDNESS_ON_I2S__) AudioPP_Loudness_Registry(); #endif #if defined(__AUDIO_DSP_LOWPOWER_V2__) #if defined(MT6256) || defined(MT6255) if (!APM_IsLoudnessOn()) #endif #if !(defined(MT6260) && defined(INTERNAL_ANTENNAL_SUPPORT)) AUDLP_Mode(KAL_TRUE, 1); #endif if(AUDLP_Check_LowPower_Status()) { L1Audio_SetFlag_MD2G( i2s.aud_id ); #if defined(MT6250) || defined(MT6260) AUDLP_Set_ClkSwitchMode(KAL_TRUE); AUDLP_SW_Trigger_Event_Setting(KAL_TRUE); AUDLP_SetClkSwitch_26M(KAL_TRUE); #endif } else L1Audio_SetFlag( i2s.aud_id ); #else L1Audio_SetFlag( i2s.aud_id ); #endif ktLock(); KT_StopAndWait(); TONE_StopAndWait(); AM_Force_VBI_END_IN_TASK(); Media_SetSampleRate(sr); Media_SetAudioFormat(MEDIA_FORMAT_UNKNOWN); *DSP_AUDIO_CTRL2 |= DP_PCM_R_DIS; *DSP_AUDIO_FLEXI_CTRL |= (FLEXI_VBI_ENABLE | FLEXI_SD_ENABLE); #if defined(MT6250) || defined(MT6260) *I2S_PLAYERROR_INFO = 0; *I2S_PLAYERROR_CONTROL = 0; #endif #if !defined(__CACHED_BASE_DSP__) DSP_DynamicDownload ( DDID_I2S ); #endif //should add a parameter to indicate input or output AFE_TurnOnEDI( 1, 1, L1SP_I2S_INPUT_SCALE >> 1 ); #if defined(__AUDIO_COMPONENT_SUPPORT__) i2s_sample_rate = i2s.sample_rate; ASSERT(i2s.ihdl==NULL); AudioRoute2Drain_Init(&i2s.ihdl, 0); AudioRoute2Drain_Start(i2s.ihdl); #endif //should not turn on output mode and input mode at the same time if( sr == 32000 ) sr = ASP_FS_32K; else if ( sr == 44100 ) sr = ASP_FS_44K; else sr = ASP_FS_48K; #if defined(MT6260) #if defined(__INTERAL_FM_VIA_I2S__) if(I2S_is_FM()) *HW_MISC_REG |=0x0001; #endif #endif #if defined(__INTERAL_FM_VIA_I2S__) if(!I2S_is_FM()) #endif I2S_Input_GPIO_TurnOn(); #if defined(MT6256) || defined(MT6255) || defined(MT6250) || defined(MT6260) #if defined(__INTERAL_FM_VIA_I2S__) if(!I2S_is_FM()) { if(!AFE_IsSpeakerMuted()) { AFE_MuteSpeaker(L1SP_AUDIO, KAL_TRUE); isspkmute = 1; } } #endif #endif #if defined(MT6250) L1Audio_HookHisrHandler(DP_D2C_I2S_REC_INT, I2S_DspIntHISR, 0); #endif #if defined(__AUDIO_COMPONENT_SUPPORT__) && !defined(MED_MODEM) PcmSink_DepopMute(400); //depop #endif AM_AudioPlaybackOn( ASP_TYPE_I2SBypass, sr ); #if defined(MT6256) || defined(MT6255) || defined(MT6250) || defined(MT6260) #if defined(__INTERAL_FM_VIA_I2S__) if(!I2S_is_FM()) { kal_sleep_task(45); if(isspkmute) AFE_MuteSpeaker(L1SP_AUDIO, KAL_FALSE); } #endif #endif return MEDIA_SUCCESS; }
void Media_MuteSpeaker( bool mute ) { AFE_MuteSpeaker( L1SP_AUDIO, mute ); AFE_MuteSpeaker( L1SP_VOICE, mute ); }