summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKarthikeyan Ramasubramanian <kramasub@google.com>2020-08-04 16:52:56 -0600
committerTim Wawrzynczak <twawrzynczak@chromium.org>2020-08-14 15:14:08 +0000
commit847378609c922c7be49184aa88d7f1163acbae81 (patch)
treee924f87b06332c46291839dc4541e8ed13a099b6 /src
parent0921cb792db35089ddad5c5752726b922deae265 (diff)
mb/google/dedede: Add a board specific reset
When CSE Lite jumps from RO to RW, global reset is initiated. When AP is reset as part of global reset, TPM initialization fails. This is because AP reset is not detected by TPM hosting an older firmware version. Request Embedded Controller (EC) to perform AP reset so that TPM can detect that event. BUG=b:162290856, b:162386991 TEST=Ensure that the device boots to OS with the board-specific reset sequence when CSE Lite jumps from RO to RW with an older and newer Cr50 firmware. Cq-Depend: chromium:2337430 Change-Id: Ib1f7271130e0b4b68c7f0917ecc4eadba1486206 Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/44189 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Nick Vaccaro <nvaccaro@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/dedede/mainboard.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mainboard/google/dedede/mainboard.c b/src/mainboard/google/dedede/mainboard.c
index cb84e1f400..4695a9f5ae 100644
--- a/src/mainboard/google/dedede/mainboard.c
+++ b/src/mainboard/google/dedede/mainboard.c
@@ -5,8 +5,18 @@
#include <baseboard/variants.h>
#include <device/device.h>
#include <ec/ec.h>
+#include <ec/google/chromeec/ec.h>
+#include <halt.h>
+#include <intelblocks/cse.h>
#include <vendorcode/google/chromeos/chromeos.h>
+void cse_board_reset(void)
+{
+ /* TODO: Check tpm firmware version before initiating AP reset. */
+ if (!google_chromeec_ap_reset())
+ halt();
+}
+
__weak void variant_isst_override(void)
{
/*