summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2013-07-31 15:30:41 -0700
committerPatrick Georgi <patrick@georgi-clan.de>2013-12-21 12:02:14 +0100
commitd338b46504bde900a18fc32eff7cda14ba3711b4 (patch)
tree66dd39436c56ed9a05858944647b5acde30ecd8c
parent7ad61f6262c3056232c414ed9482b7d6f8719948 (diff)
downloadcoreboot-d338b46504bde900a18fc32eff7cda14ba3711b4.tar.xz
chromeec: Add event methods for EC requested throttle
Two new events possible from the EC for starting and stopping throttle. These are handled in a per-board method that is defined under the thermal zone. This is not quite where I wanted it but the scoping rules in ACPI don't let me have a defined external object in the same scope. Change-Id: I766f07b4365b29df3daa8e45e88f7c38c645c287 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/63988 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/4415 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
-rw-r--r--src/ec/google/chromeec/acpi/ec.asl21
-rw-r--r--src/ec/google/chromeec/ec_commands.h5
2 files changed, 26 insertions, 0 deletions
diff --git a/src/ec/google/chromeec/acpi/ec.asl b/src/ec/google/chromeec/acpi/ec.asl
index 24519c272f..31ef90520e 100644
--- a/src/ec/google/chromeec/acpi/ec.asl
+++ b/src/ec/google/chromeec/acpi/ec.asl
@@ -23,6 +23,9 @@
* re-evaluate their _PPC and _CST tables.
*/
+// Mainboard specific throttle handler
+External (\_TZ.THRT, MethodObj)
+
Device (EC0)
{
Name (_HID, EISAID ("PNP0C09"))
@@ -226,6 +229,24 @@ Device (EC0)
Store ("EC: KEY PRESSED", Debug)
}
+ // Throttle Start
+ Method (_Q12, 0, NotSerialized)
+ {
+ Store ("EC: THROTTLE START", Debug)
+ If (CondRefOf (\_TZ.THRT, Local0)) {
+ \_TZ.THRT (1)
+ }
+ }
+
+ // Throttle Stop
+ Method (_Q13, 0, NotSerialized)
+ {
+ Store ("EC: THROTTLE STOP", Debug)
+ If (CondRefOf (\_TZ.THRT, Local0)) {
+ \_TZ.THRT (0)
+ }
+ }
+
#include "ac.asl"
#include "battery.asl"
}
diff --git a/src/ec/google/chromeec/ec_commands.h b/src/ec/google/chromeec/ec_commands.h
index baf16d31f9..d4992a15bf 100644
--- a/src/ec/google/chromeec/ec_commands.h
+++ b/src/ec/google/chromeec/ec_commands.h
@@ -239,6 +239,11 @@ enum host_event_code {
/* Shutdown due to battery level too low */
EC_HOST_EVENT_BATTERY_SHUTDOWN = 17,
+ /* Suggest that the AP throttle itself */
+ EC_HOST_EVENT_THROTTLE_START = 18,
+ /* Suggest that the AP resume normal speed */
+ EC_HOST_EVENT_THROTTLE_STOP = 19,
+
/*
* The high bit of the event mask is not used as a host event code. If
* it reads back as set, then the entire event mask should be