Bug 42272 - Brightness control keys not working on Dell L502X
Summary: Brightness control keys not working on Dell L502X
Status: CLOSED INSUFFICIENT_DATA
Alias: None
Product: ACPI
Classification: Unclassified
Component: Power-Other (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Aaron Lu
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-02 19:24 UTC by Pierre Chifflier
Modified: 2013-06-19 13:43 UTC (History)
3 users (show)

See Also:
Kernel Version: 3.0.1
Subsystem:
Regression: No
Bisected commit-id:


Attachments
dmesg (74.48 KB, text/plain)
2011-09-02 19:34 UTC, Pierre Chifflier
Details
lspci (1.92 KB, text/plain)
2011-09-02 19:34 UTC, Pierre Chifflier
Details
DSDT (309.07 KB, text/x-dsl)
2011-09-02 19:36 UTC, Pierre Chifflier
Details
acpidump (199.26 KB, application/octet-stream)
2011-09-02 20:51 UTC, Pierre Chifflier
Details
DSDT + all SSDTs (53.70 KB, application/x-gzip)
2011-09-02 22:48 UTC, Pierre Chifflier
Details

Description Pierre Chifflier 2011-09-02 19:24:23 UTC
The brightness control keys (Fn+F4 and Fn+F5) does not work on the Dell XPS17 L502X (brightness does not change).

Other function keys are working properly.

Strange thing is that the value stored in /sys/class/backlight/acpi_video0/brightness changes as the function keys are pressed (from 0 to 15), there is just no visible changes.

I tried a few things:
- booting with acpi_backlight=vendor does not solve the problem (the brightness path changes to /sys/class/backlight/dell_backlight/brightness, and the function keys does not seem to have any effect

- the graphics card is an nvidia 555M, I tried with nvidia module, nouveau and in console mode, no changes

- bug has also been reported to ubuntu, at https://bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/762670

I'm using Debian sid/unstable, with kernel 3.0.1 (vanilla, no additional patch). Will attach dsdt, lspci and dmesg to the bugreport.
Comment 1 Pierre Chifflier 2011-09-02 19:34:23 UTC
Created attachment 71442 [details]
dmesg
Comment 2 Pierre Chifflier 2011-09-02 19:34:48 UTC
Created attachment 71452 [details]
lspci
Comment 3 Pierre Chifflier 2011-09-02 19:36:19 UTC
Created attachment 71462 [details]
DSDT

The DSDT, dumped by acpidump

Note that there is an error in the _DSM function, line 8387
Comment 4 Robert Moore 2011-09-02 20:37:46 UTC
Please post the actual acpidump, I would like to look at the error in the disassembly of _DSM.
Comment 5 Pierre Chifflier 2011-09-02 20:51:02 UTC
Created attachment 71472 [details]
acpidump

Result of the command 'acpidump -o dump.acpi'
Comment 6 Robert Moore 2011-09-02 21:39:58 UTC
Error is caused because NVOP cannot be resolved, and it is actually a control method. Disassembler has no way of knowing this, so it gets confused:

    External (NVOP, IntObj)

        P8XH (Zero, 0xF5)
        Return (NVOP)
        Arg0
        Arg1
        Arg2
        Arg3

This is probably what the actual code should look like:

        P8XH (Zero, 0xF5)
        Return (NVOP (Arg0, Arg1, Arg2, Arg3))

NVOP may appear in a dynamically loaded SSDT, it is not defined in any of the SSDTs that appear in the ACPI dump.

This is fundamental issue with AML code where the disassembler cannot properly reproduce the original code. There is no "argument" information associated with a compiled method, so the actual method declaration must be present for proper disassembler. The -e option to iASL should help, if you can dump the dynamically loaded SSDTs (shown below, from dmesg.)

[    1.004816] ACPI: SSDT 00000000bf710718 0067C (v01  PmRef  Cpu0Cst 00003001 INTL 20061109)
[    1.005393] ACPI: Dynamic OEM Table Load:
[    1.005396] ACPI: SSDT           (null) 0067C (v01  PmRef  Cpu0Cst 00003001 INTL 20061109)
[    1.016327] ACPI: SSDT 00000000bf711a98 00303 (v01  PmRef    ApIst 00003000 INTL 20061109)
[    1.017005] ACPI: Dynamic OEM Table Load:
[    1.017007] ACPI: SSDT           (null) 00303 (v01  PmRef    ApIst 00003000 INTL 20061109)
[    1.027872] ACPI: SSDT 00000000bf70fd98 00119 (v01  PmRef    ApCst 00003000 INTL 20061109)
[    1.028426] ACPI: Dynamic OEM Table Load:
[    1.028428] ACPI: SSDT           (null) 00119 (v01  PmRef    ApCst 00003000 INTL 20061109)
Comment 7 Pierre Chifflier 2011-09-02 22:46:40 UTC
Thanks for your help.

I must admit I don't see what to do now (I'm a bit lost, and not familiar with ACPI so I may be missing something obvious).

I tried to run iasl -d -e on the DSDT.dat file, but this results more or less in the same file DSDT.dsl (the error is still present).

I also tried some commands like
iasl -eSSDT1,SSDT2,SSDT3,SSDT4,SSDT5,SSDT6 -d DSDT
with no more luck

About the dynamically loaded SSDTs, I don't know how to dump them. I have looked in the /sys/firmware/acpi/tables/dynamic/ directory, there are 3 files (SSDT4 to SSDT6). I don't know if they are needed, so I'm creating a tarball with all files (dynamic or static) and attaching it.
That said, I ran a iasl -d on each DSDT file and could not find a reference to NVOP.

Also, I'm wondering about the relation between this and the problem - could the problem with brightness be caused by an error in _DSM, or is this just a wrong supposition I was doing ?
Comment 8 Pierre Chifflier 2011-09-02 22:48:35 UTC
Created attachment 71492 [details]
DSDT + all SSDTs

DSDT and SSDT tables from /sys/firmware/acpi/tables/
+ SSDT tables from /sys/firmware/acpi/tables/dynamic/
Comment 9 Robert Moore 2011-09-06 20:14:42 UTC
I can only speak to the disassembler error. Unless you are receiving a message like "NVOP", then there is probably no runtime issue with the _DSM.
Comment 10 Rafael J. Wysocki 2013-01-29 01:23:39 UTC
What's the latest kernel tested?
Comment 11 Zhang Rui 2013-04-25 02:16:12 UTC
ping...

Note You need to log in before you can comment on or make changes to this bug.