static void pcmStrmCloseDevice( MHdl *hdl ) { uint16 I, ctl; pcmStrmMediaHdl *ihdl = (pcmStrmMediaHdl *)hdl; for ( I = 0; ; I++ ) { ctl = *DSP_PCM_CTRL; if ( ctl == 0 ) // DSP returns to idle state break; if ( ctl == 8 ) { *DSP_PCM_CTRL = WAV_ABORT_STATE; // give ABORT command to the DSP kal_trace( TRACE_STATE, L1AUDIO_STOP_STATE ); } ASSERT_REBOOT( I < 40 ); kal_sleep_task( 2 ); } kal_trace( TRACE_STATE, L1AUDIO_IDLE_STATE ); #if defined(MT6205B) if( ihdl->pcmStrm.freqType == 0x20 ) // sampling frequency: 16k AM_PCM16K_PlaybackOff( true ); else // sampling frequency: 8k AM_PCM8K_PlaybackOff( true ); #else #if !defined(__BT_AUDIO_VIA_SCO__) if ( ihdl->pcmStrm.is8KVoice ) AM_PCM8K_PlaybackOff( true ); else #endif AM_AudioPlaybackOff( true ); #endif mhdlAllowSleep( hdl ); }
static void pcmStrmCloseDevice( MHdl *hdl ) { pcmStrmMediaHdl *ihdl = (pcmStrmMediaHdl *)hdl; if ( ihdl->pcmStrm.is8KVoice ) { if( L1SP_PCMPlayback_CheckFlag() ) SetSpeechEnhancement(false);//META taste function L1Audio_PutMessageAndWait(MSG_L1AUDIO2FAS_SPEECH_IDLE_PLAY_STOP, ihdl->mh.fc_aud_id, 0, KAL_TRUE ); L1Audio_FC_ReleaseAudioBufferHeader( (FC_Buf **) &hdl->rbInfo.param ); L1Audio_FC_UnHookHandler(ihdl->mh.fc_aud_id, 1); AM_PCM8K_PlaybackOff( true ); }else{ L1Audio_FC_AudioPlaybackOff(hdl->fc_aud_id); L1Audio_FC_ReleaseAudioBufferHeader( (FC_Buf **) &hdl->rbInfo.param ); L1Audio_FC_UnHookHandler(hdl->fc_aud_id, 0); AM_AudioPlaybackOff( true ); } mhdlAllowSleep( hdl ); }
Media_Status I2S_Close( void ){ kal_trace( TRACE_FUNC, L1AUDIO_I2S_DISABLE); #if !defined(__AUDIO_RECORD_COMPONENT_SUPPORT__) ASSERT(I2S_RECORD_STATE_INIT == i2s.state); #endif i2s.state = I2S_RECORD_STATE_CLOSED; AM_AudioPlaybackOff( true ); AFE_TurnOffEDI(); #if defined(__INTERAL_FM_VIA_I2S__) if(!I2S_is_FM()) #endif I2S_Input_GPIO_TurnOff(); #if defined(MT6260) #if defined(__INTERAL_FM_VIA_I2S__) if(I2S_is_FM()) *HW_MISC_REG &= ~0x0001; #endif #endif *DSP_AUDIO_FLEXI_CTRL &= ~(FLEXI_VBI_ENABLE | FLEXI_SD_ENABLE); *DSP_AUDIO_CTRL2 &= ~DP_PCM_R_DIS; /* GPIO setting */ #if defined(__AUDIO_COMPONENT_SUPPORT__) ASSERT(i2s.ihdl); Media_SetIsDSPDec(KAL_FALSE); // to bypass sink component AudioRoute2Drain_Stop(i2s.ihdl); AudioRoute2Drain_Free(i2s.ihdl); i2s.ihdl = NULL; #endif #if defined(__BES_LOUDNESS_ON_I2S__) AudioPP_Loudness_Registry(); #endif #if defined(MT6250) L1Audio_UnhookHisrHandler( DP_D2C_I2S_REC_INT ); #endif #if defined(__AUDIO_DSP_LOWPOWER_V2__) if(AUDLP_Check_LowPower_Status()) { #if defined(MT6250) || defined(MT6260) AUDLP_SetClkSwitch_26M(KAL_FALSE); AUDLP_SW_Trigger_Event_Setting(KAL_FALSE); AUDLP_Set_ClkSwitchMode(KAL_FALSE); #endif AUDLP_Mode(KAL_FALSE, 1); L1Audio_ClearFlag_MD2G( i2s.aud_id ); } else L1Audio_ClearFlag( i2s.aud_id ); #else L1Audio_ClearFlag( i2s.aud_id ); #endif L1Audio_FreeAudioID( i2s.aud_id ); i2s.is_ON = KAL_FALSE; ktUnlock(); return MEDIA_SUCCESS; }