diff options
author | Patrick Rudolph <siro@das-labor.org> | 2017-08-14 18:41:32 +0200 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2018-07-19 16:48:19 +0000 |
commit | f281b6d175905e625f481bf8b8a2b7b10d037582 (patch) | |
tree | fa254daeb34cf39661fe1d8e50ba2cfd59c6154b /src | |
parent | 6b7178aa107ef7e2475e3b1f32ac849d98798406 (diff) | |
download | coreboot-f281b6d175905e625f481bf8b8a2b7b10d037582.tar.xz |
ec/lenovo/h8/ssdt: Add UWB ACPI interface
Add ACPI methods GUWB and SUWB for thinkpad_acpi.
Required for power control of the UWB module.
Change-Id: I8f9a56e45c0d765b0e06b8d3600bd3575dd09491
Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-on: https://review.coreboot.org/21003
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src')
-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 */ } |