diff options
author | Patrick Georgi <pgeorgi@google.com> | 2017-08-22 20:26:24 +0200 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-08-30 03:58:28 -0700 |
commit | f1dfc4cbac2140f51f4a40fec790755ca7d4fafe (patch) | |
tree | 8bfd0c526430ea8dd4ec070603f5d979333a0a33 /common/acpi.c | |
parent | 6844e4c2793b736b873f97510238ae6ed03c0772 (diff) | |
download | chrome-ec-f1dfc4cbac2140f51f4a40fec790755ca7d4fafe.tar.gz |
acpi: Map EC features into ACPI EC memory space
Reserve EC address space offset 0x0a-0x0d for device features. Same
value as with the host command, just different way to access it.
BUG=b:64705535
BRANCH=none
TEST=none
Change-Id: I420aed1ae8d0fb7da477fc72ac55ea75a9f9350b
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://chromium-review.googlesource.com/626976
Commit-Ready: Patrick Georgi <pgeorgi@chromium.org>
Tested-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Duncan Laurie <dlaurie@google.com>
Diffstat (limited to 'common/acpi.c')
-rw-r--r-- | common/acpi.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/common/acpi.c b/common/acpi.c index d9815100e1..2097beeda8 100644 --- a/common/acpi.c +++ b/common/acpi.c @@ -175,6 +175,32 @@ int acpi_ap_to_ec(int is_cmd, uint8_t value, uint8_t *resultptr) break; #endif + case EC_ACPI_MEM_DEVICE_FEATURES0: + case EC_ACPI_MEM_DEVICE_FEATURES1: + case EC_ACPI_MEM_DEVICE_FEATURES2: + case EC_ACPI_MEM_DEVICE_FEATURES3: { + int off = acpi_addr - EC_ACPI_MEM_DEVICE_FEATURES0; + uint32_t val = get_feature_flags0(); + + /* Flush EC_FEATURE_LIMITED bit. Having it reset to 0 + * means that FEATURES[0-3] are supported in the first + * place, and the other bits are valid. + */ + val &= ~1; + + result = val >> (8 * off); + break; + } + case EC_ACPI_MEM_DEVICE_FEATURES4: + case EC_ACPI_MEM_DEVICE_FEATURES5: + case EC_ACPI_MEM_DEVICE_FEATURES6: + case EC_ACPI_MEM_DEVICE_FEATURES7: { + int off = acpi_addr - EC_ACPI_MEM_DEVICE_FEATURES4; + uint32_t val = get_feature_flags1(); + + result = val >> (8 * off); + break; + } default: result = acpi_read(acpi_addr); break; |