Skip to content

Commit efaa14c

Browse files
Aaron Lurafaeljw
authored andcommitted
ACPI / video: no automatic brightness changes by win8-compatible firmware
Starting from win8, MS backlight control driver will set bit 2 of the parameter of control method _DOS, to inform firmware it should not perform any automatic brightness changes. This mostly affects hotkey notification deliver - if we do not set this bit, on hotkey press, firmware may choose to adjust brightness level instead of sending out notification and doing nothing. So this patch sets bit 2 when calling _DOS so that GUIs can show the notification window on hotkey press. This behavior change is only necessary for win8 systems. The MS document on win8 backlight control is here: http://msdn.microsoft.com/en-US/library/windows/hardware/jj159305 References: https://bugzilla.kernel.org/show_bug.cgi?id=52951 References: https://bugzilla.kernel.org/show_bug.cgi?id=56711 Reported-by: Micael Dias <kam1kaz3@gmail.com> Reported-by: Dan Garton <dan.garton@gmail.com> Reported-by: Bob Ziuchkovski <bob.ziuchkovski@gmail.com> Signed-off-by: Aaron Lu <aaron.lu@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
1 parent 8c5bd7a commit efaa14c

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

drivers/acpi/video.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1539,14 +1539,20 @@ static int acpi_video_bus_put_devices(struct acpi_video_bus *video)
15391539

15401540
/* acpi_video interface */
15411541

1542+
/*
1543+
* Win8 requires setting bit2 of _DOS to let firmware know it shouldn't
1544+
* preform any automatic brightness change on receiving a notification.
1545+
*/
15421546
static int acpi_video_bus_start_devices(struct acpi_video_bus *video)
15431547
{
1544-
return acpi_video_bus_DOS(video, 0, 0);
1548+
return acpi_video_bus_DOS(video, 0,
1549+
acpi_video_backlight_quirks() ? 1 : 0);
15451550
}
15461551

15471552
static int acpi_video_bus_stop_devices(struct acpi_video_bus *video)
15481553
{
1549-
return acpi_video_bus_DOS(video, 0, 1);
1554+
return acpi_video_bus_DOS(video, 0,
1555+
acpi_video_backlight_quirks() ? 0 : 1);
15501556
}
15511557

15521558
static void acpi_video_bus_notify(struct acpi_device *device, u32 event)

0 commit comments

Comments
 (0)