aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Lu <aaron.lu@intel.com>2016-04-27 08:45:02 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-05-04 17:41:14 -0400
commitf6a4790a5471d7cba406d87f6b41323f40bb93d2 (patch)
tree45f03e6a19e3db9aeddeab3fb1409c421a70acb3
parent04974df8049fc4240d22759a91e035082ccd18b4 (diff)
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>
-rw-r--r--drivers/video/backlight/backlight.c43
-rw-r--r--include/linux/backlight.h2
2 files changed, 31 insertions, 14 deletions
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
index bddc8b17a4d8..18901b9b1eb4 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
@@ -164,18 +164,10 @@ static ssize_t brightness_show(struct device *dev,
164 return sprintf(buf, "%d\n", bd->props.brightness); 164 return sprintf(buf, "%d\n", bd->props.brightness);
165} 165}
166 166
167static ssize_t brightness_store(struct device *dev, 167int backlight_device_set_brightness(struct backlight_device *bd,
168 struct device_attribute *attr, const char *buf, size_t count) 168 unsigned long brightness)
169{ 169{
170 int rc; 170 int rc = -ENXIO;
171 struct backlight_device *bd = to_backlight_device(dev);
172 unsigned long brightness;
173
174 rc = kstrtoul(buf, 0, &brightness);
175 if (rc)
176 return rc;
177
178 rc = -ENXIO;
179 171
180 mutex_lock(&bd->ops_lock); 172 mutex_lock(&bd->ops_lock);
181 if (bd->ops) { 173 if (bd->ops) {
@@ -185,7 +177,7 @@ static ssize_t brightness_store(struct device *dev,
185 pr_debug("set brightness to %lu\n", brightness); 177 pr_debug("set brightness to %lu\n", brightness);
186 bd->props.brightness = brightness; 178 bd->props.brightness = brightness;
187 backlight_update_status(bd); 179 backlight_update_status(bd);
188 rc = count; 180 rc = 0;
189 } 181 }
190 } 182 }
191 mutex_unlock(&bd->ops_lock); 183 mutex_unlock(&bd->ops_lock);
@@ -194,6 +186,23 @@ static ssize_t brightness_store(struct device *dev,
194 186
195 return rc; 187 return rc;
196} 188}
189EXPORT_SYMBOL(backlight_device_set_brightness);
190
191static ssize_t brightness_store(struct device *dev,
192 struct device_attribute *attr, const char *buf, size_t count)
193{
194 int rc;
195 struct backlight_device *bd = to_backlight_device(dev);
196 unsigned long brightness;
197
198 rc = kstrtoul(buf, 0, &brightness);
199 if (rc)
200 return rc;
201
202 rc = backlight_device_set_brightness(bd, brightness);
203
204 return rc ? rc : count;
205}
197static DEVICE_ATTR_RW(brightness); 206static DEVICE_ATTR_RW(brightness);
198 207
199static ssize_t type_show(struct device *dev, struct device_attribute *attr, 208static ssize_t type_show(struct device *dev, struct device_attribute *attr,
@@ -380,7 +389,7 @@ struct backlight_device *backlight_device_register(const char *name,
380} 389}
381EXPORT_SYMBOL(backlight_device_register); 390EXPORT_SYMBOL(backlight_device_register);
382 391
383bool backlight_device_registered(enum backlight_type type) 392struct backlight_device *backlight_device_get_by_type(enum backlight_type type)
384{ 393{
385 bool found = false; 394 bool found = false;
386 struct backlight_device *bd; 395 struct backlight_device *bd;
@@ -394,7 +403,13 @@ bool backlight_device_registered(enum backlight_type type)
394 } 403 }
395 mutex_unlock(&backlight_dev_list_mutex); 404 mutex_unlock(&backlight_dev_list_mutex);
396 405
397 return found; 406 return found ? bd : NULL;
407}
408EXPORT_SYMBOL(backlight_device_get_by_type);
409
410bool backlight_device_registered(enum backlight_type type)
411{
412 return backlight_device_get_by_type(type) ? true : false;
398} 413}
399EXPORT_SYMBOL(backlight_device_registered); 414EXPORT_SYMBOL(backlight_device_registered);
400 415
diff --git a/include/linux/backlight.h b/include/linux/backlight.h
index 1e7a69adbe6f..f46b88fa4a09 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -144,6 +144,8 @@ extern void backlight_force_update(struct backlight_device *bd,
144extern bool backlight_device_registered(enum backlight_type type); 144extern bool backlight_device_registered(enum backlight_type type);
145extern int backlight_register_notifier(struct notifier_block *nb); 145extern int backlight_register_notifier(struct notifier_block *nb);
146extern int backlight_unregister_notifier(struct notifier_block *nb); 146extern int backlight_unregister_notifier(struct notifier_block *nb);
147extern struct backlight_device *backlight_device_get_by_type(enum backlight_type type);
148extern int backlight_device_set_brightness(struct backlight_device *bd, unsigned long brightness);
147 149
148#define to_backlight_device(obj) container_of(obj, struct backlight_device, dev) 150#define to_backlight_device(obj) container_of(obj, struct backlight_device, dev)
149 151