summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2016-01-05 14:59:05 -0800
committerchrome-bot <chrome-bot@chromium.org>2016-01-06 05:22:40 -0800
commit46d78db74a0c14a99adc86b3a8b4536ce0c87365 (patch)
tree1d6b7944fa4b1cb8a34283d4374f6a0dd47423ee /firmware
parent0e5f54d79158f216edeb42bfe9c5cd6d35dc6e0d (diff)
downloadvboot-46d78db74a0c14a99adc86b3a8b4536ce0c87365.tar.gz
vboot2: Add try RO software sync flag
This flag will be used by the firmware updater to indicate that RO software sync should be attempted. BUG=chrome-os-partner:48703 BRANCH=None TEST=make runtests Change-Id: I42090ac47da45c724e66334648ab447ad3c21178 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/320621 Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'firmware')
-rw-r--r--firmware/2lib/2nvstorage.c7
-rw-r--r--firmware/2lib/include/2nvstorage.h2
-rw-r--r--firmware/2lib/include/2nvstorage_fields.h3
-rw-r--r--firmware/include/vboot_nvstorage.h2
-rw-r--r--firmware/lib/vboot_nvstorage.c12
5 files changed, 25 insertions, 1 deletions
diff --git a/firmware/2lib/2nvstorage.c b/firmware/2lib/2nvstorage.c
index 851c3872..3e2a8740 100644
--- a/firmware/2lib/2nvstorage.c
+++ b/firmware/2lib/2nvstorage.c
@@ -169,6 +169,9 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param)
case VB2_NV_BOOT_ON_AC_DETECT:
return GETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_BOOT_ON_AC_DETECT);
+
+ case VB2_NV_TRY_RO_SYNC:
+ return GETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_TRY_RO_SYNC);
}
/*
@@ -343,6 +346,10 @@ void vb2_nv_set(struct vb2_context *ctx,
SETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_BOOT_ON_AC_DETECT);
break;
+ case VB2_NV_TRY_RO_SYNC:
+ SETBIT(VB2_NV_OFFS_MISC, VB2_NV_MISC_TRY_RO_SYNC);
+ break;
+
}
/*
diff --git a/firmware/2lib/include/2nvstorage.h b/firmware/2lib/include/2nvstorage.h
index 31dfc8df..5c958c76 100644
--- a/firmware/2lib/include/2nvstorage.h
+++ b/firmware/2lib/include/2nvstorage.h
@@ -94,6 +94,8 @@ enum vb2_nv_param {
VB2_NV_FASTBOOT_UNLOCK_IN_FW,
/* Boot system when AC detected (0=no, 1=yes). */
VB2_NV_BOOT_ON_AC_DETECT,
+ /* Try to update the EC-RO image after updating the EC-RW image(0=no, 1=yes). */
+ VB2_NV_TRY_RO_SYNC,
};
/* Set default boot in developer mode */
diff --git a/firmware/2lib/include/2nvstorage_fields.h b/firmware/2lib/include/2nvstorage_fields.h
index fd625d06..9ec3d884 100644
--- a/firmware/2lib/include/2nvstorage_fields.h
+++ b/firmware/2lib/include/2nvstorage_fields.h
@@ -70,8 +70,9 @@ enum vb2_nv_offset {
#define VB2_NV_TPM_CLEAR_OWNER_DONE 0x02
#define VB2_NV_TPM_REBOOTED 0x04
-/* Fields in VB2_NV_OFFS_MISC (unused = 0xfc) */
+/* Fields in VB2_NV_OFFS_MISC (unused = 0xf8) */
#define VB2_NV_MISC_UNLOCK_FASTBOOT 0x01
#define VB2_NV_MISC_BOOT_ON_AC_DETECT 0x02
+#define VB2_NV_MISC_TRY_RO_SYNC 0x04
#endif /* VBOOT_REFERENCE_VBOOT_2NVSTORAGE_FIELDS_H_ */
diff --git a/firmware/include/vboot_nvstorage.h b/firmware/include/vboot_nvstorage.h
index dc4ab50e..91f62cb4 100644
--- a/firmware/include/vboot_nvstorage.h
+++ b/firmware/include/vboot_nvstorage.h
@@ -118,6 +118,8 @@ typedef enum VbNvParam {
VBNV_FASTBOOT_UNLOCK_IN_FW,
/* Boot system when AC detected (0=no, 1=yes). */
VBNV_BOOT_ON_AC_DETECT,
+ /* Try to update the EC-RO image (0=no, 1=yes). */
+ VBNV_TRY_RO_SYNC,
} VbNvParam;
diff --git a/firmware/lib/vboot_nvstorage.c b/firmware/lib/vboot_nvstorage.c
index 403ce30f..d022c5d3 100644
--- a/firmware/lib/vboot_nvstorage.c
+++ b/firmware/lib/vboot_nvstorage.c
@@ -63,6 +63,7 @@
#define MISC_OFFSET 8
#define MISC_UNLOCK_FASTBOOT 0x01
#define MISC_BOOT_ON_AC_DETECT 0x02
+#define MISC_TRY_RO_SYNC 0x04
#define KERNEL_FIELD_OFFSET 11
#define CRC_OFFSET 15
@@ -226,6 +227,10 @@ int VbNvGet(VbNvContext *context, VbNvParam param, uint32_t *dest)
*dest = (raw[MISC_OFFSET] & MISC_BOOT_ON_AC_DETECT) ? 1 : 0;
return 0;
+ case VBNV_TRY_RO_SYNC:
+ *dest = (raw[MISC_OFFSET] & MISC_TRY_RO_SYNC) ? 1 : 0;
+ return 0;
+
default:
return 1;
}
@@ -444,6 +449,13 @@ int VbNvSet(VbNvContext *context, VbNvParam param, uint32_t value)
raw[MISC_OFFSET] &= ~MISC_BOOT_ON_AC_DETECT;
break;
+ case VBNV_TRY_RO_SYNC:
+ if (value)
+ raw[MISC_OFFSET] |= MISC_TRY_RO_SYNC;
+ else
+ raw[MISC_OFFSET] &= ~MISC_TRY_RO_SYNC;
+ break;
+
default:
return 1;
}