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; }
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; }
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; } } }
/* * 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; }
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"); }
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; }