Comment 35 for bug 1348890

I recently received an ASUS UX301 laptop. After installing Fedora 21 and then using a git kernel (v3.16-rc5-152-g59ca9ee42838) things worked well except the brightness keys. (The keys didn't work in the 3.11.10 kernel, or any other kernel I tried either.) After some debugging, I figured out the ACPI events for the keys are never actually being sent to the kernel at all.

Matthew Garrett and I poked at this over the course of a few days and found a few things.

1) _DOD is returning 16 devices. The last device has a device_id of 0x400 and appears to be the device being used.

2) intel_didl_outputs is only looping through and setting up 8 devices in didl. intel_setup_cadls is looping through and blindly assigning the id from didl[i] to cadl[i] even though the active device might not be in the first 8 devices. This probably works on most machines because DIDL is only 8 in length.

3) The AML from this machine is a bit odd, in that it references methods from the LCDD device, which tries to figure out which active device to return in it's CDDS method. Since the active device in question isn't listed in any of the CADL entries, the AML method fails and no events are sent to the kernel.

4) If I blindly slam the returned device_id (0x400) into cadl[0], the brightness keys work as expected with the backlight being adjusted and the OSD in GNOME popping up. Clearly that isn't a solution, but it does lead to some hints as to what the problem is.

The acpidump output for the machine can be found here: