示例#1
0
long k3fb_every_disp_time(void __user *p)
{
	int i = 0;
	long time = 0;
	long referencetime;
        
    if( 2 > g_frame_num )
    {
        k3fb_loge("k3fb_every_disp_time,TAG_Followability,%d frame!\n",g_frame_num);
        return  -EFAULT;
    }
	
    if (copy_from_user(&referencetime, p, sizeof(referencetime))) {
            k3fb_loge("k3fb_every_disp_time,TAG_Followability,copy from user failed!\n");
            return -EFAULT;
        }
    k3fb_logi("k3fb_every_disp_time,TAG_Followability, referencetime %lu \n",referencetime);
    
	for (i = 0; i < g_frame_num -1; i++)
	{   
	    /*get every frame dispay used time*/
		time = g_pframeinfo[i+1] - g_pframeinfo[i];

        k3fb_logi("k3fb_every_disp_time,TAG_Followability, %d frame use %ld time!\n",i+1,time);
		if (time > referencetime)
		{
            k3fb_loge("k3fb_every_disp_time,TAG_Followability, %d frame use %ld time failed!\n",i+1,time);
			return -EFAULT;
		}			
	}
	return 0;
}
示例#2
0
static int ldi_remove(struct platform_device *pdev)
{
	int ret = 0;
	struct k3_fb_data_type *k3fd = NULL;

	BUG_ON(pdev == NULL);
	k3fd = platform_get_drvdata(pdev);
	BUG_ON(k3fd == NULL);

	k3fb_logi("index=%d, enter!\n", k3fd->index);

	if (!IS_ERR(k3fd->ldi_clk)) {
		clk_put(k3fd->ldi_clk);
	}

	ret = panel_next_remove(pdev);
	
	k3fb_logi("index=%d, exit!\n", k3fd->index);
	
	return ret;
}
示例#3
0
void k3fb_follow_stop(void __user *p)
{
    int i = 0;
	long time = 0;
    long perframetime = 0;
    
	g_follow_flag = G_FOLLOW_FLAG_STOP;
	
    
    if (copy_from_user(&perframetime, p, sizeof(perframetime))) {
        k3fb_loge("TAG_Followability,copy from user failed!\n");
        return ;
    }
    
    k3fb_logi("TAG_Followability,receive %d frame! \n",g_frame_num);
    k3fb_logi("TAG_Followability,stop and receive refrence time = %d\n",perframetime);

    if( 2 > g_frame_num )
    {
        return;
    }
    
    for (i = g_frame_num - 1; i >= 1; i--)
    {        
        time = g_pframeinfo[i] - g_pframeinfo[i - 1];

        /* avoid some frame too long ,delete the node */
        if(time > perframetime){
            k3fb_logi("TAG_Followability,%d frame use %ld ms,remove it! \n",i,time);
            
            g_pframeinfo[i] = 0;
            g_frame_num--;
            continue;
         }
         else{
             break;
         }
     }
}
示例#4
0
/*
*  Function:    fb_follow_start()
*  Description£ºfollow start 
*/
void k3fb_follow_start()
{
    int i;
	g_follow_flag = G_FOLLOW_FLAG_START;

    k3fb_logi("TAG_Followability,start!\n");
    for(i = 0; i < MAX_NUM; i++)
    {
        g_frame_time_array[i ] = 0;
    }
    //memset(gst_frame_time, 0 ,sizeof(gst_frame_time));
    g_frame_num  = 0;
    g_pframeinfo = g_frame_time_array;
    g_max_num    = MAX_NUM;
}
示例#5
0
void k3fb_clear_frame_record()
{   
	g_follow_flag = G_FOLLOW_FLAG_STOP;
	g_frame_num   = 0;
	
	if( g_max_num > MAX_NUM )
	{
	    kfree(g_pframeinfo);
	}
	
    g_pframeinfo  = NULL;
	g_max_num    = 0;
    memset(g_frame_time_array, 0 ,sizeof(g_frame_time_array));
    
    k3fb_logi("TAG_Followability,clear record!\n");
}
示例#6
0
long k3fb_average_frame_rate(void __user *p)
{
	long averageframerate = 0;
	long startelem;
	long endlem;
	
	if(0 == g_frame_num)
	{
        k3fb_loge("TAG_Followability,frame num is zero!\n");
        return -EFAULT;
	}
	
    if (copy_from_user(&averageframerate, p, sizeof(averageframerate))) {
            k3fb_loge("k3fb_average_frame_rate,TAG_Followability copy from user failed!\n");
            return -EFAULT;
        }

    startelem = g_pframeinfo[0];
    
    endlem = g_pframeinfo[g_frame_num - 1];
    
    if( 0 == endlem - startelem )
    {
        k3fb_loge("k3fb_average_frame_rate,TAG_Followability no update data!\n");
        return -EFAULT;
    }
	averageframerate = (1000 * (g_frame_num - 1) ) /( endlem - startelem) ;

    k3fb_logi("k3fb_average_frame_rate,TAG_Followability averageframerate is %ld \n",averageframerate);

	if (copy_to_user(p, &averageframerate, sizeof(averageframerate))) {
		k3fb_loge("k3fb_average_frame_rate,TAG_Followability copy2user failed!\n");
		return -EFAULT;
    }
	return 0;
}