summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChromeOS Developer <dparker@chromium.org>2014-03-06 10:11:39 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-03-08 00:52:18 +0000
commitcd1a1e90fa4ee704c96cfdb75d03978e3bdd8b88 (patch)
treeb95f38c46c2de0be6ced8e15f341269979f298fb
parent4c9c03a0e7f0f04c9e31f38af857b4e300449512 (diff)
downloadchrome-ec-cd1a1e90fa4ee704c96cfdb75d03978e3bdd8b88.tar.gz
Peppy: Shutdown immediately if PP5000 rail goes down unexpectedly
BUG=chrome-os-partner:25833 BRANCH=peppy TEST=Trip the PP5000 VR by over-volting the rail. Verify that the system shuts down rather than the EC becoming unresponsive due to loosing PP3300_EC unexpectedly. Check both S0 and S3 cases. Change-Id: I1e95e029b6831ac50671338c1fc927237f8560fd Signed-off-by: Dave Parker <dparker@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/189039 Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r--board/peppy/board.c6
-rw-r--r--common/chipset_x86_common.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/board/peppy/board.c b/board/peppy/board.c
index 57c0a75f9e..399a494af0 100644
--- a/board/peppy/board.c
+++ b/board/peppy/board.c
@@ -52,7 +52,11 @@ const struct gpio_info gpio_list[] = {
x86_interrupt},
{"PP1350_PGOOD", LM4_GPIO_H, (1<<6), GPIO_INT_BOTH,
x86_interrupt},
- {"PP5000_PGOOD", LM4_GPIO_N, (1<<0), GPIO_INT_BOTH,
+ /*
+ * Catch PP5000_PGOOD interrupts while in S3
+ * (http://crosbug.com/p/25833)
+ */
+ {"PP5000_PGOOD", LM4_GPIO_N, (1<<0), GPIO_INT_BOTH_DSLEEP,
x86_interrupt},
{"VCORE_PGOOD", LM4_GPIO_C, (1<<6), GPIO_INT_BOTH,
x86_interrupt},
diff --git a/common/chipset_x86_common.c b/common/chipset_x86_common.c
index 1652564df4..34c2647990 100644
--- a/common/chipset_x86_common.c
+++ b/common/chipset_x86_common.c
@@ -335,11 +335,11 @@ DECLARE_HOOK(HOOK_AC_CHANGE, x86_ac_change, HOOK_PRIO_DEFAULT);
void x86_interrupt(enum gpio_signal signal)
{
#ifdef BOARD_peppy
- /* Catch the PP5000 rail going down in S0 quicky as it is likely the
+ /* Catch the PP5000 rail going down unexpectedly as it is likely the
* PP3300_EC rail is going down with it. (http://crosbug.com/p/25833)
*/
if (signal == GPIO_PP5000_PGOOD && (gpio_get_level(signal) == 0) &&
- chipset_in_state(CHIPSET_STATE_ON)) {
+ (gpio_get_level(GPIO_PP5000_EN) == 1)) {
usb_port_all_ports_off();
CPRINTF("[%T Disabled USB ports and triggering shutdown]\n");
chipset_force_shutdown();