video / backlight: add two APIs for drivers to use
It is useful to get the backlight device's pointer and use it to set backlight in some cases(the following patch will make use of it) so add the two APIs and export them. Signed-off-by: Aaron Lu <aaron.lu@intel.com> Acked-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:

committed by
Rafael J. Wysocki

parent
04974df804
commit
f6a4790a54
@@ -164,6 +164,30 @@ static ssize_t brightness_show(struct device *dev,
|
||||
return sprintf(buf, "%d\n", bd->props.brightness);
|
||||
}
|
||||
|
||||
int backlight_device_set_brightness(struct backlight_device *bd,
|
||||
unsigned long brightness)
|
||||
{
|
||||
int rc = -ENXIO;
|
||||
|
||||
mutex_lock(&bd->ops_lock);
|
||||
if (bd->ops) {
|
||||
if (brightness > bd->props.max_brightness)
|
||||
rc = -EINVAL;
|
||||
else {
|
||||
pr_debug("set brightness to %lu\n", brightness);
|
||||
bd->props.brightness = brightness;
|
||||
backlight_update_status(bd);
|
||||
rc = 0;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&bd->ops_lock);
|
||||
|
||||
backlight_generate_event(bd, BACKLIGHT_UPDATE_SYSFS);
|
||||
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(backlight_device_set_brightness);
|
||||
|
||||
static ssize_t brightness_store(struct device *dev,
|
||||
struct device_attribute *attr, const char *buf, size_t count)
|
||||
{
|
||||
@@ -175,24 +199,9 @@ static ssize_t brightness_store(struct device *dev,
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
rc = -ENXIO;
|
||||
rc = backlight_device_set_brightness(bd, brightness);
|
||||
|
||||
mutex_lock(&bd->ops_lock);
|
||||
if (bd->ops) {
|
||||
if (brightness > bd->props.max_brightness)
|
||||
rc = -EINVAL;
|
||||
else {
|
||||
pr_debug("set brightness to %lu\n", brightness);
|
||||
bd->props.brightness = brightness;
|
||||
backlight_update_status(bd);
|
||||
rc = count;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&bd->ops_lock);
|
||||
|
||||
backlight_generate_event(bd, BACKLIGHT_UPDATE_SYSFS);
|
||||
|
||||
return rc;
|
||||
return rc ? rc : count;
|
||||
}
|
||||
static DEVICE_ATTR_RW(brightness);
|
||||
|
||||
@@ -380,7 +389,7 @@ struct backlight_device *backlight_device_register(const char *name,
|
||||
}
|
||||
EXPORT_SYMBOL(backlight_device_register);
|
||||
|
||||
bool backlight_device_registered(enum backlight_type type)
|
||||
struct backlight_device *backlight_device_get_by_type(enum backlight_type type)
|
||||
{
|
||||
bool found = false;
|
||||
struct backlight_device *bd;
|
||||
@@ -394,7 +403,13 @@ bool backlight_device_registered(enum backlight_type type)
|
||||
}
|
||||
mutex_unlock(&backlight_dev_list_mutex);
|
||||
|
||||
return found;
|
||||
return found ? bd : NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(backlight_device_get_by_type);
|
||||
|
||||
bool backlight_device_registered(enum backlight_type type)
|
||||
{
|
||||
return backlight_device_get_by_type(type) ? true : false;
|
||||
}
|
||||
EXPORT_SYMBOL(backlight_device_registered);
|
||||
|
||||
|
Reference in New Issue
Block a user