Exemple #1
0
/*****************************************************************************
 * FUNCTION
 *  vid_init
 * DESCRIPTION
 *  This function is used to init video module of media task.
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool vid_init(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    vid_context_p->state = VID_IDLE;
    vid_context_p->aud_state = VID_AUD_IDLE;
    vid_context_p->vid_event = kal_create_event_group("vid_events");
    vid_context_p->vid_event_ext = kal_create_event_group("vid_events_ext");
    vid_context_p->image_path_open = KAL_FALSE;
    vid_context_p->em_mode = VID_EM_MODE_DISABLED;
#ifdef __MED_VID_MOD__
    vid_context_p->audio_frame_num = 0;
    vid_context_p->total_frame_num = 0;
    vid_context_p->current_time = 0;
    vid_context_p->total_time = 0;
    vid_context_p->display_width = 0;
    vid_context_p->display_height = 0;
    vid_context_p->image_width = 0;
    vid_context_p->image_height = 0;
    vid_context_p->file_size = 0;
    vid_context_p->storing_path[0] = 0;
    vid_context_p->handle = NULL;
    vid_context_p->data_idx = -1;
    vid_context_p->play_speed = 100;
 
    vid_context_p->vid_get_time_mutex = kal_create_mutex("VID_GET_TIME");
    
#endif /* __MED_VID_MOD__ */ 
#if defined(__MED_MJPG_MOD__)
    vid_context_p->total_frame_num = 0;
    vid_context_p->current_time = 0;
    vid_context_p->total_time = 0;
    vid_context_p->display_width = 0;
    vid_context_p->display_height = 0;
    vid_context_p->image_width = 0;
    vid_context_p->image_height = 0;
    vid_context_p->file_size = 0;
    vid_context_p->storing_path[0] = 0;
    
    vid_context_p->mjpeg_mutex = kal_create_mutex("VID_MJPEG");
    vid_context_p->mjpeg_insert_frame_count = 1;
    vid_context_p->mjpeg_is_jpg_encoding = KAL_FALSE;

    /* init avi kernel */
    med_avi_init();
#endif /* defined(__MED_MJPG_MOD__) */

#ifdef __MED_VID_EDT_MOD__
    vid_context_p->edt_video_buff_p = NULL;
#endif /*__MED_VID_EDT_MOD__*/

    return KAL_TRUE;
}
Exemple #2
0
/*
* FUNCTION
*	   IMGPROC_Init
*
* DESCRIPTION
*   	Initialize the IMGPROC driver and it should be called only once.
*
* CALLS
*
* PARAMETERS
*
* RETURNS
*	   None
*
* GLOBALS AFFECTED
*     None
*/
kal_int32 API IMGPROC_Init(void)
{
#if (defined(DRV_IDP_6219_SERIES))
	ASSERT(IMGPROC_Events == 0);
	IMGPROC_Events = kal_create_event_group("IMGPROC Events");
	VISUAL_Register_HISR(VISUAL_IMGPROC_HISR_ID,IMGPROC_HISR_Entry);
   IRQ_Register_LISR(IRQ_IMGPROC_CODE, IMGPROC_LISR_Entry,"IMGPROC");
	IRQSensitivity(IRQ_IMGPROC_CODE,LEVEL_SENSITIVE);
	IRQUnmask(IRQ_IMGPROC_CODE);
	kal_mem_set(&imgproc_dcb,0,sizeof(IMGPROC_DCB_STRUCT));
#elif (defined(DRV_IDP_6228_SERIES))
	IMGPROC_Events = kal_create_event_group("IMGPROC Events");
	VISUAL_Register_HISR(VISUAL_IMGPROC_HISR_ID,IMGPROC_HISR_Entry);
   IRQ_Register_LISR(IRQ_IMGPROC_CODE, IMGPROC_LISR_Entry,"IMGPROC");
	IRQSensitivity(IRQ_IMGPROC_CODE,LEVEL_SENSITIVE);
	IRQUnmask(IRQ_IMGPROC_CODE);
#endif
	return NO_ERROR;
}
Exemple #3
0
/******************************************************************
 * FUNCTION
 *    cam_init
 * DESCRIPTION
 *    This function is used to init camera module of media task.
 * PARAMETERS
 *    
 *    
 * RETURNS
 *
 * GLOBALS AFFECTED
 *  
 *  
 ******************************************************************/
