Пример #1
0
static int set_lcdfreq_div(struct device *dev, enum lcdfreq_level level)
{
	struct lcdfreq_info *info = dev_get_drvdata(dev);

	u32 ret;

	mutex_lock(&info->lock);

	if (!info->enable) {
		dev_err(dev, "%s reject. enable flag is %d\n", __func__, info->enable);
		ret = -EINVAL;
		goto exit;
	}

	ret = set_div(dev, info->table[level].cmu_div);

	if (ret) {
		dev_err(dev, "skip to change lcd freq\n");
		goto exit;
	}

	info->level = level;

exit:
	mutex_unlock(&info->lock);

	return ret;
}
Пример #2
0
static int set_lcdfreq_div(struct device *dev, enum lcdfreq_level level)
{
	struct lcdfreq_info *info = dev_get_drvdata(dev);

	u32 ret;

	mutex_lock(&info->lock);

	if (!info->enable) {
		dev_err(dev, "%s reject. enable flag is %d\n", __func__, info->enable);
		ret = -EINVAL;
		goto exit;
	}

	ret = set_div(dev, info->table[level].cmu_div);

	if (ret) {
		dev_err(dev, "skip to change lcd freq\n");
		goto exit;
	}
#ifdef CONFIG_LCD_FREQ_SWITCH_ACCOUNTING
	do_time_slice(info->level);
#endif

	info->level = level;

exit:
	mutex_unlock(&info->lock);

	return ret;
}
Пример #3
0
static int set_lcdfreq_div(struct device *dev, enum lcdfreq_level_idx level)
{
	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;

	u32 div, ret;

	mutex_lock(&lcdfreq->lock);

	if (unlikely(fbdev->system_state == POWER_OFF || !lcdfreq->enable)) {
		dev_err(dev, "%s reject. %d, %d\n", __func__, fbdev->system_state, lcdfreq->enable);
		ret = -EINVAL;
		goto exit;
	}

	div = lcdfreq->table[level].cmu_clkdiv;

	ret = set_div(fbdev, div);

	if (ret) {
		dev_err(dev, "fail to change lcd freq\n");
		goto exit;
	}

#ifdef CONFIG_LCD_FREQ_SWITCH_ACCOUNTING
  do_time_slice(lcdfreq->level);
#endif

	lcdfreq->level = level;

exit:
	mutex_unlock(&lcdfreq->lock);

	return ret;
}