diff options
author | Matthew Garrett <matthew.garrett@nebula.com> | 2013-07-16 17:08:16 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-07-18 01:31:47 +0200 |
commit | c04c697cf1fe8f0962ccd3c2392a9b637a5307aa (patch) | |
tree | ef888dace57a4b832a10eae7657c3e76fb5d8114 /drivers/acpi/video.c | |
parent | 242b2287cd7f27521c8b54a4101d569e53e7a0ca (diff) | |
download | linux-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.c | 11 |
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; } } |