int gpu_minfreq_handle(unsigned int req_value)
{
#if 0
    pmqos_gpu_dfs_limit_min(req_value);
#endif
    return 0;
}
int mali_get_target_profile(u32 curr, int step)
{
    int target;
    u32 currTmp = curr;
    u32 maxProfile = g_mali_dfs_var.dfs_Steps - 1;

    /* target profile calculate */
    if ( 3 == step )
    {
        target = maxProfile;
    }
    else if ( -3 == step )
    {
        target  = 0;
    }
    else
    {
        target  = currTmp + step;
        target  = (target > maxProfile) ? maxProfile : target;
        target  = ((target < 0) ? 0 : target);
    }

    if(g_mali_dfs_var.dfs_limitMinRate > g_mali_dfs_var.dfs_limitMaxRate)
    {
        MALI_DEBUG_PRINT(1,("mali dfs Error: dfs_limitMinRate is bigger than dfs_limitMaxRate"));
        g_mali_dfs_var.dfs_limitMaxRate = g_mali_dvfs_profile[g_mali_dfs_var.dfs_limitMaxPrf].freq;
        g_mali_dfs_var.dfs_limitMinRate = g_mali_dvfs_profile[g_mali_dfs_var.dfs_limitMinPrf].freq;
        return -1;
    }

    if(g_mali_dfs_var.dfs_limitMaxRate != g_mali_dvfs_profile[g_mali_dfs_var.dfs_limitMaxPrf].freq) 
    {
        pmqos_gpu_dfs_limit_max(1,g_mali_dfs_var.dfs_limitMaxRate);
    }

    if(g_mali_dfs_var.dfs_limitMinRate != g_mali_dvfs_profile[g_mali_dfs_var.dfs_limitMinPrf].freq)
    {
        pmqos_gpu_dfs_limit_min(1, g_mali_dfs_var.dfs_limitMinRate);
    }

    if(g_mali_dfs_var.dfs_limitMinPrf > g_mali_dfs_var.dfs_limitMaxPrf)
    {
        MALI_DEBUG_PRINT(1,("mali dfs Error: dfs_limitMinPrf is bigger than dfs_limitMaxPrf"));
        g_mali_dfs_var.dfs_limitMaxPrf = g_mali_dfs_var.dfs_Steps - 1;
        g_mali_dfs_var.dfs_limitMinPrf = 0;
        return -1;
    }

    target  = (target > g_mali_dfs_var.dfs_limitMaxPrf) ? g_mali_dfs_var.dfs_limitMaxPrf : target;
    target  = (target < g_mali_dfs_var.dfs_limitMinPrf) ? g_mali_dfs_var.dfs_limitMinPrf : target;

    if( g_mali_dfs_var.dfs_LockOn == 1)
    {
        target = g_mali_dfs_var.dfs_LockProfile;
    }

    return target;
}
Пример #3
0
/*****************************************************************************
 function name  : mali_gpu_utilization_proc
 description    : mali_gpu_utilization_proc
 input vars     : void
 output vars    : NA
 return value   : void
 calls          : NA

 called         : os

 history        :
  1.data        : 20/11/2013
    modify      : new

*****************************************************************************/
static void mali_gpu_utilization_proc(struct mali_gpu_utilization_data *data)
{
    static int count = 0;

    /*Just lock the gpu for the first 40 seconds after power up, this function be called every 50ns, 40s = 50ns * 800*/
    if(800 == count)
    {
        MALI_DEBUG_PRINT(2,("set the gpu min_freq to 160M after about 40 seconds\n"));
        pmqos_gpu_dfs_limit_min(0);
        count++;
    }

    mali_gpu_utilization_handler(data->utilization_gpu);

    if(count < 800)
    {
        count++;
    }
}