Пример #1
0
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);

	}

}
Пример #2
0
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
}
Пример #3
0
/**
	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);    
}
Пример #5
0
/*************************************************************************
* 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);
}
Пример #6
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);
}
Пример #7
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
}
Пример #8
0
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;
}