summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2022-04-07 11:44:02 -0500
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-07 18:54:02 +0000
commitd001bfff76a260d15c3eba8f697b15b493faaa32 (patch)
tree606ce6eed9c84aa3c0c2e8a22d77b7cc68c957d0 /baseboard
parente1d6bc7f84c5a52b555d1c672f8a59489047380e (diff)
downloadchrome-ec-d001bfff76a260d15c3eba8f697b15b493faaa32.tar.gz
dedede: Update pp3300_a_pgood when lost
Recently, we made a change that would cause the PP3300_A_PGOOD to follow that of the enable, but it failed to update the local variable. This can cause us to assert DSW_PWROK which can violate the Intel PDG requirement which may lead to RTC corruption. This commit simply updates the local variable in step with the logic that was recently added. BUG=b:218596390 BRANCH=firmware-dedede-13606.B TEST=Build and flash magolor, boot to S0, suspend to S0ix, issue `apshutdown` on EC console, verify that DUT shuts down to S5 and that DSW_PWROK isn't asserted durng this process. Signed-off-by: Aseda Aboagye <aaboagye@google.com> Change-Id: I420b6e0d29b17bc07b02b3598ec5c099afecfa57 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3576652 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Auto-Submit: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r--baseboard/dedede/baseboard.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/baseboard/dedede/baseboard.c b/baseboard/dedede/baseboard.c
index 1986f58e34..60b3949e93 100644
--- a/baseboard/dedede/baseboard.c
+++ b/baseboard/dedede/baseboard.c
@@ -138,9 +138,12 @@ __override int intel_x86_get_pg_ec_dsw_pwrok(void)
* therefore this value may be stale. Assume that the PGOOD
* follows the enable signal for this case only.
*/
- if (!gpio_get_level(GPIO_EN_PP3300_A))
+ if (!gpio_get_level(GPIO_EN_PP3300_A)) {
CPRINTS("EN_PP3300_A is low, assuming PG is low!");
- return gpio_get_level(GPIO_EN_PP3300_A);
+ atomic_clear(&pp3300_a_pgood);
+ } else {
+ atomic_or(&pp3300_a_pgood, 1);
+ }
}
return pp3300_a_pgood;
}