summaryrefslogtreecommitdiffstats
path: root/acpi-video-Unregister-the-backlight-device-if-a-raw-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'acpi-video-Unregister-the-backlight-device-if-a-raw-.patch')
-rw-r--r--acpi-video-Unregister-the-backlight-device-if-a-raw-.patch130
1 files changed, 0 insertions, 130 deletions
diff --git a/acpi-video-Unregister-the-backlight-device-if-a-raw-.patch b/acpi-video-Unregister-the-backlight-device-if-a-raw-.patch
deleted file mode 100644
index f922d4235..000000000
--- a/acpi-video-Unregister-the-backlight-device-if-a-raw-.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-Bugzilla: 1093171
-Upstream-status: Queued for 3.16
-
-From 7f5b3e9378c0adfdb1cf2ffde6c4f890e05517c7 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Mon, 2 Jun 2014 17:41:09 +0200
-Subject: [PATCH 12/14] acpi-video: Unregister the backlight device if a raw
- one shows up later
-
-When video.use_native_backlight=1 and non intel gfx are in use, the raw
-backlight device of the gfx driver will show up after acpi-video has done its
-acpi_video_verify_backlight_support() check.
-
-This causes video.use_native_backlight=1 to not have the desired result.
-
-This patch fixes this by adding a backlight notifier and when a raw
-backlight is registered or unregistered re-doing the
-acpi_video_verify_backlight_support() check.
-
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- drivers/acpi/video.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 57 insertions(+)
-
-diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
-index d4d6ea3ac77a..ab7cd65ce21e 100644
---- a/drivers/acpi/video.c
-+++ b/drivers/acpi/video.c
-@@ -151,6 +151,7 @@ struct acpi_video_enumerated_device {
- struct acpi_video_bus {
- struct acpi_device *device;
- bool backlight_registered;
-+ bool backlight_notifier_registered;
- u8 dos_setting;
- struct acpi_video_enumerated_device *attached_array;
- u8 attached_count;
-@@ -162,6 +163,7 @@ struct acpi_video_bus {
- struct input_dev *input;
- char phys[32]; /* for input device */
- struct notifier_block pm_nb;
-+ struct notifier_block backlight_nb;
- };
-
- struct acpi_video_device_flags {
-@@ -1732,6 +1734,9 @@ static int acpi_video_bus_register_backlight(struct acpi_video_bus *video)
- {
- struct acpi_video_device *dev;
-
-+ if (video->backlight_registered)
-+ return 0;
-+
- if (!acpi_video_verify_backlight_support())
- return 0;
-
-@@ -1876,6 +1881,56 @@ static void acpi_video_bus_remove_notify_handler(struct acpi_video_bus *video)
- video->input = NULL;
- }
-
-+static int acpi_video_backlight_notify(struct notifier_block *nb,
-+ unsigned long val, void *bd)
-+{
-+ struct backlight_device *backlight = bd;
-+ struct acpi_video_bus *video;
-+
-+ /* acpi_video_verify_backlight_support only cares about raw devices */
-+ if (backlight->props.type != BACKLIGHT_RAW)
-+ return NOTIFY_DONE;
-+
-+ video = container_of(nb, struct acpi_video_bus, backlight_nb);
-+
-+ switch (val) {
-+ case BACKLIGHT_REGISTERED:
-+ if (!acpi_video_verify_backlight_support())
-+ acpi_video_bus_unregister_backlight(video);
-+ break;
-+ case BACKLIGHT_UNREGISTERED:
-+ acpi_video_bus_register_backlight(video);
-+ break;
-+ }
-+
-+ return NOTIFY_OK;
-+}
-+
-+static int acpi_video_bus_add_backlight_notify_handler(
-+ struct acpi_video_bus *video)
-+{
-+ int error;
-+
-+ video->backlight_nb.notifier_call = acpi_video_backlight_notify;
-+ video->backlight_nb.priority = 0;
-+ error = backlight_register_notifier(&video->backlight_nb);
-+ if (error == 0)
-+ video->backlight_notifier_registered = true;
-+
-+ return error;
-+}
-+
-+static int acpi_video_bus_remove_backlight_notify_handler(
-+ struct acpi_video_bus *video)
-+{
-+ if (!video->backlight_notifier_registered)
-+ return 0;
-+
-+ video->backlight_notifier_registered = false;
-+
-+ return backlight_unregister_notifier(&video->backlight_nb);
-+}
-+
- static int acpi_video_bus_put_devices(struct acpi_video_bus *video)
- {
- struct acpi_video_device *dev, *next;
-@@ -1957,6 +2012,7 @@ static int acpi_video_bus_add(struct acpi_device *device)
-
- acpi_video_bus_register_backlight(video);
- acpi_video_bus_add_notify_handler(video);
-+ acpi_video_bus_add_backlight_notify_handler(video);
-
- return 0;
-
-@@ -1980,6 +2036,7 @@ static int acpi_video_bus_remove(struct acpi_device *device)
-
- video = acpi_driver_data(device);
-
-+ acpi_video_bus_remove_backlight_notify_handler(video);
- acpi_video_bus_remove_notify_handler(video);
- acpi_video_bus_unregister_backlight(video);
- acpi_video_bus_put_devices(video);
---
-1.9.0
-