From d338b46504bde900a18fc32eff7cda14ba3711b4 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Wed, 31 Jul 2013 15:30:41 -0700 Subject: [PATCH] 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 Reviewed-on: https://gerrit.chromium.org/gerrit/63988 Reviewed-by: Aaron Durbin Reviewed-on: http://review.coreboot.org/4415 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- src/ec/google/chromeec/acpi/ec.asl | 21 +++++++++++++++++++++ src/ec/google/chromeec/ec_commands.h | 5 +++++ 2 files changed, 26 insertions(+) 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