ACPI video hotkey: set _DOS to 0 by default
PATCH 1/1 ACPI video hotkey: set _DOS to 0 by default
Subject: set _DOS to 0 by default
From: Zhang Rui <[email protected]>
Many ACPI machines currently reprogram the active display output automatically when the user presses the display toggle switch on the keyboard. However, this behavior violates the ACPI spec, because the system modifies some graphics device registers.
"_DOS = 1" means that BIOS will switch the display, and ACPI is not aware of the display switch hotkey pressing.
And "_DOS = 0" means that BIOS will not switch the display but just notify ACPI instead.
We set _DOS to 0 by default from now on because ACPI video driver has the mechanism to notify the user space when the display toggle switch is pressed, i.e. ACPI video driver can send the hotkey events via the input layer.
And X can/should get this event and call the native video device driver to do the actual display switch work.
Note: formerly we set _DOS to 1 to let BIOS handle the display switch,
but this doesn't always work on all platforms even in console mode.
http://bugzilla.kernel.org/show_bug.cgi?id=6001
Note: with this patch applied, in console mode, hotkey pressing may not
work because ACPI only export the hotkey events to user space while X is not running, so no action is taken for this event. users may need to "echo 1 >/proc/acpi/video/xxx/DOS" so that they can switch the display with the help of BIOS.
--- drivers/acpi/video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/video.c +1 -1
@@ -1754,7 +1754,7 @@ static int acpi_video_bus_put_devices(ststatic int acpi_video_bus_start_devices (struct acpi_video_bus *video) { -return acpi_video_bus_DOS (video,1 ,0 ); +return acpi_video_bus_DOS (video,0 ,0 ); }static int acpi_video_bus_stop_devices (struct acpi_video_bus *video)
Applied.
thanks,
-Len
Quoted 50 lines · Zhang Rui
Subject: set
_DOSto 0 by default
From: Zhang Rui <[email protected]>Many ACPI machines currently reprogram the active display output automatically when the user presses the display toggle switch on the keyboard. However, this behavior violates the ACPI spec, because the system modifies some graphics device registers.
"
_DOS= 1" means that BIOS will switch the display, and ACPI is not aware of the display switch hotkey pressing.And "
_DOS= 0" means that BIOS will not switch the display but just notify ACPI instead.We set
_DOSto 0 by default from now on because ACPI video driver has the mechanism to notify the user space when the display toggle switch is pressed, i.e. ACPI video driver can send the hotkey events via the input layer.
And X can/should get this event and call the native video device driver to do the actual display switch work.Note: formerly we set
_DOSto 1 to let BIOS handle the display switch,
but this doesn't always work on all platforms even in console mode.
http://bugzilla.kernel.org/show_bug.cgi?id=6001Note: with this patch applied, in console mode, hotkey pressing may not
work because ACPI only export the hotkey events to user space while X is not running, so no action is taken for this event. users may need to "echo 1 >/proc/acpi/video/xxx/DOS" so that they can switch the display with the help of BIOS.Signed-off-by Zhang Rui <[email protected]>--- drivers/acpi/video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)Index:
linux-2.6/drivers/acpi/video.c
===================================================================drivers/acpi/video.c +1
-1@@ -1754,7 +1754,7 @@ static int acpi_video_bus_put_devices(ststatic int acpi_video_bus_start_devices (struct acpi_video_bus *video) { -return acpi_video_bus_DOS (video,1 ,0 ); +return acpi_video_bus_DOS (video,0 ,0 ); }static int acpi_video_bus_stop_devices (struct acpi_video_bus *video)