diff options
Diffstat (limited to 'backlight-Add-backlight-device-un-registration-notif.patch')
-rw-r--r-- | backlight-Add-backlight-device-un-registration-notif.patch | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/backlight-Add-backlight-device-un-registration-notif.patch b/backlight-Add-backlight-device-un-registration-notif.patch deleted file mode 100644 index a411bb9cb..000000000 --- a/backlight-Add-backlight-device-un-registration-notif.patch +++ /dev/null @@ -1,132 +0,0 @@ -Bugzilla: 1093171 -Upstream-status: Queued for 3.16 - -From ee515e61a002b4d571407173ac8bbadadc114cf0 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 2 Jun 2014 17:41:08 +0200 -Subject: [PATCH 11/14] backlight: Add backlight device (un)registration - notification - -Some firmware drivers, ie acpi-video want to get themselves out of the -way (in some cases) when their also is a raw backlight device available. - -Due to module loading ordering being unknown, acpi-video cannot be certain -that the backlight_device_registered(BACKLIGHT_RAW) it does for this is -the final verdict wrt there being a BACKLIGHT_RAW device. - -By adding notification acpi-video can listen for backlight devices showing -up after it has loaded, and unregister its backlight device if desired. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/video/backlight/backlight.c | 40 +++++++++++++++++++++++++++++++++++++ - include/linux/backlight.h | 7 +++++++ - 2 files changed, 47 insertions(+) - -diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c -index bd2172c2d650..428089009cd5 100644 ---- a/drivers/video/backlight/backlight.c -+++ b/drivers/video/backlight/backlight.c -@@ -23,6 +23,7 @@ - - static struct list_head backlight_dev_list; - static struct mutex backlight_dev_list_mutex; -+static struct blocking_notifier_head backlight_notifier; - - static const char *const backlight_types[] = { - [BACKLIGHT_RAW] = "raw", -@@ -370,6 +371,9 @@ struct backlight_device *backlight_device_register(const char *name, - list_add(&new_bd->entry, &backlight_dev_list); - mutex_unlock(&backlight_dev_list_mutex); - -+ blocking_notifier_call_chain(&backlight_notifier, -+ BACKLIGHT_REGISTERED, new_bd); -+ - return new_bd; - } - EXPORT_SYMBOL(backlight_device_register); -@@ -413,6 +417,10 @@ void backlight_device_unregister(struct backlight_device *bd) - pmac_backlight = NULL; - mutex_unlock(&pmac_backlight_mutex); - #endif -+ -+ blocking_notifier_call_chain(&backlight_notifier, -+ BACKLIGHT_UNREGISTERED, bd); -+ - mutex_lock(&bd->ops_lock); - bd->ops = NULL; - mutex_unlock(&bd->ops_lock); -@@ -438,6 +446,36 @@ static int devm_backlight_device_match(struct device *dev, void *res, - } - - /** -+ * backlight_register_notifier - get notified of backlight (un)registration -+ * @nb: notifier block with the notifier to call on backlight (un)registration -+ * -+ * @return 0 on success, otherwise a negative error code -+ * -+ * Register a notifier to get notified when backlight devices get registered -+ * or unregistered. -+ */ -+int backlight_register_notifier(struct notifier_block *nb) -+{ -+ return blocking_notifier_chain_register(&backlight_notifier, nb); -+} -+EXPORT_SYMBOL(backlight_register_notifier); -+ -+/** -+ * backlight_unregister_notifier - unregister a backlight notifier -+ * @nb: notifier block to unregister -+ * -+ * @return 0 on success, otherwise a negative error code -+ * -+ * Register a notifier to get notified when backlight devices get registered -+ * or unregistered. -+ */ -+int backlight_unregister_notifier(struct notifier_block *nb) -+{ -+ return blocking_notifier_chain_unregister(&backlight_notifier, nb); -+} -+EXPORT_SYMBOL(backlight_unregister_notifier); -+ -+/** - * devm_backlight_device_register - resource managed backlight_device_register() - * @dev: the device to register - * @name: the name of the device -@@ -544,6 +582,8 @@ static int __init backlight_class_init(void) - backlight_class->pm = &backlight_class_dev_pm_ops; - INIT_LIST_HEAD(&backlight_dev_list); - mutex_init(&backlight_dev_list_mutex); -+ BLOCKING_INIT_NOTIFIER_HEAD(&backlight_notifier); -+ - return 0; - } - -diff --git a/include/linux/backlight.h b/include/linux/backlight.h -index 72647429adf6..adb14a8616df 100644 ---- a/include/linux/backlight.h -+++ b/include/linux/backlight.h -@@ -40,6 +40,11 @@ enum backlight_type { - BACKLIGHT_TYPE_MAX, - }; - -+enum backlight_notification { -+ BACKLIGHT_REGISTERED, -+ BACKLIGHT_UNREGISTERED, -+}; -+ - struct backlight_device; - struct fb_info; - -@@ -133,6 +138,8 @@ extern void devm_backlight_device_unregister(struct device *dev, - extern void backlight_force_update(struct backlight_device *bd, - enum backlight_update_reason reason); - extern bool backlight_device_registered(enum backlight_type type); -+extern int backlight_register_notifier(struct notifier_block *nb); -+extern int backlight_unregister_notifier(struct notifier_block *nb); - - #define to_backlight_device(obj) container_of(obj, struct backlight_device, dev) - --- -1.9.0 - |