Software APIs
otp_fields.h
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef OPENTITAN_SW_DEVICE_SILICON_CREATOR_MANUF_LIB_OTP_FIELDS_H_
6 #define OPENTITAN_SW_DEVICE_SILICON_CREATOR_MANUF_LIB_OTP_FIELDS_H_
7 
9 
10 #include "otp_ctrl_regs.h" // Generated.
11 
12 extern const bitfield_field32_t kSramFetch;
13 extern const bitfield_field32_t kCsrngAppRead;
14 extern const bitfield_field32_t kDisRvDmLateDebug;
15 extern const bitfield_field32_t kEntropySrcFwRd;
16 extern const bitfield_field32_t kEntropySrcFwOvr;
17 
18 enum {
19  /**
20  * HW_CFG0 partition OTP fields.
21  */
22  // DEVICE_ID
23  kHwCfgDeviceIdOffset =
24  OTP_CTRL_PARAM_DEVICE_ID_OFFSET - OTP_CTRL_PARAM_HW_CFG0_OFFSET,
25  kHwCfgDeviceIdSizeInBytes = OTP_CTRL_PARAM_DEVICE_ID_SIZE,
26  kHwCfgDeviceIdSizeIn32BitWords =
27  OTP_CTRL_PARAM_DEVICE_ID_SIZE / sizeof(uint32_t),
28 
29  // MANUF_STATE
30  kHwCfgManufStateOffset =
31  OTP_CTRL_PARAM_MANUF_STATE_OFFSET - OTP_CTRL_PARAM_HW_CFG0_OFFSET,
32  kHwCfgManufStateSizeIn32BitWords =
33  OTP_CTRL_PARAM_MANUF_STATE_SIZE / sizeof(uint32_t),
34 
35  // EN_SRAM_IFETCH
36  kHwCfgEnSramIfetchOffset =
37  OTP_CTRL_PARAM_EN_SRAM_IFETCH_OFFSET - OTP_CTRL_PARAM_HW_CFG1_OFFSET,
38 
39  /**
40  * SECRET0 partition OTP fields.
41  */
42  kSecret0TestUnlockTokenOffset =
43  OTP_CTRL_PARAM_TEST_UNLOCK_TOKEN_OFFSET - OTP_CTRL_PARAM_SECRET0_OFFSET,
44  kSecret0TestUnlockTokenSizeInBytes = OTP_CTRL_PARAM_TEST_UNLOCK_TOKEN_SIZE,
45  kSecret0TestUnlockTokenSizeIn32BitWords =
46  kSecret0TestUnlockTokenSizeInBytes / sizeof(uint32_t),
47  kSecret0TestUnlockTokenSizeIn64BitWords =
48  kSecret0TestUnlockTokenSizeInBytes / sizeof(uint64_t),
49 
50  kSecret0TestExitTokenOffset =
51  OTP_CTRL_PARAM_TEST_EXIT_TOKEN_OFFSET - OTP_CTRL_PARAM_SECRET0_OFFSET,
52  kSecret0TestExitTokenSizeInBytes = OTP_CTRL_PARAM_TEST_EXIT_TOKEN_SIZE,
53  kSecret0TestExitTokenSizeIn32BitWords =
54  kSecret0TestExitTokenSizeInBytes / sizeof(uint32_t),
55  kSecret0TestExitTokenSizeIn64BitWords =
56  kSecret0TestExitTokenSizeInBytes / sizeof(uint64_t),
57 
58  /**
59  * SECRET1 partition OTP fields.
60  */
61  kSecret1FlashAddrKeySeedOffset =
62  OTP_CTRL_PARAM_FLASH_ADDR_KEY_SEED_OFFSET - OTP_CTRL_PARAM_SECRET1_OFFSET,
63  kSecret1FlashAddrKeySeed64BitWords =
64  OTP_CTRL_PARAM_FLASH_ADDR_KEY_SEED_SIZE / sizeof(uint64_t),
65 
66  kSecret1FlashDataKeySeedOffset =
67  OTP_CTRL_PARAM_FLASH_DATA_KEY_SEED_OFFSET - OTP_CTRL_PARAM_SECRET1_OFFSET,
68  kSecret1FlashDataKeySeed64BitWords =
69  OTP_CTRL_PARAM_FLASH_DATA_KEY_SEED_SIZE / sizeof(uint64_t),
70 
71  kSecret1SramDataKeySeedOffset =
72  OTP_CTRL_PARAM_SRAM_DATA_KEY_SEED_OFFSET - OTP_CTRL_PARAM_SECRET1_OFFSET,
73  kSecret1SramDataKeySeed64Bitwords =
74  OTP_CTRL_PARAM_SRAM_DATA_KEY_SEED_SIZE / sizeof(uint64_t),
75 
76  /**
77  * SECRET2 partition OTP fields.
78  */
79  // RMA_TOKEN
80  kRmaUnlockTokenOffset =
81  OTP_CTRL_PARAM_RMA_TOKEN_OFFSET - OTP_CTRL_PARAM_SECRET2_OFFSET,
82  kRmaUnlockTokenSizeInBytes = OTP_CTRL_PARAM_RMA_TOKEN_SIZE,
83  kRmaUnlockTokenSizeIn32BitWords =
84  kRmaUnlockTokenSizeInBytes / sizeof(uint32_t),
85  kRmaUnlockTokenSizeIn64BitWords =
86  kRmaUnlockTokenSizeInBytes / sizeof(uint64_t),
87 
88  // CREATOR_ROOT_KEY
89  kRootKeyShareSizeInBytes = OTP_CTRL_PARAM_CREATOR_ROOT_KEY_SHARE0_SIZE,
90  kRootKeyShareSizeIn32BitWords = kRootKeyShareSizeInBytes / sizeof(uint32_t),
91  kRootKeyShareSizeIn64BitWords = kRootKeyShareSizeInBytes / sizeof(uint64_t),
92  kRootKeyOffsetShare0 = OTP_CTRL_PARAM_CREATOR_ROOT_KEY_SHARE0_OFFSET -
93  OTP_CTRL_PARAM_SECRET2_OFFSET,
94  kRootKeyOffsetShare1 = OTP_CTRL_PARAM_CREATOR_ROOT_KEY_SHARE1_OFFSET -
95  OTP_CTRL_PARAM_SECRET2_OFFSET,
96 };
97 
98 #endif // OPENTITAN_SW_DEVICE_SILICON_CREATOR_MANUF_LIB_OTP_FIELDS_H_