Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
static inline void rotation_booster_off(void)
{
	exynos_gpufreq_unlock();
	exynos4_busfreq_lock_free(DVFS_LOCK_ID_ROTATION_BOOSTER);
	exynos_cpufreq_lock_free(DVFS_LOCK_ID_ROTATION_BOOSTER);
}