void DSP_BGSND_Stop(void) { kal_prompt_trace(MOD_L1SP, "[DSP_BGSND_Stop] Enter"); DSP_BGSnd.state = DSP_BGSND_STATE_STOPPING; { //turn off DSP BGSND uint32 I; if(SAL_Bgsnd_IsRunning()) SAL_Bgsnd_SetFinal(); for ( I = 0; ; I++ ) { if ( SAL_Bgsnd_IsIdle()) /* DSP returns to idle state */ break; ASSERT_REBOOT( I < 20 ); kal_sleep_task( 2 ); } AM_SND_PlaybackOff( true ); } #ifdef DSP_BGS_UP_DOWN_INT_SEPERATE L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_DL); L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_UL); #else L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_DL); #endif DSP_BGSnd.state = DSP_BGSND_STATE_IDLE; kal_prompt_trace(MOD_L1SP, "[DSP_BGSND_Stop] Leave"); }
void Extended_PCM2WAY_Stop(uint32 type) { // Sal_PCMEx_Config_t cfg_t; // cfg_t.idle = false;//initialized ASSERT(type == pcmEx.app_type); // start and stop should using same type /* the begining of configure the SAL */ ASSERT(SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF) || SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_RDY)); ASSERT(SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF) || SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_RDY)); SAL_PcmEx_SetStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF); SAL_PcmEx_SetStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF); // cfg_t.swi = SAL_PCMEX_SWITCH_OFF; // cfg_t.type = SAL_PCMEX_TYPE_PNW; AM_PCM_EX_Off(type, (uint32)(&pcmEx)); /* the end of configure the SAL */ L1Audio_UnhookHisrHandler(DP_D2C_PCM_EX_DL); L1Audio_UnhookHisrHandler(DP_D2C_PCM_EX_UL); L1Audio_ClearFlag( pcmEx.aud_id ); L1Audio_FreeAudioID( pcmEx.aud_id ); pcmEx.pnw_dl_hdlr = pcmEx.pnw_ul_hdlr = NULL; pcmEx.state = 0; pcmEx.bandInfo = PCMNWAY_BAND_INFO_UNSET; pcmEx.app_type = P2W_APP_TYPE_UNDEFINE; pcmEx.am_type = AM_PCMEX_TYPE_UNDEF; PCM2Way_SetFormat(P2W_FORMAT_NORMAL); }
void PCM4WAY_Stop(uint32 type) { ASSERT(DP_PCM_EX_CTRL == 0x102); DP_PCM_EX_CTRL = 0; AM_PCM_EX_Off(type); L1Audio_UnhookHisrHandler(DP_D2C_PCM_EX); pcmEx.hdlr = NULL; pcmEx.state = 0; }
void PcmEx_Stop(void) { ASSERT( PNW_STATE_RUN == pcmEx.state); if(true == pcmEx.isEnhOn) { SetSpeechEnhancement(false); } /* the begining of configure the SAL */ ASSERT(SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF) || SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_RDY)); ASSERT(SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF) || SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_RDY)); SAL_PcmEx_SetStateUL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF); SAL_PcmEx_SetStateDL(SAL_PCMEX_TYPE_PNW, SAL_PCMEX_OFF); AM_PCM_EX_Off(pcmEx.am_type, (uint32)(&pcmEx)); L1Audio_UnhookHisrHandler(DP_D2C_PCM_EX_DL); L1Audio_UnhookHisrHandler(DP_D2C_PCM_EX_UL); L1Audio_ClearFlag( pcmEx.aud_id ); L1Audio_FreeAudioID( pcmEx.aud_id ); // set to default. pcmEx.pnw_dl_hdlr = pcmEx.pnw_ul_hdlr = NULL; pcmEx.cfgUL1 = 0; pcmEx.cfgUL2 = 0; pcmEx.cfgUL3 = 0; pcmEx.cfgUL4 = 0; pcmEx.cfgDL = 0; // pcmEx.dspPcmExMicLen = 0; // pcmEx.dspPcmExSpkLen = 0; pcmEx.bandInfo = PCMEX_BAND_UNSET; pcmEx.am_type = AM_PCMEX_TYPE_UNDEF; pcmEx.state = PNW_STATE_IDLE; }
void BGSND_Close(void) { L1Audio_ClearFlag( bgSnd.aud_id ); #ifdef DSP_BGS_UP_DOWN_INT_SEPERATE L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_DL); L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_UL); #else L1Audio_UnhookHisrHandler(D2C_SOUND_EFFECT_INT_ID_DL); #endif // reset the pointer bgSnd.pBuf = NULL; bgSnd.bufSize = 0; bgSnd.bgSnd_hisrHandler = NULL; bgSnd.state = BGSND_STATE_IDLE; }
void DACA_Stop(DACA_APP_TYPE app_type) { // Sal_PCMEx_Config_t cfg_t; // cfg_t.idle = false;//initialized ASSERT((dacaEx.app_type == app_type) && (dacaEx.state == DACA_STATE)); /* the begining of configure the SAL */ if(dacaEx.app_type & DACA_USE_UL){//either ready or off ASSERT(SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_RDY)); }else{ ASSERT(SAL_PcmEx_CheckStateUL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_OFF)); } if(dacaEx.app_type & DACA_USE_DL){//either ready or off ASSERT(SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_RDY)); }else{ ASSERT(SAL_PcmEx_CheckStateDL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_OFF)); } SAL_PcmEx_SetStateUL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_OFF); SAL_PcmEx_SetStateDL(SAL_PCMEX_TYPE_DACA, SAL_PCMEX_OFF); // cfg_t.swi = SAL_PCMEX_SWITCH_OFF; // cfg_t.type = SAL_PCMEX_TYPE_DACA; AM_PCM_EX_Off(dacaEx.am_type, &dacaEx); /* the end of configure the SAL */ L1Audio_UnhookHisrHandler(DP_D2C_DACA_REQ_DL); L1Audio_UnhookHisrHandler(DP_D2C_DACA_REQ_UL); L1Audio_ClearFlag( dacaEx.aud_daca_id ); L1Audio_FreeAudioID( dacaEx.aud_daca_id ); dacaEx.daca_dl_hdlr = dacaEx.daca_ul_hdlr = NULL; dacaEx.state = 0; dacaEx.app_type = DACA_APP_TYPE_UNDEFINE; dacaEx.am_type = 0xFFFF; }
/* Runs under task level */ void avb_Deactivate() { if (AVB.enable == false) return; AVB.enable = false; L1Audio_UnhookHisrHandler(D2C_AUDIO_VIA_8KBT_ID); AVB.downsampler->Close(AVB.downsampler); AVB.downsampler = NULL; kal_prompt_trace( MOD_L1SP, "AVB Closed"); }
void AVB_Close() { kal_uint16 uSampleRate; kal_uint8 uChannelNumber; kal_trace( TRACE_GROUP_SCO, L1AUDIO_AVB_CLOSE, AVB.uState); PcmSink_StopBT(PCMSINK_BT_SCO); if(AVB.uState == AVB_STATE_IDLE) { return; } L1Audio_UnhookHisrHandler(D2C_AUDIO_VIA_8KBT_ID); L1Audio_ClearFlag( AVB.uAudID ); //enable sleep mode L1Audio_FreeAudioID(AVB.uAudID); AVB.uState = AVB_STATE_IDLE; audio_free_mem( (void **) &AVB.pBuffer); BLI_Close(AVB.pBuffer, audio_free_ext_mem_simplified); uSampleRate = AVB.uSampleRate; uChannelNumber = AVB.uChannelNumber; memset(&AVB, 0, sizeof(AVB)); AVB.uSampleRate = uSampleRate; AVB.uChannelNumber = uChannelNumber; }
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; }