示例#1
0
static int lcdfreq_lock_free(struct device *dev)
{
	struct fb_info *fb = dev_get_drvdata(dev);
	struct s3cfb_window *win = fb->par;
	struct s3cfb_global *fbdev = get_fimd_global(win->id);
	struct lcdfreq_info *lcdfreq = fbdev->data;

	int ret;

	if (atomic_read(&lcdfreq->usage))
		ret = set_lcdfreq_div(dev, LEVEL_NORMAL);
	else {
		dev_err(dev, "lcd freq is already normal state\n");
		return -EINVAL;
	}

	if (!ret) {
		mutex_lock(&lcdfreq->lock);
		atomic_dec(&lcdfreq->usage);
		mutex_unlock(&lcdfreq->lock);
		cancel_delayed_work(&lcdfreq->work);
	}

	return ret;
}
示例#2
0
static int lcdfreq_lock(struct device *dev)
{
	struct fb_info *fb = dev_get_drvdata(dev);
	struct s3cfb_window *win = fb->par;
	struct s3cfb_global *fbdev = get_fimd_global(win->id);
	struct lcdfreq_info *lcdfreq = fbdev->data;

	int ret;

	if (!atomic_read(&lcdfreq->usage))
		ret = set_lcdfreq_div(dev, LEVEL_LIMIT);
	else {
		dev_err(dev, "lcd freq is already limit state\n");
		return -EINVAL;
	}

	if (!ret) {
		mutex_lock(&lcdfreq->lock);
		atomic_inc(&lcdfreq->usage);
		mutex_unlock(&lcdfreq->lock);
		schedule_delayed_work(&lcdfreq->work, 0);
	}

	return ret;
}
示例#3
0
static int lcdfreq_lock_free(struct device *dev)
{
	struct lcdfreq_info *info = dev_get_drvdata(dev);

	int ret;

	if (atomic_read(&info->usage))
		ret = set_lcdfreq_div(dev, NORMAL);
	else {
		dev_err(dev, "lcd freq is already normal state\n");
		return -EINVAL;
	}

	if (!ret) {
		mutex_lock(&info->lock);
		atomic_dec(&info->usage);
		mutex_unlock(&info->lock);
		cancel_delayed_work(&info->work);
	}

	return ret;
}
示例#4
0
static int lcdfreq_lock(struct device *dev, int value)
{
	struct lcdfreq_info *info = dev_get_drvdata(dev);

	int ret;

	if (!atomic_read(&info->usage))
		ret = set_lcdfreq_div(dev, value);
	else {
		dev_err(dev, "lcd freq is already limit state\n");
		return -EINVAL;
	}

	if (!ret) {
		mutex_lock(&info->lock);
		atomic_inc(&info->usage);
		mutex_unlock(&info->lock);
		schedule_delayed_work(&info->work, 0);
	}

	return ret;
}