[Bugme-new] [Bug 13577] New: Broken backlight control on Acer Aspire 8930G due to buggy DSDT/ACPI Video

bugzilla-daemon at bugzilla.kernel.org bugzilla-daemon at bugzilla.kernel.org
Thu Jun 18 21:58:34 PDT 2009


http://bugzilla.kernel.org/show_bug.cgi?id=13577

           Summary: Broken backlight control on Acer Aspire 8930G due to
                    buggy DSDT/ACPI Video
           Product: ACPI
           Version: 2.5
    Kernel Version: 2.6.29
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Power-Video
        AssignedTo: acpi_power-video at kernel-bugs.osdl.org
        ReportedBy: hector at marcansoft.com
        Regression: No


Created an attachment (id=22005)
 --> (http://bugzilla.kernel.org/attachment.cgi?id=22005)
Disassembled DSDT

Backlight controls on this laptop are broken due to a combination of factors.
Apparently, the DSDT supports two methods to set the backlight:

- old WMI / proprietary method. This is supported by acer_wmi.
- ACPI Video interface

When the DSDT detects Windows Vista (which Linux seems to pretend to be), it
disables the WMI method and also disables direct control using the hardware
keys, instead expecting software to react to those keypresses and control it
using the ACPI Video device.

When I do a very ugly EC hack to turn off Vista mode, acer_wmi works fine to
set and query the brightness and also the hardware keys work directly, even
without acer_wmi. Presumably this will also be the case if Linux doesn't
identify itself as Vista to ACPI.

The ACPI Video Interface is broken. There are three devices supported: OVGA,
PEGP.EVGA, and PEGP.NVGA. As far as I can tell, OVGA is supposed to be an
integrated graphics controller that doesn't exist. EVGA and NVGA are very
similar and I don't know which one corresponds to my laptop or how the driver
is supposed to tell between them, but clearly one of them is the correct one
and corresponds to the modular MXM card on the laptop.

OVGA would work except that it corresponds to a nonexistent PCI device, so
acpi_get_physical_pci_device kills it. Hacking this out makes things work (the
brightness setting is via the EC anyway, and works the same for all three
devices), but that doesn't sound like a good idea.

EVGA and NVGA fail to register as video devices because they lack the _DOS
method that ACPI specifies as required for backlight functionality. They do
have _DOD, which isn't enough for display output switching support, but at
least identifies them as video devices. They fail the acpi_is_video_device
because that only checks for backlight support if one of the other three
features is fully present. They also fail acpi_video_bus_check because that
again wants one of the three features.

At this point I'm unsure of what the best way to fix this is. My guess would be
to make acpi_is_video_device check for brightness controls even if only _DOD is
present, and also make acpi_video_bus_check consider just _DOD good enough to
pass a device. Then the other issue left would be the duplicated device (the
backlight control is really messed up when it tries to do the same thing to two
different devices). Applying those two hacks and and manually unbinding one of
the devices from the driver via sysfs makes things work for me.

-- 
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


More information about the Bugme-new mailing list