summaryrefslogtreecommitdiff
path: root/baseboard/dedede/baseboard.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2020-04-08 20:01:04 -0700
committerCommit Bot <commit-bot@chromium.org>2020-04-21 19:45:33 +0000
commitd8d1f71a4f5e53d97ab99f86a2cbd2aa1dd7a268 (patch)
tree0dd7f28ccb6704ee9790e0b0a3793e50caf05c15 /baseboard/dedede/baseboard.c
parent071e1b8f7604d2bcc3fe9d775b7d6098bf38dc50 (diff)
downloadchrome-ec-d8d1f71a4f5e53d97ab99f86a2cbd2aa1dd7a268.tar.gz
waddledoo/waddledee: Deassert ALL_SYS_PGOOD quickly
According to tPLT17 in the PDG, the time from SLP_S3_L assertion to VCCIN_EN de-assertion should be less than 200us, but this was not occurring on waddledoo. This commit adds a special interrupt handler in order to meet that timing requirement by immediately deasserting ALL_SYS_PGOOD once SLP_S3_L is asserted. BUG=b:152552074 BRANCH=None TEST=Build and flash waddledoo, boot and shut AP down, verify that the time between SLP_S3_L asserting and ALL_SYS_PGOOD deasserting is less than 200us. TEST=`make -j buildall` Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: Ib34016d5bdfa956f410dde3e3b3074bd306a18f9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2142744 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org> Auto-Submit: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'baseboard/dedede/baseboard.c')
-rw-r--r--baseboard/dedede/baseboard.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/baseboard/dedede/baseboard.c b/baseboard/dedede/baseboard.c
index 59c23f560a..f7fa77feed 100644
--- a/baseboard/dedede/baseboard.c
+++ b/baseboard/dedede/baseboard.c
@@ -134,6 +134,20 @@ __override int power_signal_get_level(enum gpio_signal signal)
}
+void baseboard_all_sys_pgood_interrupt(enum gpio_signal signal)
+{
+ /*
+ * We need to deassert ALL_SYS_PGOOD within 200us of SLP_S3_L asserting.
+ * that is why we do this here instead of waiting for the chipset
+ * driver to.
+ */
+ if (!gpio_get_level(GPIO_SLP_S3_L))
+ gpio_set_level(GPIO_ALL_SYS_PWRGD, 0);
+
+ /* Now chain off to the normal power signal interrupt handler. */
+ power_signal_interrupt(signal);
+}
+
void baseboard_chipset_startup(void)
{
/* Allow keyboard backlight to be enabled */