summaryrefslogtreecommitdiffstats
path: root/drivers/acpi/video.c
diff options
context:
space:
mode:
authorMatthew Garrett <matthew.garrett@nebula.com>2013-07-16 17:08:16 +0000
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-07-18 01:31:47 +0200
commitc04c697cf1fe8f0962ccd3c2392a9b637a5307aa (patch)
treeef888dace57a4b832a10eae7657c3e76fb5d8114 /drivers/acpi/video.c
parent242b2287cd7f27521c8b54a4101d569e53e7a0ca (diff)
downloadlinux-c04c697cf1fe8f0962ccd3c2392a9b637a5307aa.tar.gz
linux-c04c697cf1fe8f0962ccd3c2392a9b637a5307aa.tar.bz2
linux-c04c697cf1fe8f0962ccd3c2392a9b637a5307aa.zip
ACPI / video: Always call acpi_video_init_brightness() on init
We have to call acpi_video_init_brightness() even if we're not going to initialise the backlight - Thinkpads seem to use this as the trigger for enabling ACPI notifications rather than handling it in firmware. [rjw: Drop the brightness object created by acpi_video_init_brightness() if we are not going to use it.] Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/video.c')
-rw-r--r--drivers/acpi/video.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 5d7075d25700..f236e172d948 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -898,6 +898,9 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
device->cap._DDC = 1;
}
+ if (acpi_video_init_brightness(device))
+ return;
+
if (acpi_video_backlight_support()) {
struct backlight_properties props;
struct pci_dev *pdev;
@@ -907,9 +910,6 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
static int count = 0;
char *name;
- result = acpi_video_init_brightness(device);
- if (result)
- return;
name = kasprintf(GFP_KERNEL, "acpi_video%d", count);
if (!name)
return;
@@ -969,6 +969,11 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
if (result)
printk(KERN_ERR PREFIX "Create sysfs link\n");
+ } else {
+ /* Remove the brightness object. */
+ kfree(device->brightness->levels);
+ kfree(device->brightness);
+ device->brightness = NULL;
}
}