Message ID | 4A8D140F.1090909@canonical.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
On Thu, 2009-08-20 at 17:14 +0800, Stefan Bader wrote: > Hardware: Acer 6920G (from a bug report) > > Another case of a broken BIOS. In this case there are several definitions for > video bus devices but only one has _DOS and _DOD defined. All other definitions > only have _DOD. I have seen such kind of BIOS too. > In the past (2.6.27) _ADR was not evaluated to make sure of using a present > video device, but with that bug brightness could be changed. > > Now the video bus having _DOS and _DOD is detected as not being present. The > other definitions are not considered because they are lacking the _DOS method. > Using the attached patch, would cause the detection code to consider the other > definitions and has been tested to enable backlight control. > > Would this be an acceptable approach? I think so. I generated a similar patch before, but didn't sent it out for some reason. My suggestion is that we should also print out a warning message if _DOS is missed, what do you think? thanks, rui > From the ACPI spec it rather sounds like > _DOD and _DOS must be present for a device for display switching and _DOS would > indicate possible backlight control as well. So the question might not be so > much is it the right thing than is it safe enough to allow more compatibility > with broken implementations without causing other problems... > > -Stefan > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From 302f148a5eee5226b15c1dec1dbdfb8326bfa17a Mon Sep 17 00:00:00 2001 From: Stefan Bader <stefan.bader@canonical.com> Date: Thu, 20 Aug 2009 10:45:58 +0200 Subject: [PATCH] acpi: video: Loosen strictness of video bus detection code BugLink: http://bugs.launchpad.net/bugs/333386 Currently a video bus device must (beside other criteria) define _DOD and _DOS methods to be considered a video device. Some broken BIOSes prevented working backlight control by only defining both for one (non-existing bus) and only _DOD for the rest. With this patch in place the other bus definitions were considered too and backlight control started to work again. Signed-off-by: Stefan Bader <stefan.bader@canonical.com> --- drivers/acpi/video.c | 2 +- drivers/acpi/video_detect.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 8851315..f9efeb8 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c @@ -1083,7 +1083,7 @@ static int acpi_video_bus_check(struct acpi_video_bus *video) */ /* Does this device support video switching? */ - if (video->cap._DOS) { + if (video->cap._DOS || video->cap._DOD) { video->flags.multihead = 1; status = 0; } diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c index 7cd2b63..bee5e34 100644 --- a/drivers/acpi/video_detect.c +++ b/drivers/acpi/video_detect.c @@ -82,7 +82,7 @@ long acpi_is_video_device(struct acpi_device *device) return 0; /* Does this device able to support video switching ? */ - if (ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOD", &h_dummy)) && + if (ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOD", &h_dummy)) || ACPI_SUCCESS(acpi_get_handle(device->handle, "_DOS", &h_dummy))) video_caps |= ACPI_VIDEO_OUTPUT_SWITCHING; -- 1.5.4.3