summaryrefslogtreecommitdiff
path: root/common/vboot
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2020-07-31 17:20:38 +0000
committerCommit Bot <commit-bot@chromium.org>2020-08-01 00:12:19 +0000
commit744a611d80219aa430501e2a1923e2d06af7fe0a (patch)
treed129f1a8027faee950f2b7036cd11d77ead26771 /common/vboot
parenteaffee8a2567be9be30a2290456dc3d4c0f39147 (diff)
downloadchrome-ec-744a611d80219aa430501e2a1923e2d06af7fe0a.tar.gz
Revert "power: Clear AP_IDLE when waking up by PB or LID"
This reverts commit 27ee378bb78a299a0983379be83eb6d55860b4ae. Reason for revert: b/162508724 A wake-up source from hibernation needs to be determined only by RO. Reverting back to the original implementation: CL:2236589. Original change's description: > power: Clear AP_IDLE when waking up by PB or LID > > Currently, AP_IDLE is cleared when EC wakes up by the power button or > the lid open. > > This patch extends the logic from CONFIG_EXTPOWER_GPIO to > CONFIG_EXTPOWER so that the bug (chromium:1073960) can be also fixed > on the boards using non-GPIO method for extpower_is_present. > > Tested as follows on Trembyle: > 1. Put DUT in hibernation. > 2. Wake up DUT and observe: > a. When waking up by power button, AP is turned on. > b. When waking up by lid open, AP is turned on. > c. When waking up by AC, AP is left idle. > > BUG=b:157077589, chromium:1073960, b:159350276 > BRANCH=none > TEST=See above. > > Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> > Change-Id: I944aaac036ce58659e81b7021e52a3291f31e951 > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2283946 > Reviewed-by: Jett Rink <jettrink@chromium.org> Bug: b:157077589 Bug: chromium:1073960 Bug: b:159350276 Bug: b:162508724 Change-Id: Iaf9d0af2ca8c48bbf2529c4ba05493837dd76287 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2333106 Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Auto-Submit: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'common/vboot')
-rw-r--r--common/vboot/efs2.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/common/vboot/efs2.c b/common/vboot/efs2.c
index e608fd5841..963d10a4b2 100644
--- a/common/vboot/efs2.c
+++ b/common/vboot/efs2.c
@@ -253,6 +253,18 @@ void vboot_main(void)
return;
}
+ if (IS_ENABLED(CONFIG_HIBERNATE)
+ && IS_ENABLED(CONFIG_EXTPOWER_GPIO)
+ && !gpio_get_level(GPIO_AC_PRESENT)) {
+ /*
+ * EC doesn't hibernate from G3 when AC is present. Thus if AC
+ * is not present here, it implies we woke up by power button or
+ * by lid. Clear AP_IDLE to avoid interfering with the AP boot.
+ */
+ CPRINTS("Clear AP_IDLE, assuming wake-up by PB or LID");
+ system_clear_reset_flags(EC_RESET_FLAG_AP_IDLE);
+ }
+
if (system_is_manual_recovery() ||
(system_get_reset_flags() & EC_RESET_FLAG_STAY_IN_RO)) {
if (system_is_manual_recovery())