Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Unified Diff: firmware/lib/vboot_nvstorage.c

Issue 6597011: Add NV storage fields for firmware flags (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vboot_reference.git@master
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: firmware/lib/vboot_nvstorage.c
diff --git a/firmware/lib/vboot_nvstorage.c b/firmware/lib/vboot_nvstorage.c
index 6e8c1c799a61e0c1ef6741ad9d3ae2250e8bcb71..ec6e55dee8c2094033fa5ff91c643652909d618e 100644
--- a/firmware/lib/vboot_nvstorage.c
+++ b/firmware/lib/vboot_nvstorage.c
@@ -14,17 +14,22 @@
* bitfields so the data format is consistent across platforms and
* compilers. */
#define HEADER_OFFSET 0
-#define HEADER_MASK 0xC0
-#define HEADER_SIGNATURE 0x40
-#define HEADER_FIRMWARE_SETTINGS_RESET 0x20
-#define HEADER_KERNEL_SETTINGS_RESET 0x10
+#define HEADER_MASK 0xC0
+#define HEADER_SIGNATURE 0x40
+#define HEADER_FIRMWARE_SETTINGS_RESET 0x20
+#define HEADER_KERNEL_SETTINGS_RESET 0x10
#define BOOT_OFFSET 1
-#define BOOT_DEBUG_RESET_MODE 0x80
-#define BOOT_TRY_B_COUNT 0x0F
+#define BOOT_DEBUG_RESET_MODE 0x80
+#define BOOT_TRY_B_COUNT 0x0F
#define RECOVERY_OFFSET 2
#define LOCALIZATION_OFFSET 3
+
+#define FIRMWARE_FLAGS_OFFSET 5
+#define FIRMWARE_FW_USED_TRY_B 0x80
+#define FIRMWARE_FW_VERIFIED_KERNEL_KEY 0x40
+
#define KERNEL_FIELD_OFFSET 11
#define CRC_OFFSET 15
@@ -120,6 +125,15 @@ int VbNvGet(VbNvContext* context, VbNvParam param, uint32_t* dest) {
| (raw[KERNEL_FIELD_OFFSET + 3] << 24));
return 0;
+ case VBNV_FW_USED_TRY_B:
+ *dest = (raw[FIRMWARE_FLAGS_OFFSET] & FIRMWARE_FW_USED_TRY_B ? 1 : 0);
+ return 0;
+
+ case VBNV_FW_VERIFIED_KERNEL_KEY:
+ *dest = (raw[FIRMWARE_FLAGS_OFFSET] & FIRMWARE_FW_VERIFIED_KERNEL_KEY ?
+ 1 : 0);
+ return 0;
+
default:
return 1;
}
@@ -187,6 +201,20 @@ int VbNvSet(VbNvContext* context, VbNvParam param, uint32_t value) {
raw[KERNEL_FIELD_OFFSET + 3] = (uint8_t)(value >> 24);
break;
+ case VBNV_FW_USED_TRY_B:
+ if (value)
+ raw[FIRMWARE_FLAGS_OFFSET] |= FIRMWARE_FW_USED_TRY_B;
+ else
+ raw[FIRMWARE_FLAGS_OFFSET] &= ~FIRMWARE_FW_USED_TRY_B;
+ break;
+
+ case VBNV_FW_VERIFIED_KERNEL_KEY:
+ if (value)
+ raw[FIRMWARE_FLAGS_OFFSET] |= FIRMWARE_FW_VERIFIED_KERNEL_KEY;
+ else
+ raw[FIRMWARE_FLAGS_OFFSET] &= ~FIRMWARE_FW_VERIFIED_KERNEL_KEY;
+ break;
+
default:
return 1;
}
« no previous file with comments | « firmware/include/vboot_nvstorage.h ('k') | host/lib/crossystem.c » ('j') | host/lib/crossystem.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698