void cc_irq_init() { kal_uint32 i; for(i = 0; i < CC_IRQ_NUMBER; i++) { IRQSensitivity(CC_IRQ_INTR_ID_START + i, KAL_FALSE); } /* following registration cannot be placed in a for-loop for MD1 */ /* need to analyze */ IRQ_Register_LISR(CC_IRQ_INTR_ID_START, cc_irq_lisr, "CC_IRQ"); IRQ_Register_LISR(CC_IRQ_INTR_ID_START + 1, cc_irq_lisr, "CC_IRQ"); IRQ_Register_LISR(CC_IRQ_INTR_ID_START + 2, cc_irq_lisr, "CC_IRQ"); IRQ_Register_LISR(CC_IRQ_INTR_ID_START + 3, cc_irq_lisr, "CC_IRQ"); CC_IRQ_HW_INIT(); #if !defined(__UNIFIED_ISR_LEVEL__) cc_irq_hisrid = kal_init_hisr(CC_SYS_HISR); #endif /* init cc sys comm */ cc_sys_comm_init(); }
/*----------------------------------------------------------------------- * FUNCTION * DclSGPT_Initialize * * DESCRIPTION * This function is to initialize SW GPT module. * * PARAMETERS * DCL_STATUS_OK * * RETURNS * none * *------------------------------------------------------------------------*/ DCL_STATUS DclSGPT_Initialize(void) { kal_uint8 index; DCL_GPT_BUS_CLOCK_ON(); /* GPT hardware reset */ drv_gpt_reset(); IRQ_Register_LISR(MDGPT_INTR_ID(DRV_GPT_CALLBACK_TIMER), GPTCB_Lisr, "GPTCBMS"); IRQ_Register_LISR(MDGPT_INTR_ID(DRV_GPT_CBUS_TIMER), GPTCB_US_Lisr, "GPTCBUS"); IRQ_Register_LISR(MDGPT_INTR_ID(DRV_GPT_DEBUG_TIMER), GPT_DEBUG_Lisr, "GPTDEBUG"); #if defined (__MTK_TARGET__) && !defined(__GPTDEBUG_HISR_DISABLE__) && defined(__LTE_RAT__) gpt_debug_hisr = kal_init_hisr(GPT_DEBUG_HISR); #endif /* set gpt CB timer */ drv_gpt_set_timer(DRV_GPT_CALLBACK_TIMER, DCL_GPT_CB_TICK2US, MDGPT_CTRL_MODE_REPEAT); /* set gpt CBUS timer */ drv_gpt_set_timer(DRV_GPT_CBUS_TIMER, DCL_GPT_CBUS_TICK2US, MDGPT_CTRL_MODE_REPEAT); /* set gpt Debug timer, tick unit = us */ drv_gpt_set_timer(DRV_GPT_DEBUG_TIMER, DCL_GPT_CBUS_TICK2US, MDGPT_CTRL_MODE_ONESHOT); /* set OS timer */ drv_gpt_set_timer(DRV_GPT_SYSTEM_TIMER, KAL_MICROSECS_PER_TICK, MDGPT_CTRL_MODE_REPEAT); /* gptCB variables are initialized in BSS reset procedure */ /* Register the GPT CB HISR */ DRV_Register_HISR(DRV_GPT1_HISR_ID, GPTCB_10MS_HISR); DRV_Register_HISR(DRV_GPT2_HISR_ID, GPTCB_US_HISR); for (index = 0; index < MAX_GPT_ITEMS; index++) { gptCB_items[index].gptimer_func = GPT_ERROR_CB; gpt_DEBUG_items[index].gptimer_func = GPT_ERROR_CB; } IRQUnmask(MDGPT_INTR_ID(DRV_GPT_CALLBACK_TIMER)); IRQUnmask(MDGPT_INTR_ID(DRV_GPT_CBUS_TIMER)); IRQUnmask(MDGPT_INTR_ID(DRV_GPT_DEBUG_TIMER)); IRQUnmask(MDGPT_INTR_ID(DRV_GPT_SYSTEM_TIMER)); DCL_GPT_BUS_CLOCK_OFF(); return STATUS_OK; }
/* ------------------------------------------------------------------------------ */ void L1Audio_Task(unsigned argc, void *argv) { uint32 retrieved_events; uint32 I; uint16 tempID; l1audio.aud_events = kal_create_event_group("L1Audio"); l1audio.hisr = kal_init_hisr(L1AUDIO_HISR); GET_SLEEP_HANDLE(); #if ( defined( __CENTRALIZED_SLEEP_MANAGER__ ) && defined(MTK_SLEEP_ENABLE) && !defined(__AUDIO_POWERON_RESET_DSP__) ) l1audio.md2g_pdn_handle = L1D_MD2G_PWD_GetHandle(); l1audio.l1sm_handle = L1SM_IntGetHandle(); #endif l1audio.runningState = 0; l1audio.disallowSleepState = 0; l1audio.dsp_slow_idle_counter = 0; l1audio.event_flag = 0; l1audio.id_flag = 0; l1audio.media_flag = 0; l1audio.postHisrHandler = (L1Audio_EventHandler)0; l1audio.sema = kal_create_sem( "Aud_Sema", 1 ); l1audio.hisrMagicFlag = 0; for( I = 0; I < MAX_HISR_HANDLER; I++ ) l1audio.hisrMagicNo[I] = 0; tempID = L1Audio_GetAudioID(); L1Audio_SetFlag(tempID); DSP_DynamicDownload_Init(); #ifndef L1D_TEST /// Dynamic download for A/V sync #if defined( DSP_WT_SYN ) && !defined(__AUDIO_COMPONENT_SUPPORT__) DSP_DynamicDownload( DDID_WAVETABLE ); #endif #endif AM_Init(); #if APM_SUPPORT APM_Init(); #endif /// AFE_Init will invoke L1Audio_GetAudioID /// and expect to get the id 0 to make sure /// it has the highest priority in the event group AFE_Init(); #if !defined(__SMART_PHONE_MODEM__) && !defined(__L1_STANDALONE__) && !defined( MED_MODEM ) AVsync_Init(); #endif #if defined(__AUDIO_POWERON_RESET_DSP__) { uint32 _savedMask; _savedMask = SaveAndSetIRQMask(); AFE_Init_status(KAL_TRUE); AFE_RegisterBackup(); RestoreIRQMask(_savedMask); } #endif L1SP_Init(); ktInit( L1Audio_GetAudioID() ); toneInit( L1Audio_GetAudioID() ); mediaInit( L1Audio_GetAudioID() ); #if defined(VR_CYBERON) vrsdInit(); #elif defined(VRSI_CYBERON) vrsiInit(); #endif toneLoopbackRecInit(); #if ( defined(__BT_A2DP_PROFILE__) || defined(SBC_UNIT_TEST) ) //&& !(APM_SUPPORT) SBC_Init(); #endif #if defined(__BES_TS_SUPPORT__) AudioPP_TS_Init(); #endif #ifdef __CTM_SUPPORT__ l1ctm_init(); #endif #ifdef __TWOMICNR_SUPPORT__ Two_Mic_NR_chip_Init(); #endif #if VMI_SUPPORT || defined(VORTP_UNIT_TEST) VMI_Init(); #endif #if VORTP_SUPPORT || defined(VORTP_UNIT_TEST) VoRTP_Init(); #endif #if defined(CYBERON_DIC_TTS) || defined(IFLY_TTS) || defined(SINOVOICE_TTS) ttsInit(); #endif #if defined( DSP_WT_SYN ) && !defined(__AUDIO_COMPONENT_SUPPORT__) DSPSYN_HW_Init(); #endif #if defined( __I2S_INPUT_MODE_SUPPORT__ ) I2S_init(); #endif #if defined(__VOICE_CHANGER_SUPPORT__) VCHG_Initialize(); #endif #if defined(__AUDIO_COMPONENT_SUPPORT__) && !defined(__L1_STANDALONE__) && !defined(MED_MODEM) // KH : for audio component ACU_Init(); #endif #if defined(__CVSD_CODEC_SUPPORT__) { extern void BT_SCO_Init(void); BT_SCO_Init(); } #endif memset( &(l1audio.debug_info), 0, sizeof(l1audio.debug_info) ); AFE_TurnOnFIR( L1SP_SPEECH ); AFE_TurnOnFIR( L1SP_VOICE ); L1Audio_ClearFlag(tempID); L1Audio_FreeAudioID(tempID); l1audio.isInitiated = KAL_TRUE; while( 1 ) { #if VERIFY_DATA_TO_DSP VERIFY_DATA_TO_DSP_SAVE_DATA(); #endif kal_retrieve_eg_events(l1audio.aud_events,0xFFFF,KAL_OR_CONSUME,&retrieved_events,KAL_SUSPEND); l1audio.retrieved_events = retrieved_events; l1audio.events_l1FN = L1I_GetTimeStamp(); for( I = 0; I < MAX_AUDIO_FUNCTIONS; I++ ) { if ( l1audio.retrieved_events & (1<<I) ) { l1audio.evHandler[I]( l1audio.evData[I] ); } } //if( (l1audio.runningState & l1audio.disallowSleepState) == 0 ) if( l1audio.runningState == 0 ) SLEEP_UNLOCK(); } }