summaryrefslogtreecommitdiff
path: root/firmware/lib/include/ec_sync.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/include/ec_sync.h')
-rw-r--r--firmware/lib/include/ec_sync.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/firmware/lib/include/ec_sync.h b/firmware/lib/include/ec_sync.h
new file mode 100644
index 00000000..dd133920
--- /dev/null
+++ b/firmware/lib/include/ec_sync.h
@@ -0,0 +1,76 @@
+/* Copyright 2016 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * EC software sync for verified boot
+ */
+
+#ifndef VBOOT_REFERENCE_EC_SYNC_H_
+#define VBOOT_REFERENCE_EC_SYNC_H_
+
+#include "vboot_api.h"
+
+struct vb2_context;
+struct VbCommonParams;
+
+/**
+ * EC sync, phase 1
+ *
+ * This checks whether the EC is running the correct image to do EC sync, and
+ * whether any updates are necessary.
+ *
+ * @param ctx Vboot2 context
+ * @param cparams Vboot common params
+ * @return VBERROR_SUCCESS, VBERROR_EC_REBOOT_TO_RO_REQUIRED if the EC must
+ * reboot back to its RO code to continue EC sync, or other non-zero error
+ * code.
+ */
+VbError_t ec_sync_phase1(struct vb2_context *ctx,
+ struct VbCommonParams *cparams);
+
+/**
+ * Returns non-zero if the EC will perform a slow update during phase 2.
+ *
+ * This is only valid after calling ec_sync_phase1(), before calling
+ * ec_sync_phase2().
+ *
+ * @param ctx Vboot2 context
+ * @param cparams Vboot common params
+ * @return non-zero if a slow update will be done; zero if no update or a
+ * fast update.
+ */
+int ec_will_update_slowly(struct vb2_context *ctx,
+ struct VbCommonParams *cparams);
+
+/**
+ * EC sync, phase 2
+ *
+ * This updates the EC if necessary, makes sure it has protected its image(s),
+ * and makes sure it has jumped to the correct image.
+ *
+ * If ec_will_update_slowly(), it is suggested that the caller display a
+ * warning screen before calling phase 2.
+ *
+ * @param ctx Vboot2 context
+ * @param cparams Vboot common params
+ * @return VBERROR_SUCCESS, VBERROR_EC_REBOOT_TO_RO_REQUIRED if the EC must
+ * reboot back to its RO code to continue EC sync, or other non-zero error
+ * code.
+ */
+VbError_t ec_sync_phase2(struct vb2_context *ctx,
+ struct VbCommonParams *cparams);
+
+/**
+ * Sync all EC devices to expected versions.
+ *
+ * This is a high-level function which calls the functions above.
+ *
+ * @param ctx Vboot context
+ * @param devidx EC device index to sync
+ * @param cparams Common vboot params
+ * @return VBERROR_SUCCESS, or non-zero if error.
+ */
+VbError_t ec_sync_all(struct vb2_context *ctx, struct
+ VbCommonParams *cparams);
+
+#endif /* VBOOT_REFERENCE_EC_SYNC_H_ */