|
@@ -164,18 +164,10 @@ static ssize_t brightness_show(struct device *dev,
|
|
|
return sprintf(buf, "%d\n", bd->props.brightness);
|
|
|
}
|
|
|
|
|
|
-static ssize_t brightness_store(struct device *dev,
|
|
|
- struct device_attribute *attr, const char *buf, size_t count)
|
|
|
+int backlight_device_set_brightness(struct backlight_device *bd,
|
|
|
+ unsigned long brightness)
|
|
|
{
|
|
|
- int rc;
|
|
|
- struct backlight_device *bd = to_backlight_device(dev);
|
|
|
- unsigned long brightness;
|
|
|
-
|
|
|
- rc = kstrtoul(buf, 0, &brightness);
|
|
|
- if (rc)
|
|
|
- return rc;
|
|
|
-
|
|
|
- rc = -ENXIO;
|
|
|
+ int rc = -ENXIO;
|
|
|
|
|
|
mutex_lock(&bd->ops_lock);
|
|
|
if (bd->ops) {
|
|
@@ -185,7 +177,7 @@ static ssize_t brightness_store(struct device *dev,
|
|
|
pr_debug("set brightness to %lu\n", brightness);
|
|
|
bd->props.brightness = brightness;
|
|
|
backlight_update_status(bd);
|
|
|
- rc = count;
|
|
|
+ rc = 0;
|
|
|
}
|
|
|
}
|
|
|
mutex_unlock(&bd->ops_lock);
|
|
@@ -194,6 +186,23 @@ static ssize_t brightness_store(struct device *dev,
|
|
|
|
|
|
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)
|
|
|
+{
|
|
|
+ int rc;
|
|
|
+ struct backlight_device *bd = to_backlight_device(dev);
|
|
|
+ unsigned long brightness;
|
|
|
+
|
|
|
+ rc = kstrtoul(buf, 0, &brightness);
|
|
|
+ if (rc)
|
|
|
+ return rc;
|
|
|
+
|
|
|
+ rc = backlight_device_set_brightness(bd, brightness);
|
|
|
+
|
|
|
+ return rc ? rc : count;
|
|
|
+}
|
|
|
static DEVICE_ATTR_RW(brightness);
|
|
|
|
|
|
static ssize_t type_show(struct device *dev, struct device_attribute *attr,
|
|
@@ -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);
|
|
|
|