int kbase_platform_regulator_init(void) { #ifdef CONFIG_REGULATOR int mali_gpu_vol = 0; g3d_regulator = regulator_get(NULL, "vdd_g3d"); if (IS_ERR(g3d_regulator)) { printk("[kbase_platform_regulator_init] failed to get mali t6xx regulator\n"); return -1; } if (regulator_enable(g3d_regulator) != 0) { printk("[kbase_platform_regulator_init] failed to enable mali t6xx regulator\n"); return -1; } #ifdef MALI_DVFS_ASV_ENABLE mali_gpu_vol = asv_get_volt(ID_G3D, MALI_DVFS_BL_CONFIG_FREQ*1000); #endif if (mali_gpu_vol == 0) mali_gpu_vol = mali_dvfs_infotbl[ARRAY_SIZE(mali_dvfs_infotbl)-1].voltage; if (regulator_set_voltage(g3d_regulator, mali_gpu_vol, mali_gpu_vol) != 0) { printk("[kbase_platform_regulator_init] failed to set mali t6xx operating voltage [%d]\n", mali_gpu_vol); return -1; } #endif return 0; }
static int __init set_volt_table(void) { unsigned int i; max_support_idx = L0; for (i = 0; i < CPUFREQ_LEVEL_END; i++) { exynos5250_volt_table[i] = asv_get_volt(ID_ARM, exynos5250_freq_table[i].frequency); if (exynos5250_volt_table[i] == 0) { pr_err("%s: invalid value\n", __func__); return -EINVAL; } } return 0; }
static int mali_dvfs_update_asv(int cmd) { int i; int voltage = 0; if (cmd == ASV_CMD_DISABLE) { for (i = 0; i < MALI_DVFS_STEP; i++) mali_dvfs_infotbl[i].voltage = mali_dvfs_vol_default[i]; printk(KERN_DEBUG "mali_dvfs_update_asv use default table\n"); return ASV_STATUS_INIT; } for (i = 0; i < MALI_DVFS_STEP; i++) { voltage = asv_get_volt(ID_G3D, mali_dvfs_infotbl[i].clock*1000); if (voltage == 0) { return ASV_STATUS_NOT_INIT; } mali_dvfs_infotbl[i].voltage = voltage; } return ASV_STATUS_INIT; }