Esempio n. 1
0
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 );
}
Esempio n. 3
0
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;
}