diff options
author | Rong Chang <rongchang@chromium.org> | 2012-06-17 15:24:25 +0800 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-06-19 09:53:03 -0700 |
commit | e14d961407567ee4d937d9fd98346d018fd49ff0 (patch) | |
tree | 1e35a0d76af31f70238ab878485dad4fd117bc8f | |
parent | 638274bd2c6a6be9dcdc010327f290afe443912a (diff) | |
download | chrome-ec-e14d961407567ee4d937d9fd98346d018fd49ff0.tar.gz |
Implement x86 force shutdown
Signed-off-by: Rong Chang <rongchang@chromium.org>
BUG=chrome-os-partner:8242
TEST=manual
Switch to dev mode VT2 console. Increase CPU load:
cat /dev/urandom > /dev/null &
cat /dev/urandom > /dev/null &
Check CPU PECI temperature and wait for auto shutdown:
ectool temps 9
Change-Id: I62ad6efd6621bf5ddcde55424c39ac897271a94a
Reviewed-on: https://gerrit.chromium.org/gerrit/25503
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Ready: Rong Chang <rongchang@chromium.org>
Tested-by: Rong Chang <rongchang@chromium.org>
-rw-r--r-- | common/x86_power.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/common/x86_power.c b/common/x86_power.c index 48ea2fa455..6dde6c5264 100644 --- a/common/x86_power.c +++ b/common/x86_power.c @@ -172,13 +172,25 @@ static int wait_in_signals(uint32_t want) void x86_power_cpu_overheated(int too_hot) { - /* TODO: crosbug.com/p/8242 - real implementation */ + static int overheat_count; + + if (too_hot) { + overheat_count++; + if (overheat_count > 3) + x86_power_force_shutdown(); + } else { + overheat_count = 0; + } } void x86_power_force_shutdown(void) { - /* TODO: crosbug.com/p/8242 - real implementation */ + /* Force x86 off. This condition will reset once the state machine + * transitions to G3. + */ + gpio_set_level(GPIO_PCH_DPWROK, 0); + gpio_set_level(GPIO_PCH_RSMRSTn, 0); } |