summaryrefslogtreecommitdiff
path: root/firmware/2lib/2nvstorage.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/2lib/2nvstorage.c')
-rw-r--r--firmware/2lib/2nvstorage.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/firmware/2lib/2nvstorage.c b/firmware/2lib/2nvstorage.c
index 55f1d0dd..851c3872 100644
--- a/firmware/2lib/2nvstorage.c
+++ b/firmware/2lib/2nvstorage.c
@@ -139,6 +139,10 @@ uint32_t vb2_nv_get(struct vb2_context *ctx, enum vb2_nv_param param)
return GETBIT(VB2_NV_OFFS_DEV,
VB2_NV_DEV_FLAG_FASTBOOT_FULL_CAP);
+ case VB2_NV_DEV_DEFAULT_BOOT:
+ return (p[VB2_NV_OFFS_DEV] & VB2_NV_DEV_FLAG_DEFAULT_BOOT)
+ >> VB2_NV_DEV_DEFAULT_BOOT_SHIFT;
+
case VB2_NV_DISABLE_DEV_REQUEST:
return GETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_DISABLE_DEV);
@@ -292,6 +296,17 @@ void vb2_nv_set(struct vb2_context *ctx,
SETBIT(VB2_NV_OFFS_DEV, VB2_NV_DEV_FLAG_FASTBOOT_FULL_CAP);
break;
+ case VB2_NV_DEV_DEFAULT_BOOT:
+ /* Map out of range values to disk */
+ if (value > (VB2_NV_DEV_FLAG_DEFAULT_BOOT >>
+ VB2_NV_DEV_DEFAULT_BOOT_SHIFT))
+ value = VB2_DEV_DEFAULT_BOOT_DISK;
+
+ p[VB2_NV_OFFS_DEV] &= ~VB2_NV_DEV_FLAG_DEFAULT_BOOT;
+ p[VB2_NV_OFFS_DEV] |=
+ (uint8_t)(value << VB2_NV_DEV_DEFAULT_BOOT_SHIFT);
+ break;
+
case VB2_NV_DISABLE_DEV_REQUEST:
SETBIT(VB2_NV_OFFS_BOOT, VB2_NV_BOOT_DISABLE_DEV);
break;