summaryrefslogtreecommitdiff
path: root/power
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2022-04-01 12:36:33 -0500
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-01 21:52:43 +0000
commit6700cb3825b822793d8de3c69f1c7a513c27280e (patch)
treed450f04acf76ab5a9dcdac8682e275d05f84152e /power
parentcaf06d733d84975a91eb5b331678be04b5ac18aa (diff)
downloadchrome-ec-6700cb3825b822793d8de3c69f1c7a513c27280e.tar.gz
jsl: Kick chipset SM if power loss in suspend
On the jasperlake platforms, our DSW_PWROK is actually generated by the EC but it relies on the ADC interrupts to be enabled. For power reasons, we do not keep the ADC interrupts enabled during suspend as the assumption is that the power rails will not be lost. However, it seems that that may actually occur. This would cause the chipset state machine to be stuck in suspend when the system is actually no longer in suspend. This commit simply has the EC do a couple of things: - In suspend, assume that the PP3300_A power good follows the enable - During a force shutdown, manually trigger the chipset state machine to re-evaluate the current signals. BUG=b:218596390 BRANCH=firmware-dedede-13606.B TEST=Build and flash magolor, login as guest, close lid, wait for system to enter S0ix. Issue `apshutdown` on EC console, verify that DUT enters S5 and G3. Open lid, verify that DUT boots back to S0. Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: I2e104857851f245bf37574a8a47e415633fb9e77 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3566111 Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org> Tested-by: Aseda Aboagye <aaboagye@chromium.org> Feels: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'power')
-rw-r--r--power/icelake.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/power/icelake.c b/power/icelake.c
index f06c116897..00248061e9 100644
--- a/power/icelake.c
+++ b/power/icelake.c
@@ -120,6 +120,15 @@ void chipset_force_shutdown(enum chipset_shutdown_reason reason)
GPIO_SET_LEVEL(GPIO_EN_PP5000, 0);
/*
+ * For JSL, we may not catch the DSW power good transitioning if this
+ * occurs in suspend as our ADC interrupts are disabled for power
+ * reasons. Therefore, kick the chipset state machine in order to catch
+ * up with the current state of affairs.
+ */
+ if (IS_ENABLED(CONFIG_CHIPSET_JASPERLAKE))
+ power_signal_interrupt(GPIO_PG_EC_DSW_PWROK);
+
+ /*
* TODO(b/111810925): Replace this wait with
* power_wait_signals_timeout()
*/