diff options
Diffstat (limited to 'firmware/2lib/2nvstorage.c')
-rw-r--r-- | firmware/2lib/2nvstorage.c | 15 |
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; |