ec/lenovo/h8/ssdt: Add keyboard backlight interface

Add methods MLCG and MLCS for thinkpad_acpi kernel module.
Required for backlight or thinklight control from userspace.

Change-Id: Ia65e770e772936c9c32be33c30839a2dee2a107c
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/21002
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
This commit is contained in:
Patrick Rudolph 2017-08-14 17:46:58 +02:00 committed by Felix Held
parent 60eca531df
commit 6b7178aa10
2 changed files with 35 additions and 0 deletions

View File

@ -19,6 +19,7 @@ Device (HKEY)
/* Generated by ssdt.c */
External (\HBDC, IntObj)
External (\HWAN, IntObj)
External (\HKBL, IntObj)
Name (_HID, EisaId ("IBM0068"))
@ -228,4 +229,34 @@ Device (HKEY)
/* FIXME: Store state at resume */
}
}
/*
* Argument is unused.
* Returns the current state:
* Bit 9: Backlight HW present
* Bit 0-1: Brightness level
*/
Method (MLCG, 1)
{
If (HKBL) {
Store (0x200, Local0)
/* FIXME: Support 2bit brightness control */
Or (Local0, \_SB.PCI0.LPCB.EC.KBLT, Local0)
Return (Local0)
} Else {
Return (0)
}
}
/*
* Set the current state:
* Bit 0-1: Brightness level
*/
Method (MLCS, 1)
{
If (HKBL) {
/* FIXME: Support 2bit brightness control */
Store (And(Arg0, 1), \_SB.PCI0.LPCB.EC.WWEB)
}
}
}

View File

@ -36,6 +36,8 @@ static char *h8_dsdt_scope(struct device *dev, const char *scope)
*/
void h8_ssdt_generator(struct device *dev)
{
struct ec_lenovo_h8_config *conf = dev->chip_info;
if (!acpi_device_path(dev))
return;
@ -47,6 +49,8 @@ void h8_ssdt_generator(struct device *dev)
/* Used by thinkpad_acpi */
acpigen_write_name_byte("HBDC", h8_has_bdc(dev) ? ONE_OP : ZERO_OP);
acpigen_write_name_byte("HWAN", h8_has_wwan(dev) ? ONE_OP : ZERO_OP);
acpigen_write_name_byte("HKBL", (conf && conf->has_keyboard_backlight) ?
ONE_OP : ZERO_OP);
acpigen_pop_len(); /* Scope HKEY */
}