int gpu_dvfs_governor_init(struct kbase_device *kbdev) { int governor_type = G3D_DVFS_GOVERNOR_DEFAULT; struct exynos_context *platform = (struct exynos_context *) kbdev->platform_context; DVFS_ASSERT(platform); #ifdef CONFIG_MALI_DVFS governor_type = platform->governor_type; #endif /* CONFIG_MALI_DVFS */ if (gpu_dvfs_governor_setting(platform, governor_type) < 0) { GPU_LOG(DVFS_WARNING, DUMMY, 0u, 0u, "%s: fail to initialize governor\n", __func__); return -1; } //share table_size among governors, as every single governor has same table_size. platform->save_cpu_max_freq = kmalloc(sizeof(int) * platform->table_size, GFP_KERNEL); gpu_dvfs_update_asv_table(platform); gpu_dvfs_decide_max_clock(platform); #if defined(CONFIG_MALI_DVFS) && defined(CONFIG_CPU_THERMAL_IPA) gpu_ipa_dvfs_calc_norm_utilisation(kbdev); #endif /* CONFIG_MALI_DVFS && CONFIG_CPU_THERMAL_IPA */ return 0; }
int gpu_dvfs_governor_change(int governor_type) { struct kbase_device *kbdev = pkbdev; struct exynos_context *platform = (struct exynos_context *) kbdev->platform_context; DVFS_ASSERT(platform); mutex_lock(&platform->gpu_dvfs_handler_lock); gpu_dvfs_governor_setting(platform, governor_type); mutex_unlock(&platform->gpu_dvfs_handler_lock); return 0; }
int gpu_dvfs_governor_init(struct kbase_device *kbdev, int governor_type) { struct exynos_context *platform = (struct exynos_context *) kbdev->platform_context; DVFS_ASSERT(platform); if (gpu_dvfs_governor_setting(platform, governor_type) < 0) { GPU_LOG(DVFS_WARNING, DUMMY, 0u, 0u, "%s: fail to initialize governor\n", __func__); return -1; } gpu_dvfs_update_asv_table(platform); gpu_dvfs_decide_max_clock(platform); #if defined(CONFIG_MALI_DVFS) && defined(CONFIG_CPU_THERMAL_IPA) gpu_ipa_dvfs_calc_norm_utilisation(kbdev); #endif /* CONFIG_MALI_DVFS && CONFIG_CPU_THERMAL_IPA */ return 0; }