[ltp] Thinkpad keyboard backlight ACPI interface

Bjørn Mork linux-thinkpad@linux-thinkpad.org
Tue, 28 Jul 2015 13:56:32 +0200


Pali Rohár <pali.rohar@gmail.com> writes:

> On Tuesday 28 July 2015 13:17:58 Bjørn Mork wrote:
>> Pali Rohár <pali.rohar@gmail.com> writes:
>> 
>> > I would like to write kernel patch for thinkpad_acpi.c to support 
>> > keyboard backlight (like other modules in drivers/platform/x86/ tree),=
 
>> > but last missing information is how to detect current level of 
>> > brightness and check if backlight is supported...
>> 
>> Based on the code you posted, I would assume that MLCG returns the
>> current brightness level.  Did you test that?
>> 
>
> Of course and it returns:
>
> 0x50200 - off
> 0x50201 - level 1
> 0x50202 - level 2
>
> But I do not understand why it returns 0x5020{0,1,2} and not only 0,1,2.

Looks like it might have several bitfields with different meanings.
You'll probably have to guess what they are.

> MLCS returns 0x0.
>
>> The thinkpad_acpi driver use code like this to test for supported
>> features:
>> 
>>       tp_features.bluetooth = hkey_handle && acpi_evalf(hkey_handle, &=
status, "GBDC", "qd");
>> 
>> You could do something similar for the keyboard backlight feature,
>> couldn't you?
>> 
>
> Sounds good, but I do not know what "GBDC" and "qd" means... :-(
> So because of that I need some "documentation" which say how to do it.

The "qd" part is documented in the driver source - it's specific to the
acpi_evalf() helper.  For the "GBDC" I don't think there is any
documentation.  People have done what you have: Looked at the DSDT,
added some intelligent guesswork, and then tested the result.


Bjørn