From e14d961407567ee4d937d9fd98346d018fd49ff0 Mon Sep 17 00:00:00 2001 From: Rong Chang Date: Sun, 17 Jun 2012 15:24:25 +0800 Subject: Implement x86 force shutdown Signed-off-by: Rong Chang 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 Reviewed-by: Randall Spangler Commit-Ready: Rong Chang Tested-by: Rong Chang --- common/x86_power.c | 16 ++++++++++++++-- 1 file 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); } -- cgit v1.2.1