parlib: Fix fake parlib detection for dlopen() (XCC)
[akaros.git] / kern / include / crypto / 2nvstorage_fields.h
1 /* Copyright 2015 The Chromium OS Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  *
5  * Non-volatile storage bitfields
6  */
7
8 #pragma once
9
10 /*
11  * Constants for NV storage.  We use this rather than structs and bitfields so
12  * the data format is consistent across platforms and compilers.  Total NV
13  * storage size is VB2_NVDATA_SIZE = 16 bytes.
14  *
15  * These constants must match the equivalent constants in
16  * lib/vboot_nvstorage.c.  (We currently don't share a common header file
17  * because we're tring to keep the two libs independent, and we hope to
18  * deprecate that one.)
19  */
20
21 enum vb2_nv_offset {
22         VB2_NV_OFFS_HEADER = 0,
23         VB2_NV_OFFS_BOOT = 1,
24         VB2_NV_OFFS_RECOVERY = 2,
25         VB2_NV_OFFS_LOCALIZATION = 3,
26         VB2_NV_OFFS_DEV = 4,
27         VB2_NV_OFFS_TPM = 5,
28         VB2_NV_OFFS_RECOVERY_SUBCODE = 6,
29         VB2_NV_OFFS_BOOT2 = 7,
30         VB2_NV_OFFS_MISC = 8,
31         /* Offsets 9-10 are currently unused */
32         VB2_NV_OFFS_KERNEL = 11, /* 11-14; field is 32 bits */
33         /* CRC must be last field */
34         VB2_NV_OFFS_CRC = 15
35  };
36
37 /* Fields in VB2_NV_OFFS_HEADER (unused = 0x07) */
38 #define VB2_NV_HEADER_WIPEOUT                  0x08
39 #define VB2_NV_HEADER_KERNEL_SETTINGS_RESET    0x10
40 #define VB2_NV_HEADER_FW_SETTINGS_RESET        0x20
41 #define VB2_NV_HEADER_SIGNATURE                0x40
42 #define VB2_NV_HEADER_MASK                     0xc0
43
44 /* Fields in VB2_NV_OFFS_BOOT */
45 #define VB2_NV_BOOT_TRY_COUNT_MASK             0x0f
46 #define VB2_NV_BOOT_BACKUP_NVRAM               0x10
47 #define VB2_NV_BOOT_OPROM_NEEDED               0x20
48 #define VB2_NV_BOOT_DISABLE_DEV                0x40
49 #define VB2_NV_BOOT_DEBUG_RESET                0x80
50
51 /* Fields in VB2_NV_OFFS_BOOT2 (unused = 0x80) */
52 #define VB2_NV_BOOT2_RESULT_MASK               0x03
53 #define VB2_NV_BOOT2_TRIED                     0x04
54 #define VB2_NV_BOOT2_TRY_NEXT                  0x08
55 #define VB2_NV_BOOT2_PREV_RESULT_MASK          0x30
56 #define VB2_NV_BOOT2_PREV_RESULT_SHIFT 4  /* Number of bits to shift result */
57 #define VB2_NV_BOOT2_PREV_TRIED                0x40
58
59 /* Fields in VB2_NV_OFFS_DEV (unused = 0xc0) */
60 #define VB2_NV_DEV_FLAG_USB                    0x01
61 #define VB2_NV_DEV_FLAG_SIGNED_ONLY            0x02
62 #define VB2_NV_DEV_FLAG_LEGACY                 0x04
63 #define VB2_NV_DEV_FLAG_FASTBOOT_FULL_CAP      0x08
64 #define VB2_NV_DEV_FLAG_DEFAULT_BOOT           0x30
65 #define VB2_NV_DEV_DEFAULT_BOOT_SHIFT 4  /* Number of bits to shift */
66
67 /* Fields in VB2_NV_OFFS_TPM (unused = 0xf8) */
68 #define VB2_NV_TPM_CLEAR_OWNER_REQUEST         0x01
69 #define VB2_NV_TPM_CLEAR_OWNER_DONE            0x02
70 #define VB2_NV_TPM_REBOOTED                    0x04
71
72 /* Fields in VB2_NV_OFFS_MISC (unused = 0xf0) */
73 #define VB2_NV_MISC_UNLOCK_FASTBOOT            0x01
74 #define VB2_NV_MISC_BOOT_ON_AC_DETECT          0x02
75 #define VB2_NV_MISC_TRY_RO_SYNC                0x04
76 #define VB2_NV_MISC_BATTERY_CUTOFF             0x08
77