summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2017-08-18 21:06:24 +0200
committerPatrick Georgi <pgeorgi@google.com>2017-08-22 17:59:20 +0000
commit4bd68b8e4f7195d48d742deb2da848b31733e57e (patch)
tree8e317897811f7415de867e2a09bf5785d9788372
parentfbf1018805d108ea59ea000fec459e5a44110d7a (diff)
downloadcoreboot-4bd68b8e4f7195d48d742deb2da848b31733e57e.tar.xz
ec/google: Detect keyboard backlight at runtime
This enables adding the backlight driver to boards that may or may not come with a keyboard backlight function. It's the responsibility of the EC to report if that feature exists, but that's not a big extra burden given that it already keeps track of everything else related to the backlight. BUG=b:64705535 BRANCH=none CQ-DEPEND=CL:620595 TEST=configured KBLE manually and noticed the presence/absence of /sys/devices/platform/GOOG0002:00/ on a Chrome OS Linux kernel, corresponding to the value reported by the EC. Change-Id: Idc36bfaa6e69581ba19b52d37af6956f63cfdb8f Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://review.coreboot.org/21099 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r--src/ec/google/chromeec/acpi/ec.asl2
-rw-r--r--src/ec/google/chromeec/acpi/keyboard_backlight.asl14
2 files changed, 16 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/acpi/ec.asl b/src/ec/google/chromeec/acpi/ec.asl
index a5324920e6..422abe1881 100644
--- a/src/ec/google/chromeec/acpi/ec.asl
+++ b/src/ec/google/chromeec/acpi/ec.asl
@@ -54,6 +54,8 @@ Device (EC0)
PATC, 8, // Programmable Auxiliary Trip Commit
CHGL, 8, // Charger Current Limit
TBMD, 1, // Tablet mode
+ Offset (0x0a),
+ KBLE, 1, // Keyboard Backlight exists
}
#if IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_ACPI_MEMMAP)
diff --git a/src/ec/google/chromeec/acpi/keyboard_backlight.asl b/src/ec/google/chromeec/acpi/keyboard_backlight.asl
index 75a8df3cca..d76bed87ea 100644
--- a/src/ec/google/chromeec/acpi/keyboard_backlight.asl
+++ b/src/ec/google/chromeec/acpi/keyboard_backlight.asl
@@ -23,6 +23,20 @@ Scope (\_SB)
Name (_HID, "GOOG0002")
Name (_UID, 1)
+ /* Ask EC if we even have a backlight
+ * Return 0xf (present, enabled, show in UI, functioning) or 0
+ *
+ * With older EC codebases that don't support the Device
+ * Features bitfield, this reports the keyboard backlight as
+ * enabled since reads to undefined addresses in EC address
+ * space return 0xff and so KBLE will be 1.
+ */
+ Method (_STA, 0, NotSerialized)
+ {
+ Multiply (0xf, \_SB.PCI0.LPCB.EC0.KBLE, Local0)
+ Return (Local0)
+ }
+
/* Read current backlight value */
Method (KBQC, 0, NotSerialized)
{