static ssize_t gpu_lock_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t n) { int val; ssize_t ret = -EINVAL; mutex_lock(&gpu_lock_mutex); if (sscanf(buf, "%d", &val) != 1) { pr_info("%s: Invalid gpu lock format\n", __func__); goto out; } if (val == 0) { /* unlock */ gpu_lock_cnt = exynos_gpufreq_unlock(); if (gpu_lock_cnt == 0) gpu_lock_val = 0; } else if (val > 0 && val < 5) { /* lock with level */ gpu_lock_cnt = exynos_gpufreq_lock(val); if (gpu_lock_val < val) gpu_lock_val = val; } else { pr_info("%s: Lock request is invalid\n", __func__); } ret = n; out: mutex_unlock(&gpu_lock_mutex); return ret; }
static ssize_t gpu_lock_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t n) { int val; ssize_t ret = -EINVAL; mutex_lock(&gpu_lock_mutex); if (sscanf(buf, "%d", &val) != 1) { pr_info("%s: Invalid mali lock format\n", __func__); goto out; } if (val == 0) { if (gpu_lock_val != 0) { exynos_gpufreq_unlock(); gpu_lock_val = 0; } else { pr_info("%s: Unlock request is ignored\n", __func__); } } else if (val == 1) { if (gpu_lock_val == 0) { exynos_gpufreq_lock(); gpu_lock_val = val; } else { pr_info("%s: Lock request is ignored\n", __func__); } } else { pr_info("%s: Lock request is invalid\n", __func__); } ret = n; out: mutex_unlock(&gpu_lock_mutex); return ret; }
static inline void rotation_booster_on(void) { exynos_cpufreq_lock(DVFS_LOCK_ID_ROTATION_BOOSTER, L4); exynos4_busfreq_lock(DVFS_LOCK_ID_ROTATION_BOOSTER, BUS_L0); exynos_gpufreq_lock(); }