summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2019-01-23 15:01:21 -0800
committerPatrick Georgi <pgeorgi@google.com>2019-01-25 11:22:35 +0000
commitf131fc7f37329a4caa18a18c4ea999254fe21eee (patch)
treef4bbfe9dd78b1ba68f38c8276a79cc79b6213951
parent26bc3282f6ed8f4cc54b06df180fa47d3e646cab (diff)
downloadcoreboot-f131fc7f37329a4caa18a18c4ea999254fe21eee.tar.xz
vendorcode/google/chromeos: Add mainboard hook before cr50 update
In order to allow the mainboard to configure the system before a cr50 initiated update reset add a weak function that the mainboard can override if necessary. This will allow a board that would otherwise be configured to stay off after an EC reset to instead power up after the reset and not end up in a shut down state after a cr50 update. BUG=b:121380403 TEST=update cr50 firmware on sarien and reboot Change-Id: I11f9e8c9bfe810f69b4eaa2c633252c25004cbd0 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/c/31057 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/vendorcode/google/chromeos/chromeos.h3
-rw-r--r--src/vendorcode/google/chromeos/cr50_enable_update.c6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h
index df61596684..f7e2ae9b8e 100644
--- a/src/vendorcode/google/chromeos/chromeos.h
+++ b/src/vendorcode/google/chromeos/chromeos.h
@@ -33,6 +33,9 @@ static inline void mark_watchdog_tombstone(void) { return; }
static inline void reboot_from_watchdog(void) { return; }
#endif /* CONFIG_CHROMEOS */
+/* Defined as weak function in cr50_enable_update.c */
+void mainboard_cr50_update_reset(void);
+
struct romstage_handoff;
#include "gnvs.h"
diff --git a/src/vendorcode/google/chromeos/cr50_enable_update.c b/src/vendorcode/google/chromeos/cr50_enable_update.c
index 06416bda76..da9a16d75f 100644
--- a/src/vendorcode/google/chromeos/cr50_enable_update.c
+++ b/src/vendorcode/google/chromeos/cr50_enable_update.c
@@ -21,6 +21,9 @@
#include <security/tpm/tss.h>
#include <vb2_api.h>
#include <security/vboot/vboot_common.h>
+#include <vendorcode/google/chromeos/chromeos.h>
+
+void __weak mainboard_cr50_update_reset(void) {}
static void enable_update(void *unused)
{
@@ -52,6 +55,9 @@ static void enable_update(void *unused)
if (!num_restored_headers)
return;
+ /* Give mainboard a chance to take action */
+ mainboard_cr50_update_reset();
+
elog_add_event(ELOG_TYPE_CR50_UPDATE);
/* clear current post code avoid chatty eventlog on subsequent boot*/