Index: firmware/include/rollback_index.h |
diff --git a/firmware/include/rollback_index.h b/firmware/include/rollback_index.h |
index c359b4bbb4395b69f4ece83f8567216f12b00203..b1366dd4fd6370add5e6cec09a7a4f7a7e0dfe8c 100644 |
--- a/firmware/include/rollback_index.h |
+++ b/firmware/include/rollback_index.h |
@@ -43,6 +43,58 @@ extern uint16_t g_kernel_version; |
/* All functions return TPM_SUCCESS (zero) if successful, non-zero if error */ |
+ |
+/* |
+ |
+Call from LoadFirmware() |
+ Normal or developer mode (not recovery) |
+ Wants firmware versions |
+ Must send in developer flag |
+ |
+ RollbackFirmwareSetup(IN devmode, OUT firmware versions) |
+ (maybe) RollbackFirmwareWrite() |
+ RollbackFirmwareLock() |
+ |
+Call from LoadKernel() |
+ |
+ RollbackKernelRecovery(IN devmode) |
+ (implies LockFirmwareVersions() inside the setup) |
+ |
+ RollbackKernelRead(OUT kernel versions) |
+ (maybe) RollbackKernelWrite() |
+ RollbackKernelLock() |
+ |
+ Any mode |
+ If recovery mode, this is the first time we've been called |
+ Must send in developer flag |
+ If not recovery mode, wants kernel versions |
+ Must send in developer and recovery flags |
+*/ |
+ |
+/* These functions are callable from LoadFirmware(). They cannot use |
+ * global variables. */ |
+/* Setup must be called. */ |
+uint32_t RollbackFirmwareSetup(int developer_mode, |
+ uint16_t* key_version, uint16_t* version); |
+/* Write may be called if the versions change */ |
+uint32_t RollbackFirmwareWrite(uint16_t key_version, uint16_t version); |
+/* Lock must be called */ |
+uint32_t RollbackFirmwareLock(void); |
+ |
+/* These functions are callable from LoadKernel(). They may use global |
+ * variables. */ |
+/* Recovery may be called. If it is, this is the first time a |
+ * rollback function has been called this boot, so it needs to know if |
+ * we're in developer mode. */ |
+uint32_t RollbackKernelRecovery(int developer_mode); |
+/* Read and write may be called if not in developer mode. If called in |
+ * recovery mode, these are ignored and/or return 0 versions. */ |
+uint32_t RollbackKernelRead(uint16_t* key_version, uint16_t* version); |
+uint32_t RollbackKernelWrite(uint16_t key_version, uint16_t version); |
+/* Lock must be called. Internally, it's ignored in recovery mode. */ |
+uint32_t RollbackKernelLock(void); |
+ |
+ |
/* SetupTPM is called on boot and on starting the RW firmware, passing the |
* appripriate MODE and DEVELOPER_FLAG parameters. MODE can be one of |
* RO_RECOVERY_MODE, RO_NORMAL_MODE, RW_NORMAL_MODE. DEVELOPER_FLAG is 1 when |