kal_bool cam_init(void)
{
	mmi_trace(g_sw_CAMERA, "Excute func : cam_init()");
   cam_context_p->state = CAM_IDLE;
   cam_context_p->capture_buffer_p=0;
   cam_context_p->cam_event = kal_create_event_group("cam_events");

   cam_context_p->intmem_start_address=0;
   cam_context_p->extmem_start_address=0;
   cam_context_p->int_frame_buffer_p=0;
   return KAL_TRUE;
}
/*****************************************************************************
 * FUNCTION
 *  always_ask_register_app_chain_add
 * DESCRIPTION
 *  
 * PARAMETERS
 *  
 * RETURNS
 *  void
 *****************************************************************************/
BOOL srv_cbm_create_sem(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    g_cbm_srv_cxt_ptr->nwk_srv.wait_event = kal_create_event_group("cbm_wait_events");

    return TRUE;
}
void ICUSB_ICCD_Init(kal_uint8 iccd_index)
{
	/* Initailize the information, Cannot create Event on HISR */
	
	if(g_UsbHostIccd[iccd_index].event_id == 0)
		g_UsbHostIccd[iccd_index].event_id = kal_create_event_group("USB_ICCD_EVEVT");

	if(g_UsbHostIccd[iccd_index].mutex_id == 0)
		g_UsbHostIccd[iccd_index].mutex_id = kal_create_mutex("USB_ICCD_MUTEX");

	USB_GPTI_GetHandle(&(g_UsbHostIccd[iccd_index].sleep_timer_handle));// DclSGPT_Open(DCL_GPT_CB, 0);

//	if (g_UsbHostIccd[iccd_index].sleep_timer_handle == 0)
//		g_UsbHostIccd[iccd_index].sleep_timer_handle = USB_GPTI_GetHandle();// DclSGPT_Open(DCL_GPT_CB, 0);
//		GPTI_GetHandle(&g_UsbHostIccd[iccd_index].sleep_timer_handle);
}
/*************************************************************************
* FUNCTION
*   ec_task_main
*
* DESCRIPTION
*   This function implements xyz task's entry function
*
* PARAMETERS
*
* RETURNS
*   None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void ec_task_main( task_entry_struct * task_entry_ptr )
{	
    kal_uint32 event_group;
    /*initialize function*/
    if (e_compass_sensor_data.event == NULL)
      e_compass_sensor_data.event = kal_create_event_group("ECEVT");
    e_compass_init();

    while (1) 
    {
        kal_retrieve_eg_events(e_compass_sensor_data.event,1,KAL_OR_CONSUME,&event_group,KAL_SUSPEND);
        e_compass_main_hdr();
    }

    /* Do component task's processing here */
}
Exemple #7
0
void ccci_ipc_init(void)
{
    kal_uint32 p_cache_aligned; 
    
    //Send message does not need callback
    ccci_ipc_ch.ccci_init_gpdior(ccci_ipc_ch.send_channel ,  ccci_ipc_send_msg_cb);
    //send mesage ack need to implement callback
//	    ccci_ipc_ch.ccci_init_gpdior(ccci_ipc_ch.send_ack_channel , ccci_ipc_error_cb);
    //Receive mesage need to implement callback
    ccci_ipc_ch.ccci_init_gpdior(ccci_ipc_ch.receive_channel , ccci_ipc_receive_msg_cb);
    //Receive mesage ack does not need to implement callback
//	    ccci_ipc_ch.ccci_init_gpdior(ccci_ipc_ch.receive_ack_channel , ccci_ipc_error_cb);

    //Initialize the event for usage
    if (ccci_ipc_ch.event == 0){
        ccci_ipc_ch.event = kal_create_event_group("CCCI_IPC");
    }
    //Initialize the semaphore for critical section 
    if (ccci_ipc_ch.semaphore == 0){
        ccci_ipc_ch.semaphore = kal_create_sem("CCCI_IPC",1); 
    }

    /* initialize polling mode GPD */
    ASSERT(CCCI_IPC_POLLING_MODE_BUF_SZ >= 2*CPU_CACHE_LINE_SIZE);
    /*make p_gpd aligned to CPU_CACHE_LINE_SIZE_MASK*/
    p_cache_aligned = (kal_uint32)g_ccci_ipc_polling_buf;
    if(p_cache_aligned&CPU_CACHE_LINE_SIZE_MASK) { 
        p_cache_aligned = ((kal_uint32)(g_ccci_ipc_polling_buf)&~CPU_CACHE_LINE_SIZE_MASK);
        p_cache_aligned += CPU_CACHE_LINE_SIZE;
    }

    // The reason + QBM_HEAD_SIZE is for ROME E1, cldma needs to record this buff whether is cacheable or non-cacheable
	ccci_ipc_ch.p_polling_gpd = (qbm_gpd *)(p_cache_aligned + QBM_HEAD_SIZE);
    
    // register ccci debug get status cb funp
    ccci_debug_get_status_register(CCCI_DEBUG_GET_STATUS_MODULE_CCCIIPC, ccci_ipc_get_debug_status);    
    
    CCCIDEV_RST_CCCI_COMM_GPD_LIST(ccci_ipc_ch.p_polling_gpd,ccci_ipc_ch.p_polling_gpd);

#ifdef CCCI_IT_MODE_CONTROL_CCCI_IPC
    ccci_ipc_it_create();
#endif
}
Exemple #8
0
/*****************************************************************************
 * FUNCTION
 *  img_init
 * DESCRIPTION
 *  This function is used to init image module of media task.
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool img_init(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    img_context_p->state = IMG_IDLE;

    img_context_p->file_buffer_address = NULL;
    img_context_p->intmem_start_address = NULL;
    img_context_p->extmem_start_address = NULL;
    img_context_p->processing = KAL_FALSE;
    img_context_p->img_event = kal_create_event_group("img_events");

    return KAL_TRUE;
}
Exemple #9
0
/*****************************************************************************
 * FUNCTION
 *  webcam_init
 * DESCRIPTION
 *  This function is used to init tv output module of media task.
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool webcam_init(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    webcam_context_p->state = WEBCAM_IDLE;
    webcam_context_p->intmem_start_address = 0;
    webcam_context_p->intmem_size = 0;
    webcam_context_p->buffer_addr = 0;
    webcam_context_p->buffer_size = 0;

    webcam_context_p->webcam_event = kal_create_event_group("webcam_events");

    return KAL_TRUE;
}
Exemple #10
0
/*****************************************************************************
 * FUNCTION
 *  vcall_init
 * DESCRIPTION
 *  initiation function for vcall
 * PARAMETERS
 *  void
 * RETURNS
 * TRUE
 *****************************************************************************/
