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; }
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; }
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; }
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; }