summaryrefslogtreecommitdiff
path: root/board/cr50/board.c
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2022-07-28 09:42:48 -0500
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-08-25 02:45:15 +0000
commit07ba1c6481737c5a6f03ab5ad08c3334f3c9e1fd (patch)
tree6ecea43ba8c7c0a8ffcb5688101041dcbd9b9032 /board/cr50/board.c
parentf096d17cf44eacb27f9ad6d06684465d87da9379 (diff)
downloadchrome-ec-07ba1c6481737c5a6f03ab5ad08c3334f3c9e1fd.tar.gz
apro: clear AP_RO_FAIL on combo0
There are a couple of known issues saving the AP RO verification hash in cr50, so it's possible AP RO verification will fail even if the AP RO is ok. Add support for releasing the EC from reset with PWRB + refresh after AP RO verification fails. This just makes it easier to recover the device. If the device is released from reset, the status is set to AP_RO_FAIL_CLEARED and a APROF_FAIL_CLEARED flog event is logged. This only releases EC reset if the device failed AP RO verification. Any other verification status won't get cleared by the key combo. BUG=b:240530668 TEST=trigger verification on a device with a bad hash. Verify the EC is held in reset until PWRB + refresh is pressed. make -C extra/usb_updater gsctool Change-Id: I03a02501e7c91a41374816d82f48a5289f289c39 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3805820 Reviewed-by: Andrey Pronin <apronin@chromium.org>
Diffstat (limited to 'board/cr50/board.c')
-rw-r--r--board/cr50/board.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c
index bc19800758..2ddc4ae2dd 100644
--- a/board/cr50/board.c
+++ b/board/cr50/board.c
@@ -2,6 +2,7 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
+#include "ap_ro_integrity_check.h"
#include "board_id.h"
#include "ccd_config.h"
#include "clock.h"
@@ -1240,6 +1241,10 @@ static void key_combo0_irq(void)
hook_call_deferred(&board_reboot_ec_data, 0);
}
+#ifdef CONFIG_AP_RO_VERIFICATION
+ ap_ro_clear_ec_rst_override();
+#endif
+
CPRINTS("Recovery Requested");
}
DECLARE_IRQ(GC_IRQNUM_RBOX0_INTR_BUTTON_COMBO0_RDY_INT, key_combo0_irq, 0);