kal_bool vcall_init(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_trace(TRACE_GROUP_4, VCALL_TRC_VCALL_INIT);
    
    kal_mem_set(&vcall_ctx, 0, sizeof(vcall_context_struct));

    vcall_ctx.event = kal_create_event_group("vcall_event");

    vcall_ctx.video_encoder.cfg.callback = vcall_video_encoder_event_callback;
    vcall_ctx.video_decoder.cfg.callback = vcall_video_decoder_event_callback;

    return KAL_TRUE;
}
/*****************************************************************************
 * FUNCTION
 *  ies_task_init
 * DESCRIPTION
 *  image viewer daemon task init function
 * PARAMETERS
 *  *task_indx    [IN]    task index
 * RETURNS
 *  KAL_TRUE init OK
 *****************************************************************************/
static kal_bool ies_task_init(task_indx_type task_indx)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    stack_set_active_module_id(INDX_IES, MOD_IES);

    g_ies_task_context.pJob    = NULL;

    LIST_INIT(&(g_ies_task_context.normal));
    LIST_INIT(&(g_ies_task_context.lowest));

    g_srv_ies_job_mutex = kal_create_mutex("IESJOBMX");
    g_srv_ies_job_event = kal_create_event_group("ies_evt");
   
    return KAL_TRUE;
}
Exemple #12
0
/*****************************************************************************
 * FUNCTION
 *  tvo_init
 * DESCRIPTION
 *  This function is used to init tv output module of media task.
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_bool tvo_init(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    tvo_context_p->state = TVO_IDLE;

    tvo_context_p->tv_output = KAL_FALSE;
    tvo_context_p->tv_connected = KAL_FALSE;
    tvo_context_p->tv_output_width = 0;
    tvo_context_p->tv_output_height = 0;
    tvo_context_p->tv_output_buffer1_address = 0;
    tvo_context_p->tv_output_buffer2_address = 0;
    tvo_context_p->tv_output_buffer_size = 0;
    tvo_context_p->tvo_event = kal_create_event_group("tvo_events");

    return KAL_TRUE;
}
static kal_bool l1audio_init(void)
{
#if (defined( __SMART_PHONE_MODEM__ ) && defined(__DSP_FCORE4__))
   {
      kal_int32 ret;
      ret = ccci_owner_init(CCCI_PCM_CHANNEL_ACK, kal_get_task_by_moduleID(MOD_L1SP), spc_A2M_hisr);
      if (ret != CCCI_SUCCESS) {
          ASSERT(0);
      }
      ret = ccci_owner_init(CCCI_PCM_CHANNEL, kal_get_task_by_moduleID(MOD_L1SP), spc_M2A_hisr);
      if (ret != CCCI_SUCCESS) {
          ASSERT(0);
      }
   }
#endif

#if (defined( __SMART_PHONE_MODEM__ ) && defined(__DSP_FCORE4__))
   aud_events = kal_create_event_group("L1Audio");     
   L1Audio_SMP_MsgQueueInit();
   audio_id = L1Audio_GetAudioID();
   id_flag = (1<<audio_id);
   L1Audio_SMP_Init(audio_id);
#endif

#if defined(__AUDIO_DSP_LOWPOWER__) || defined(__AUDIO_DSP_LOWPOWER_V2__)
   AUDLP_Init();
#endif

#if defined(__MTK_TARGET__)
   audioDsp_dump.regions = (kal_uint32*)audioDsp_dump_regions;
   audioDsp_dump.num = sizeof(audioDsp_dump_regions) / (sizeof(kal_uint32) * 3);
   audioDsp_dump.bbreg_dump_callback = NULL;
   EX_REGISTER_BBREG_DUMP(&audioDsp_dump);
#endif /* __MTK_TARGET__ */


   return KAL_TRUE;
}
kal_bool IC_USB_POWER_ON(kal_uint8 iccd_index,kal_bool blocking)
{
	kal_uint8 index;	
	kal_uint32 event_group;
	

	if(g_UsbHostIccd[iccd_index].start_event_id == 0)
	{
		g_UsbHostIccd[iccd_index].start_event_id = kal_create_event_group("ICUSB_ENUMERATION"); 
	}
	else
	{
		/* Receive all events that may exist after previous detatch */
		kal_retrieve_eg_events(g_UsbHostIccd[iccd_index].start_event_id, EVENT_ICUSB_ENUMERATION_DONE|EVENT_ICUSB_ENUMERATION_FAIL, 
							KAL_OR_CONSUME, &event_group, KAL_NO_SUSPEND);
	}

//	for (index = USB_EXT_IP_NUM; index< USB_IP_NUM; index++)  // only enable ICUSB Drive
	for (index = 0; index< USB_IP_NUM; index++)
		USBD_Init(index);

	ICUSB_Drv_Init();
			
	if (blocking == KAL_TRUE)
	{
		kal_retrieve_eg_events(g_UsbHostIccd[iccd_index].start_event_id, EVENT_ICUSB_ENUMERATION_DONE|EVENT_ICUSB_ENUMERATION_FAIL, 
						KAL_OR_CONSUME, &event_group, KAL_SUSPEND);	
		if (event_group & EVENT_ICUSB_ENUMERATION_FAIL)
			return KAL_FALSE;
		else
			return KAL_TRUE;
	}
	else
	{
		return KAL_TRUE;
	}
}
/* Note that this function should be called when first detect ms device*/
void USB_Host_Ms_State_Start(kal_uint8 ms_index)
{
	kal_uint32 index;
	kal_bool result;
//	SGPT_CTRL_START_T start;

	/* Initailize the information */
	if(g_UsbHostMs[ms_index].event_id == 0)
		g_UsbHostMs[ms_index].event_id = kal_create_event_group("USB_MS_EVEVT");

	if(g_UsbHostMs[ms_index].mutex_id == 0)
		g_UsbHostMs[ms_index].mutex_id = kal_create_mutex("USB_MS_MUTEX");

	USB_GPTI_GetHandle(&(g_UsbHostMs[ms_index].gpt_handle));//DclSGPT_Open(DCL_GPT_CB, 0);//GPTI_GetHandle(&g_UsbHostMs.gpt_handle);

//	if (g_UsbHostMs[ms_index].gpt_handle == 0)
//		g_UsbHostMs[ms_index].gpt_handle = USB_GPTI_GetHandle();//DclSGPT_Open(DCL_GPT_CB, 0);//GPTI_GetHandle(&g_UsbHostMs.gpt_handle);

	USB_GPTI_GetHandle(&(g_UsbHostMs[ms_index].sleep_timer_handle));//DclSGPT_Open(DCL_GPT_CB, 0);//GPTI_GetHandle(&g_UsbHostMs.gpt_handle);

//	if (g_UsbHostMs[ms_index].sleep_timer_handle== 0)
//		g_UsbHostMs[ms_index].sleep_timer_handle = USB_GPTI_GetHandle();//DclSGPT_Open(DCL_GPT_CB, 0);//GPTI_GetHandle(&g_UsbHostMs.gpt_handle);


	/* Get LUN, it contains the error handling */
	result = USB_Host_Ms_Comp_Get_LUN(ms_index);

	if(result == KAL_TRUE)
	{
		/* The got LUN is total lun - 1 */
		g_UsbHostMs[ms_index].total_lun++;

		/* If LUN number is larger than we can support, onlt the first N can be detected */
		if(g_UsbHostMs[ms_index].total_lun > USB_HOST_MS_SUPPORT_LUN)
			g_UsbHostMs[ms_index].total_lun = USB_HOST_MS_SUPPORT_LUN;
	}
	else
	{
		/* when device not implement this command, it is only one LUN */
		g_UsbHostMs[ms_index].dev_error_count = 0;
		g_UsbHostMs[ms_index].total_lun = 1;
	}

	/* Reset all the LUN state to absent state */
	for(index = 0; index < g_UsbHostMs[ms_index].total_lun; index++)
	{
		g_UsbHostMs[ms_index].media_info[index].state = USB_HOST_MS_MEDIA_STATE_ABSENT;
	}

	/* Get LUN is success, continue to query each LUN info */
	result = USB_Host_Ms_Query_All_Media(ms_index);
	/* If result is fail, ms has been detached */

	if(result == KAL_TRUE)
	{
		/* Query each LUN is success, continue to check whether each LUN is in card slot or not */
		result = USB_Host_Ms_Check_All_Media(ms_index);
		/* If result is fail, ms has been detached */
	}

	drv_trace1(TRACE_FUNC, (kal_uint32)USB_HOST_MS_CHECK_MEDIA_STATE, g_UsbHostMs[ms_index].media_state_change);
	USB_Dbg_Trace(USB_HOST_MS_REPORT_MEDIA_STATE,  g_UsbHostMs[ms_index].media_state_change, (kal_uint32)g_UsbHostMs[ms_index].b_sending_change_ilm);

	if(result == KAL_TRUE)
	{
		/* To prevent USB disconn intr coming during this moment */
		IRQMask(USB_IRQ_MAP[g_UsbHostMs[ms_index].common_info.usb_ip_port]);

		if((g_UsbHostMs[ms_index].media_state_change != 0)&&(g_UsbHostMs[ms_index].b_sending_change_ilm == KAL_FALSE))
		{
			USB_Host_Ms_Check_Media_State(ms_index);
		}

		/* If device is plugged out, do not send this message */
		if(g_UsbHostMs[ms_index].dev_attatch == KAL_TRUE)
		{
			/* Start timer to query device state */
			USB_GPTI_StartItem(g_UsbHostMs[ms_index].gpt_handle, USB_HOST_MS_QUERY_PERIOD,USB_Host_Ms_State_Timeout, &g_UsbHostMs);
//			start.u2Tick =USB_HOST_MS_QUERY_PERIOD;
//			start.pfCallback = USB_Host_Ms_State_Timeout;
//			start.vPara = &g_UsbHostMs[ms_index];
//			DclSGPT_Control((DCL_HANDLE)(g_UsbHostMs[ms_index].gpt_handle), SGPT_CMD_START, (DCL_CTRL_DATA_T*)&start);				
		}

		if(USBD_Get_UnMask_Irq(g_UsbHostMs[ms_index].common_info) == KAL_TRUE)
			IRQUnmask(USB_IRQ_MAP[g_UsbHostMs[ms_index].common_info.usb_ip_port]);
	}
	else
	{
		drv_trace0(TRACE_FUNC, (kal_uint32)USB_HOST_MS_STATE_START_FAIL);
	}


}
void _FT_SendFtMsgByToken(module_type  src_mod, module_type  dest_mod, sap_type  sap, msg_type  msg, ilm_struct  *ilm_ptr, kal_uint16  token)
{
    ilm_ptr->src_mod_id  = src_mod;
    ilm_ptr->dest_mod_id = dest_mod;
    ilm_ptr->msg_id = msg;
    ilm_ptr->sap_id = sap;
#if !defined(__DHL_MODULE__)
    if (dest_mod == MOD_TST) {
#else
    if (dest_mod == MOD_DHL) {
#endif // #if !defined(__DHL_MODULE__)
        ((FT_H *)(ilm_ptr->local_para_ptr))->token=token;
        ilm_ptr->src_mod_id  = (module_type)0xA1;
        ilm_ptr->dest_mod_id = (module_type)0;
        ilm_ptr->sap_id      = (sap_type)0xA3;
        ilm_ptr->msg_id      = (msg_type)2;
#if !defined(__DHL_MODULE__)
        // directly copy primitive to TST ring buffer
        tst_log_primitive_without_filter_check(
                ilm_ptr,
                RS232_LOGGED_PRIMITIVE_TYPE,
                MSG_ID_LOGGED_PRIMITIVE);
#else
        dhl_FT_log_primitive(ilm_ptr);                
#endif // #if !defined(__DHL_MODULE__)
        // cancel ilm, because we directly access TST ring buffer, no need to send primitive to TST
        destroy_ilm(ilm_ptr);
        return;
    }
    msg_send6(src_mod, dest_mod, sap, msg, ilm_ptr->local_para_ptr, ilm_ptr->peer_buff_ptr);
}
/*******************************************************************************
 *
 *  FT Module Initialization Functions
 *
 *******************************************************************************/
/*******************************************************************************
 * FUNCTION
 *   FT_InitFtData
 *
 * DESCRIPTION
 *
 * CALLS
 *
 * PARAMETERS
 *
 * RETURNS
 *   None
 *
 * GLOBALS AFFECTED
 *******************************************************************************/
extern kal_int8 FT_FAT_Handle_Clear(void);
void FT_InitFtData()
{
    FT_FAT_Handle_Clear();
#if !defined(__LTE_SM__)
    FT_L1RfDataInit();
#endif // #if !defined(__LTE_SM__)    
    // init event group
    ft_event_group_ptr = (kal_uint32) kal_create_event_group("FtEvent");
}
Exemple #17
0
void hif_init(void)
{
    // Init structure.
    memset(hif_internal_handle, 0, sizeof(hif_internal_handle));
#if defined (HIF0_CHANNEL_SUPPORT)
    // Init HIF interrupr
    IRQ_Register_LISR(IRQ_HIF_CODE, hif0_lisr, "HIF0 ISR");
    IRQSensitivity(IRQ_HIF_CODE, LEVEL_SENSITIVE);
    //hif_hisr_id[0] = kal_create_hisr("HIF0_HISR", 0, 1024, hif0_hisr, KAL_TRUE);
    DRV_Register_HISR(DRV_HIF0_HISR_ID, hif0_hisr);
    IRQUnmask(IRQ_HIF_CODE);
#endif
#if defined (HIF1_CHANNEL_SUPPORT)
    IRQ_Register_LISR(IRQ_HIF_1_CODE, hif1_lisr, "HIF1 ISR");
    IRQSensitivity(IRQ_HIF_1_CODE, LEVEL_SENSITIVE);
    //hif_hisr_id[1] = kal_create_hisr("HIF1_HISR", 0, 1024, hif1_hisr, KAL_TRUE);
    DRV_Register_HISR(DRV_HIF1_HISR_ID, hif1_hisr);
    IRQUnmask(IRQ_HIF_1_CODE);
#endif

    /* DMA initialization */
#if defined (HIF0_CHANNEL_SUPPORT)
    hif_sysdma_id[0] = DMA_GetChannel(DMA_HIF0);
    hif_dma_menu[0].TMOD.burst_mode = KAL_FALSE;
    hif_dma_menu[0].master = DMA_HIF0;
    hif_dma_menu[0].addr = 0;
#endif
#if defined (HIF1_CHANNEL_SUPPORT)
    hif_sysdma_id[1] = DMA_GetChannel(DMA_HIF1);
    hif_dma_menu[1].TMOD.burst_mode = KAL_FALSE;
    hif_dma_menu[1].master = DMA_HIF1;
    hif_dma_menu[1].addr = 0;
#endif
    // Configure DMA
    //hif_dma_input.size = DMA_SHORT;
    hif_dma_input[0].count = 0;
    hif_dma_input[0].callback = NULL;
    hif_dma_input[1].count = 0;
    hif_dma_input[1].callback = NULL;
    //hif_dma_input.menu = (void*) &hif_dma_menu;

    //define ECO solution for MT6256E4,MT6575E2, MT6255E2 or MTK later chips
    
    #if defined(MT6255) || defined(MT6256)//MT6255 and MT6256 support query chip version
        chip_version = INT_SW_SecVersion(); //Query chip version
    #endif
         
    #if defined(__AST_TL1_TDD__)  //HIF ECO only support for TDD project
      #if defined(MT6575_S01)
          hif_eco_support = KAL_FALSE;
      #elif defined(MT6752)
          hif_eco_support = KAL_TRUE;
      #elif defined(MT6255) //MT6255E2 support HIF ECO
          if(SW_SEC_0 != chip_version)
          {
              hif_eco_support = KAL_TRUE;
          }
      #elif defined(MT6256) //MT6256E4,MT6256E5 support HIF ECO
          if(SW_SEC_1 == chip_version) //SW_SEC_0: MT6256E2,E3,E4, SW_SEC_1: MT6256E5
          {
    	      hif_eco_support = KAL_TRUE;
          }
    	#endif
    #endif
    
    hif_events = kal_create_event_group("HIFDrv");
}
/* ------------------------------------------------------------------------------ */
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();
   }
}
Exemple #19
0
/*************************************************************************
* FUNCTION
*  mdci_read
*
* DESCRIPTION
*  This function reads data through either mailbox channel or stream
*  channel.
*
* PARAMETERS
*  channel    -    logical channel
*  buff       -    pointer to channel buffer
*
* RETURNS
*  MDIF error code.
*
*************************************************************************/
kal_int32 mdci_read(MDCI_CHANNEL_T channel, MDCI_BUFF_T *buff)
{
    kal_uint32 owner, mask, ret, event;
    kal_char event_name[20];


#ifdef __IVP__
    dbg_print("Error.... can not use mdci_read in IVP\n\r");
    while(1);
#endif

    /* check if a LISR is running */
    if (kal_if_lisr())
        return MDCI_IN_LISR;

    /* check parameters */
    if (channel >= MDCI_MAX_CHANNEL)
        return MDCI_INVALID_PARAM;
    if (buff == NULL)
        return MDCI_INVALID_PARAM;

    /* get the current task */
    owner = (kal_uint32)kal_get_current_thread_ID();

    /* check owner */
    if (mdci_ctrl_pool[channel].owner != owner && mdci_is_chanel_need_check_owner(channel)) {
        return MDCI_NOT_OWNER;
    }

    /* create an event for the first use */ 
    if (mdci_ctrl_pool[channel].event == NULL) {
        sprintf(event_name, "MDIF%d event", channel);
        mdci_ctrl_pool[channel].event = kal_create_event_group(event_name);
        if (mdci_ctrl_pool[channel].event == NULL)
            ASSERT(0);
    }

    /* check state */
    ret = MDCI_SUCCESS;
    mask = SaveAndSetIRQMask();
    if (mdci_ctrl_pool[channel].state != MDCI_IDLE) {
        ret = MDCI_IN_USE;
    } else {
        /* set ACTIVE_WRITE */
        mdci_ctrl_pool[channel].state = MDCI_ACTIVE_READ;
    }
    RestoreIRQMask(mask);
    if (ret != MDCI_SUCCESS)
        return ret;

#ifndef __IVP__
    /* wait for the event */
    kal_retrieve_eg_events(mdci_ctrl_pool[channel].event, 1, KAL_OR_CONSUME, &event, KAL_SUSPEND);
#endif    
    if (event != 1) {
        ASSERT(0);
    }

    /* read channel buffer */
    memcpy(buff, &(mdci_ctrl_pool[channel].buff), sizeof(MDCI_BUFF_T));

    /* set ACTIVE_IDLE */
    mdci_ctrl_pool[channel].state = MDCI_IDLE;

    return MDCI_SUCCESS;
}