diff options
Diffstat (limited to 'src/ec')
-rw-r--r-- | src/ec/lenovo/h8/acpi/ec.asl | 3 | ||||
-rw-r--r-- | src/ec/lenovo/h8/acpi/thinkpad.asl | 32 | ||||
-rw-r--r-- | src/ec/lenovo/h8/ssdt.c | 2 |
3 files changed, 37 insertions, 0 deletions
diff --git a/src/ec/lenovo/h8/acpi/ec.asl b/src/ec/lenovo/h8/acpi/ec.asl index 17afba2dec..8a1b9c4343 100644 --- a/src/ec/lenovo/h8/acpi/ec.asl +++ b/src/ec/lenovo/h8/acpi/ec.asl @@ -46,6 +46,9 @@ Device(EC) Offset (0x30), , 6, ALMT, 1, /* Audio Mute + LED */ + Offset (0x31), + , 2, + UWBE, 1, /* Ultra Wideband enable */ Offset (0x3a), AMUT, 1, /* Audio Mute (internal use) */ , 3, diff --git a/src/ec/lenovo/h8/acpi/thinkpad.asl b/src/ec/lenovo/h8/acpi/thinkpad.asl index a0812e5d48..e67bc8f65f 100644 --- a/src/ec/lenovo/h8/acpi/thinkpad.asl +++ b/src/ec/lenovo/h8/acpi/thinkpad.asl @@ -20,6 +20,7 @@ Device (HKEY) External (\HBDC, IntObj) External (\HWAN, IntObj) External (\HKBL, IntObj) + External (\HUWB, IntObj) Name (_HID, EisaId ("IBM0068")) @@ -259,4 +260,35 @@ Device (HKEY) Store (And(Arg0, 1), \_SB.PCI0.LPCB.EC.WWEB) } } + + /* + * Returns the current state: + * Bit 0: UWB HW present + * Bit 1: UWB radio enabled + */ + Method (GUWB, 0) + { + If (HUWB) { + Store (One, Local0) + If(\_SB.PCI0.LPCB.EC.UWBE) + { + Or(Local0, 2, Local0) + } + Return (Local0) + } Else { + Return (0) + } + } + + /* + * Set the current state: + * Bit 1: UWB radio enabled + */ + Method (SUWB, 1) + { + If (HUWB) { + ShiftRight (And(Arg0, 2), 1, Local0) + Store (Local0, \_SB.PCI0.LPCB.EC.UWBE) + } + } } diff --git a/src/ec/lenovo/h8/ssdt.c b/src/ec/lenovo/h8/ssdt.c index 4df4bd8a87..eccefe25ee 100644 --- a/src/ec/lenovo/h8/ssdt.c +++ b/src/ec/lenovo/h8/ssdt.c @@ -51,6 +51,8 @@ void h8_ssdt_generator(struct device *dev) 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_write_name_byte("HUWB", (conf && conf->has_uwb) ? + ONE_OP : ZERO_OP); acpigen_pop_len(); /* Scope HKEY */ } |