void bmt_enable_sleepmode(kal_bool enable) { if (KAL_TRUE==enable) { bmt_sleepmode=KAL_TRUE; #ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ kal_cancel_timer(bmt_sw_polling_timerId); #endif //#ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ #ifdef MTK_SLEEP_ENABLE L1SM_SleepEnable(bmt_sm_handle); #endif drv_trace0(TRACE_GROUP_10, BMT_SW_ENABLE_SLEEP_MODE); } else { bmt_sleepmode=KAL_FALSE; #ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ kal_set_timer(bmt_sw_polling_timerId, (kal_timer_func_ptr)bmt_sw_polling_ov, NULL,43 , 0); #endif //#ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ #ifdef MTK_SLEEP_ENABLE L1SM_SleepDisable(bmt_sm_handle); #endif drv_trace0(TRACE_GROUP_10, BMT_SW_DISABLE_SLEEP_MODE); } }
void ADIE_SetRefreshTimer(void) { #if defined(MT6250) TM_TCB *tm_ptr; kal_internal_timerid kal_timer; ADIE_IRQ_Timer = kal_create_timer("ADIE_IRQ"); kal_timer = (kal_internal_timerid)ADIE_IRQ_Timer; tm_ptr = &(((TM_APP_TCB *)&(kal_timer->timer_id))->tm_actual_timer); kal_set_aligned_timer(tm_ptr, ALIGNED_TIMER_MAX_DELAY); kal_set_timer(ADIE_IRQ_Timer, (kal_timer_func_ptr)ADIE_IRQ_TimerCallback, NULL, KAL_TICKS_100_MSEC, KAL_TICKS_100_MSEC); #endif }
/** Run on AUDIO task */ void bgsndEventHandler(void) { kal_trace(TRACE_STATE, L1SND_ENTER_EVENT_HANDLER, bgSnd.state); switch (bgSnd.state) { case BGSND_STATE_STOP: { // int32 I = 0; // Flush and Disable DSP. //while( I++ >= 0 ){ while(bgSnd.endCount++ >=0){ int32 count = bgsndGetDataCount(); // if( I >=40 ){ if(bgSnd.endCount >=20) { kal_trace(TRACE_STATE, L1SND_STOP_FLUSH_LEAVE, count); break; } if( count > BGSND_BUF_PTR_DIFF ){ kal_trace(TRACE_STATE, L1SND_STOP_FLUSH_COUNT, count); // kal_sleep_task(1); kal_set_timer(bgSnd.timer, (kal_timer_func_ptr)(bgsndTimerCallback), NULL, 2, 0); return; } } //if ( *DSP_SOUND_EFFECT_CTRL == DP_BGSND_STATE_PLAYING ) { // *DSP_SOUND_EFFECT_CTRL = DP_BGSND_STATE_STOP; /* give ABORT command to the DSP */ //} kal_cancel_timer(bgSnd.timer); bgsndOffHandler(); if(NULL != bgSnd.bgSnd_offHandler){ bgSnd.bgSnd_offHandler(); } } break; default: break; } }
void lpm_init(void) { #if 1 /*TBC...*/ { LPM_REG_CLR_SET(PLL_CLKSW_FDIV2, 0xF<<0, 4<<0); DRV_SetReg32(PLL_CLKSW_FDIV6, 0x04); DRV_SetReg32(PLL_CLKSW_FDIV6, 0x0100); DRV_ClrReg32(PLL_CLKSW_FDIV6, 0x0100); } PDN_CLR(PDN_LPM); #endif /* It is disabled for low power(TOPSM) requirement. */ kal_set_timer(kal_create_timer("DCM_Timer"), (kal_timer_func_ptr)DCM_Trace, NULL, KAL_TICKS_5_SEC, KAL_TICKS_5_SEC); }
/************************************************************************* * FUNCTION * e_compass_sensor_power_on * * DESCRIPTION * This function is to turn on sensor * * PARAMETERS * None * * RETURNS * None * * GLOBALS AFFECTED * *************************************************************************/ void e_compass_sensor_power_on(void) { static kal_bool is_middleware_init = KAL_FALSE; drv_trace0(TRACE_GROUP_10, EC_CALIBRATION_POWERON); if (KAL_FALSE == is_middleware_init) { /* we just need to initialize middleware once */ e_compass_sensor_custom_fp->ec_init_calibrated_data(&e_compass_calibrated_data); is_middleware_init = KAL_TRUE; } e_compass_sensor_custom_fp->ec_turn_on(1); /* we start timer, after timer expired, it will invoke e_compass_sensor_power_on_callback because sensor need some time to be ready after power on */ kal_set_timer(e_compass_power_on_timer_id,(kal_timer_func_ptr)e_compass_sensor_power_on_callback,NULL, e_compass_sensor_custom_dp->poweron_delay,0); }
static void bmt_sw_polling_charger_ov(void *timer_param) { DCL_BOOL charge_en = KAL_FALSE; DCL_BOOL hv_status; bmt_charging_control_handler(BMT_CHARGING_CMD_GET_HV_STATUS, &hv_status); if (DCL_TRUE == hv_status) { bmt_charging_control_handler(BMT_CHARGING_CMD_CHARGING_ENABLE, &charge_en); drv_trace0(TRACE_GROUP_10, BMT_SW_POLLING_CHARGER_OV_TRC); } else { bmt_charging_control_handler(BMT_CHARGING_CMD_WDT_CLEAR,NULL); } kal_set_timer(bmt_sw_polling_timerId, (kal_timer_func_ptr)bmt_sw_polling_charger_ov, NULL, KAL_TICKS_200_MSEC , 0); }
void bmt_sw_polling_ov(void *timer_param) { PMU_CTRL_CHR_GET_VCDT_HV_DET chr_hv_det; DclPMU_Control(bmt_PmuHandler, CHR_GET_VCDT_HV_DET, (DCL_CTRL_DATA_T *)&chr_hv_det); if (chr_hv_det.HV_deteted) { drv_trace0(TRACE_GROUP_10, BMT_SW_POLLING_CHARGER_OV_TRC); BMT_Charge(KAL_FALSE); } else { DclPMU_Control(bmt_PmuHandler, CHR_SET_WDT_CLEAR, NULL); } kal_set_timer(bmt_sw_polling_timerId, (kal_timer_func_ptr)bmt_sw_polling_ov, NULL,43 , 0); //200ms }
void bmt_enable_sleepmode(kal_bool enable) { if (KAL_TRUE == enable) { #ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ kal_cancel_timer(bmt_sw_polling_timerId); #endif #if(defined(MTK_SLEEP_ENABLE) && defined(__CENTRALIZED_SLEEP_MANAGER__) && defined(__DRV_BMT_WAKE_UP_TDMA_TIMER__)) { L1SM_SleepEnable( BMTLockARM_handle ); // should un-lock ARM first L1SM_IntSleepEnable( BMTLockMD2G_handle ); } #elif defined(MTK_SLEEP_ENABLE) L1SM_SleepEnable(BMTLockARM_handle); #endif } else { #if(defined(MTK_SLEEP_ENABLE) && defined(__CENTRALIZED_SLEEP_MANAGER__) && defined(__DRV_BMT_WAKE_UP_TDMA_TIMER__)) { L1SM_IntSleepDisable( BMTLockMD2G_handle ); // should lock MD2G first L1SM_SleepDisable( BMTLockARM_handle ); L1SM_Multi_SW_WakeUp(); } #elif defined(MTK_SLEEP_ENABLE) L1SM_SleepDisable(BMTLockARM_handle); #endif #ifdef __DRV_BMT_SW_POLLING_CHARGER_OV__ kal_set_timer(bmt_sw_polling_timerId, (kal_timer_func_ptr)bmt_sw_polling_charger_ov, NULL, KAL_TICKS_200_MSEC ,0); #endif } }
DCL_STATUS gpio_15_segment_led_control(kal_uint8 word1, kal_uint8 word2) { #if defined(DRV_GPIO_FOR_LED_AND_15_SEGMENT) kal_uint32 savedMask; DCL_HANDLE handle; PMU_CTRL_LDO_BUCK_SET_EN val; PMU_CTRL_LDO_BUCK_SET_VOLTAGE val1; val1.voltage = PMU_VOLT_02_800000_V; val1.mod = VMC; handle = DclPMU_Open(DCL_PMU,FLAGS_NONE); DclPMU_Control(handle, LDO_BUCK_SET_VOLTAGE,(DCL_CTRL_DATA_T *)&val1); val.enable = DCL_TRUE; val.mod = VMC; DclPMU_Control(handle, LDO_BUCK_SET_EN,(DCL_CTRL_DATA_T *)&val); DclPMU_Close(handle); if(debug1_Handle == 0 || debug2_Handle == 0 || debug3_Handle == 0 || debug4_Handle == 0) { debug1_Handle = DclGPIO_Open(DCL_GPIO,62); debug2_Handle = DclGPIO_Open(DCL_GPIO,63); debug3_Handle = DclGPIO_Open(DCL_GPIO,64); debug4_Handle = DclGPIO_Open(DCL_GPIO,65); } if(fifteen_segment_timer == NULL) fifteen_segment_timer = kal_create_timer("15_segment_TIMER"); switch(word1) { case '2': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table1; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); break; } case '3': { if(word2 == 1) { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table7; table_count = 7; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); } else { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table6; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display,NULL, 1, 1); } break; } case '6': { if(word2 == 1) { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table3; table_count = 8; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); } else { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table2; table_count = 7; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); } break; } case 'd': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table12; table_count = 7; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); break; } case 'E': { if(word2 == 1) { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table5; table_count = 7; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); } else { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table4; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); } break; } case 'h': { if(word2 == 1) { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table9; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); } else { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table8; table_count = 5; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); } break; } case 'H': { if(word2 == 1) { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table11; table_count = 7; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); } else { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table10; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); } break; } case 'I': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table17; table_count = 4; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer, (kal_timer_func_ptr)gpio_15_segment_display, NULL, 1, 1); break; } case 'L': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table15; table_count = 3; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); break; } case 'N': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table16; table_count = 6; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); break; } case 'X': { savedMask = SaveAndSetIRQMask(); word_to_display = char_to_display_table13; table_count = 4; RestoreIRQMask(savedMask); kal_set_timer(fifteen_segment_timer,(kal_timer_func_ptr) gpio_15_segment_display, NULL, 1, 1); break; } case 0: { kal_cancel_timer(fifteen_segment_timer); DclGPIO_Control(debug1_Handle,GPIO_CMD_WRITE_HIGH,0); DclGPIO_Control(debug2_Handle,GPIO_CMD_WRITE_HIGH,0); DclGPIO_Control(debug3_Handle,GPIO_CMD_WRITE_HIGH,0); DclGPIO_Control(debug4_Handle,GPIO_CMD_WRITE_HIGH,0); break; } default: { ASSERT(0); return STATUS_INVALID_CTRL_DATA; } } return STATUS_OK; #else return STATUS_FAIL; #endif }
DCL_STATUS gpio_led_control(LED_NUM led_num, LED_CTRL_CMD cmd, kal_uint16 freq) { #if defined(DRV_GPIO_FOR_LED_AND_15_SEGMENT) DCL_HANDLE handle; PMU_CTRL_LDO_BUCK_SET_EN val; PMU_CTRL_LDO_BUCK_SET_VOLTAGE val1; val1.voltage = PMU_VOLT_02_800000_V; val1.mod = VMC; handle = DclPMU_Open(DCL_PMU,FLAGS_NONE); DclPMU_Control(handle, LDO_BUCK_SET_VOLTAGE,(DCL_CTRL_DATA_T *)&val1); val.enable = DCL_TRUE; val.mod = VMC; DclPMU_Control(handle, LDO_BUCK_SET_EN,(DCL_CTRL_DATA_T *)&val); DclPMU_Close(handle); #endif #if defined(GPIO_NUMBER_FOR_LED1) if(led1_handle == 0) { ASSERT(0); } #endif #if defined(GPIO_NUMBER_FOR_LED2) if(led2_handle == 0) { ASSERT(0); } #endif switch(cmd) { case LED_CMD_FLICKER: { if(led_num == GPIO_LED1) { kal_set_timer(led1_timer, (kal_timer_func_ptr)led1_flicker, NULL, freq, freq); } else { kal_set_timer(led2_timer, (kal_timer_func_ptr)led2_flicker, NULL, freq, freq); } break; } case LED_CMD_DIMMING: { led_Dimming(led_num);//always diming break; } case LED_CMD_BRIGHTING: { led_brighting(led_num);//always lighting break; } default: { ASSERT(0); return STATUS_INVALID_CMD; } } return STATUS_OK; }