On Thursday, October 10, 2013 08:54:29 AM Aaron Lu wrote:
On 10/10/2013 08:25 AM, Rafael J. Wysocki wrote:
On Tuesday, October 08, 2013 02:39:58 PM Aaron Lu wrote:
Introduce a new API for modules to query if a specific type of backlight device has been registered. This is useful for some backlight device provider module(e.g. ACPI video) to know if a native control interface(e.g. the interface created by i915) is available and then do things accordingly(e.g. avoid register its own on Win8 systems).
Signed-off-by: Aaron Lu aaron.lu@intel.com Tested-by: Igor Gnatenko i.gnatenko.brain@gmail.com Tested-by: Yves-Alexis Perez corsac@debian.org Tested-by: Mika Westerberg mika.westerberg@linux.intel.com
drivers/video/backlight/backlight.c | 31 +++++++++++++++++++++++++++++++ include/linux/backlight.h | 4 ++++ 2 files changed, 35 insertions(+)
diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c index 94a403a..bf2d71d 100644 --- a/drivers/video/backlight/backlight.c +++ b/drivers/video/backlight/backlight.c @@ -21,6 +21,9 @@ #include <asm/backlight.h> #endif
+static struct list_head bd_list_head; +static struct mutex bd_list_mutex;
I'd prefer these two things to be called backlight_dev_list and backlight_dev_list_mutex, respectively.
OK.
static const char *const backlight_types[] = { [BACKLIGHT_RAW] = "raw", [BACKLIGHT_PLATFORM] = "platform", @@ -349,10 +352,32 @@ struct backlight_device *backlight_device_register(const char *name, mutex_unlock(&pmac_backlight_mutex); #endif
- mutex_lock(&bd_list_mutex);
- list_add(&new_bd->entry, &bd_list_head);
- mutex_unlock(&bd_list_mutex);
- return new_bd;
} EXPORT_SYMBOL(backlight_device_register);
+bool backlight_device_registered(enum backlight_type type) +{
- bool found = false;
- struct backlight_device *bd;
- mutex_lock(&bd_list_mutex);
- list_for_each_entry(bd, &bd_list_head, entry) {
if (bd->props.type == type) {
found = true;
break;
}
- }
Isn't it useful to be able to register more than one backlight device of the same type sometimes?
I think so for some kind of computers. OTOH, the above function should be enough for the problem we are solving here, if someday we need to differentiate, we can enhance the code then.
OK