Software APIs
keymgr_dpe_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for keymgr_dpe
4 */
5
6// Copyright information found in source file:
7// Copyright lowRISC contributors (OpenTitan project).
8
9// Licensing information found in source file:
10// Licensed under the Apache License, Version 2.0, see LICENSE for details.
11// SPDX-License-Identifier: Apache-2.0
12
13#ifndef _KEYMGR_DPE_REG_DEFS_
14#define _KEYMGR_DPE_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of Registers for SW inputs (Salt)
20#define KEYMGR_DPE_PARAM_NUM_SALT_REG 8
21
22// Number of Registers for SW inputs (SW binding)
23#define KEYMGR_DPE_PARAM_NUM_SW_BINDING_REG 8
24
25// Number of Registers for SW outputs
26#define KEYMGR_DPE_PARAM_NUM_OUT_REG 8
27
28// Number of Registers for key version
29#define KEYMGR_DPE_PARAM_NUM_KEY_VERSION 1
30
31// Number of maximum supported HW slots. If this value is changed then the
32#define KEYMGR_DPE_PARAM_NUM_MAX_HW_SLOT 8
33
34// Number of alerts
35#define KEYMGR_DPE_PARAM_NUM_ALERTS 2
36
37// Register width
38#define KEYMGR_DPE_PARAM_REG_WIDTH 32
39
40// Common Interrupt Offsets
41#define KEYMGR_DPE_INTR_COMMON_OP_DONE_BIT 0
42
43// Interrupt State Register
44#define KEYMGR_DPE_INTR_STATE_REG_OFFSET 0x0
45#define KEYMGR_DPE_INTR_STATE_REG_RESVAL 0x0u
46#define KEYMGR_DPE_INTR_STATE_OP_DONE_BIT 0
47
48// Interrupt Enable Register
49#define KEYMGR_DPE_INTR_ENABLE_REG_OFFSET 0x4
50#define KEYMGR_DPE_INTR_ENABLE_REG_RESVAL 0x0u
51#define KEYMGR_DPE_INTR_ENABLE_OP_DONE_BIT 0
52
53// Interrupt Test Register
54#define KEYMGR_DPE_INTR_TEST_REG_OFFSET 0x8
55#define KEYMGR_DPE_INTR_TEST_REG_RESVAL 0x0u
56#define KEYMGR_DPE_INTR_TEST_OP_DONE_BIT 0
57
58// Alert Test Register
59#define KEYMGR_DPE_ALERT_TEST_REG_OFFSET 0xc
60#define KEYMGR_DPE_ALERT_TEST_REG_RESVAL 0x80000000u
61#define KEYMGR_DPE_ALERT_TEST_RECOV_OPERATION_ERR_BIT 0
62#define KEYMGR_DPE_ALERT_TEST_FATAL_FAULT_ERR_BIT 1
63#define KEYMGR_DPE_ALERT_TEST_REGWEN_BIT 31
64
65// Key manager configuration enable
66#define KEYMGR_DPE_CFG_REGWEN_REG_OFFSET 0x10
67#define KEYMGR_DPE_CFG_REGWEN_REG_RESVAL 0x1u
68#define KEYMGR_DPE_CFG_REGWEN_EN_BIT 0
69
70// Key manager operation start
71#define KEYMGR_DPE_START_REG_OFFSET 0x14
72#define KEYMGR_DPE_START_REG_RESVAL 0x0u
73#define KEYMGR_DPE_START_EN_BIT 0
74#define KEYMGR_DPE_START_EN_VALUE_VALID_STATE 0x1
75
76// Key manager operation controls
77#define KEYMGR_DPE_CONTROL_SHADOWED_REG_OFFSET 0x18
78#define KEYMGR_DPE_CONTROL_SHADOWED_REG_RESVAL 0x10u
79#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_MASK 0x7u
80#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_OFFSET 4
81#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_FIELD \
82 ((bitfield_field32_t) { .mask = KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_MASK, .index = KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_OFFSET })
83#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_ADVANCE 0x0
84#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_ERASE_SLOT 0x1
85#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_SW_OUTPUT 0x2
86#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_GENERATE_HW_OUTPUT 0x3
87#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_DISABLE 0x4
88#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_LOAD_ROOT_KEY 0x5
89#define KEYMGR_DPE_CONTROL_SHADOWED_OPERATION_VALUE_LOAD_SECONDARY_ROOT_KEY 0x6
90#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_MASK 0x7u
91#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_OFFSET 11
92#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_FIELD \
93 ((bitfield_field32_t) { .mask = KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_MASK, .index = KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_OFFSET })
94#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_VALUE_NONE 0x0
95#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_VALUE_AES 0x1
96#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_VALUE_KMAC 0x2
97#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_VALUE_OTBN 0x3
98#define KEYMGR_DPE_CONTROL_SHADOWED_DEST_SEL_VALUE_HMAC 0x4
99#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_SRC_SEL_MASK 0x7u
100#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_SRC_SEL_OFFSET 14
101#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_SRC_SEL_FIELD \
102 ((bitfield_field32_t) { .mask = KEYMGR_DPE_CONTROL_SHADOWED_SLOT_SRC_SEL_MASK, .index = KEYMGR_DPE_CONTROL_SHADOWED_SLOT_SRC_SEL_OFFSET })
103#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_DST_SEL_MASK 0x7u
104#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_DST_SEL_OFFSET 18
105#define KEYMGR_DPE_CONTROL_SHADOWED_SLOT_DST_SEL_FIELD \
106 ((bitfield_field32_t) { .mask = KEYMGR_DPE_CONTROL_SHADOWED_SLOT_DST_SEL_MASK, .index = KEYMGR_DPE_CONTROL_SHADOWED_SLOT_DST_SEL_OFFSET })
107#define KEYMGR_DPE_CONTROL_SHADOWED_SW_BINDING_ONLY_BIT 22
108
109// sideload key slots clear
110#define KEYMGR_DPE_SIDELOAD_CLEAR_REG_OFFSET 0x1c
111#define KEYMGR_DPE_SIDELOAD_CLEAR_REG_RESVAL 0x0u
112#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_MASK 0x7u
113#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_OFFSET 0
114#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_FIELD \
115 ((bitfield_field32_t) { .mask = KEYMGR_DPE_SIDELOAD_CLEAR_VAL_MASK, .index = KEYMGR_DPE_SIDELOAD_CLEAR_VAL_OFFSET })
116#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_VALUE_NONE 0x0
117#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_VALUE_AES 0x1
118#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_VALUE_KMAC 0x2
119#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_VALUE_OTBN 0x3
120#define KEYMGR_DPE_SIDELOAD_CLEAR_VAL_VALUE_HMAC 0x4
121
122// regwen for reseed interval
123#define KEYMGR_DPE_RESEED_INTERVAL_REGWEN_REG_OFFSET 0x20
124#define KEYMGR_DPE_RESEED_INTERVAL_REGWEN_REG_RESVAL 0x1u
125#define KEYMGR_DPE_RESEED_INTERVAL_REGWEN_EN_BIT 0
126
127// Reseed interval for key manager entropy reseed
128#define KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_REG_OFFSET 0x24
129#define KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_REG_RESVAL 0x100u
130#define KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_VAL_MASK 0xffffu
131#define KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_VAL_OFFSET 0
132#define KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_VAL_FIELD \
133 ((bitfield_field32_t) { .mask = KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_VAL_MASK, .index = KEYMGR_DPE_RESEED_INTERVAL_SHADOWED_VAL_OFFSET })
134
135// Register write enable for KDF_ENGINE
136#define KEYMGR_DPE_KDF_ENGINE_REGWEN_REG_OFFSET 0x28
137#define KEYMGR_DPE_KDF_ENGINE_REGWEN_REG_RESVAL 0x1u
138#define KEYMGR_DPE_KDF_ENGINE_REGWEN_EN_BIT 0
139
140// Selects the engine used to perform key derivation if KdfEngineSel equals
141// `KdfEngineBoth`, otherwise ignored.
142#define KEYMGR_DPE_KDF_ENGINE_SHADOWED_REG_OFFSET 0x2c
143#define KEYMGR_DPE_KDF_ENGINE_SHADOWED_REG_RESVAL 0x9u
144#define KEYMGR_DPE_KDF_ENGINE_SHADOWED_SEL_MASK 0xfu
145#define KEYMGR_DPE_KDF_ENGINE_SHADOWED_SEL_OFFSET 0
146#define KEYMGR_DPE_KDF_ENGINE_SHADOWED_SEL_FIELD \
147 ((bitfield_field32_t) { .mask = KEYMGR_DPE_KDF_ENGINE_SHADOWED_SEL_MASK, .index = KEYMGR_DPE_KDF_ENGINE_SHADOWED_SEL_OFFSET })
148
149// Register write enable for SLOT_POLICY
150#define KEYMGR_DPE_SLOT_POLICY_REGWEN_REG_OFFSET 0x30
151#define KEYMGR_DPE_SLOT_POLICY_REGWEN_REG_RESVAL 0x1u
152#define KEYMGR_DPE_SLOT_POLICY_REGWEN_EN_BIT 0
153
154// Policy bits for the child DPE context
155#define KEYMGR_DPE_SLOT_POLICY_REG_OFFSET 0x34
156#define KEYMGR_DPE_SLOT_POLICY_REG_RESVAL 0x0u
157#define KEYMGR_DPE_SLOT_POLICY_ALLOW_CHILD_BIT 0
158#define KEYMGR_DPE_SLOT_POLICY_EXPORTABLE_BIT 1
159#define KEYMGR_DPE_SLOT_POLICY_RETAIN_PARENT_BIT 2
160#define KEYMGR_DPE_SLOT_POLICY_ALLOW_KEYGEN_BIT 3
161
162// Register write enable for SOFTWARE_BINDING
163#define KEYMGR_DPE_SW_BINDING_REGWEN_REG_OFFSET 0x38
164#define KEYMGR_DPE_SW_BINDING_REGWEN_REG_RESVAL 0x1u
165#define KEYMGR_DPE_SW_BINDING_REGWEN_EN_BIT 0
166
167// Software binding input of the key manager.
168#define KEYMGR_DPE_SW_BINDING_VAL_FIELD_WIDTH 32
169#define KEYMGR_DPE_SW_BINDING_MULTIREG_COUNT 8
170
171// Software binding input of the key manager.
172#define KEYMGR_DPE_SW_BINDING_0_REG_OFFSET 0x3c
173#define KEYMGR_DPE_SW_BINDING_0_REG_RESVAL 0x0u
174
175// Software binding input of the key manager.
176#define KEYMGR_DPE_SW_BINDING_1_REG_OFFSET 0x40
177#define KEYMGR_DPE_SW_BINDING_1_REG_RESVAL 0x0u
178
179// Software binding input of the key manager.
180#define KEYMGR_DPE_SW_BINDING_2_REG_OFFSET 0x44
181#define KEYMGR_DPE_SW_BINDING_2_REG_RESVAL 0x0u
182
183// Software binding input of the key manager.
184#define KEYMGR_DPE_SW_BINDING_3_REG_OFFSET 0x48
185#define KEYMGR_DPE_SW_BINDING_3_REG_RESVAL 0x0u
186
187// Software binding input of the key manager.
188#define KEYMGR_DPE_SW_BINDING_4_REG_OFFSET 0x4c
189#define KEYMGR_DPE_SW_BINDING_4_REG_RESVAL 0x0u
190
191// Software binding input of the key manager.
192#define KEYMGR_DPE_SW_BINDING_5_REG_OFFSET 0x50
193#define KEYMGR_DPE_SW_BINDING_5_REG_RESVAL 0x0u
194
195// Software binding input of the key manager.
196#define KEYMGR_DPE_SW_BINDING_6_REG_OFFSET 0x54
197#define KEYMGR_DPE_SW_BINDING_6_REG_RESVAL 0x0u
198
199// Software binding input of the key manager.
200#define KEYMGR_DPE_SW_BINDING_7_REG_OFFSET 0x58
201#define KEYMGR_DPE_SW_BINDING_7_REG_RESVAL 0x0u
202
203// Salt value used as part of output generation (common parameters)
204#define KEYMGR_DPE_SALT_VAL_FIELD_WIDTH 32
205#define KEYMGR_DPE_SALT_MULTIREG_COUNT 8
206
207// Salt value used as part of output generation
208#define KEYMGR_DPE_SALT_0_REG_OFFSET 0x5c
209#define KEYMGR_DPE_SALT_0_REG_RESVAL 0x0u
210
211// Salt value used as part of output generation
212#define KEYMGR_DPE_SALT_1_REG_OFFSET 0x60
213#define KEYMGR_DPE_SALT_1_REG_RESVAL 0x0u
214
215// Salt value used as part of output generation
216#define KEYMGR_DPE_SALT_2_REG_OFFSET 0x64
217#define KEYMGR_DPE_SALT_2_REG_RESVAL 0x0u
218
219// Salt value used as part of output generation
220#define KEYMGR_DPE_SALT_3_REG_OFFSET 0x68
221#define KEYMGR_DPE_SALT_3_REG_RESVAL 0x0u
222
223// Salt value used as part of output generation
224#define KEYMGR_DPE_SALT_4_REG_OFFSET 0x6c
225#define KEYMGR_DPE_SALT_4_REG_RESVAL 0x0u
226
227// Salt value used as part of output generation
228#define KEYMGR_DPE_SALT_5_REG_OFFSET 0x70
229#define KEYMGR_DPE_SALT_5_REG_RESVAL 0x0u
230
231// Salt value used as part of output generation
232#define KEYMGR_DPE_SALT_6_REG_OFFSET 0x74
233#define KEYMGR_DPE_SALT_6_REG_RESVAL 0x0u
234
235// Salt value used as part of output generation
236#define KEYMGR_DPE_SALT_7_REG_OFFSET 0x78
237#define KEYMGR_DPE_SALT_7_REG_RESVAL 0x0u
238
239// Version used as part of output generation (common parameters)
240#define KEYMGR_DPE_KEY_VERSION_VAL_FIELD_WIDTH 32
241#define KEYMGR_DPE_KEY_VERSION_MULTIREG_COUNT 1
242
243// Version used as part of output generation
244#define KEYMGR_DPE_KEY_VERSION_REG_OFFSET 0x7c
245#define KEYMGR_DPE_KEY_VERSION_REG_RESVAL 0x0u
246
247// Register write enable for MAX_KEY_VERSION
248#define KEYMGR_DPE_MAX_KEY_VER_REGWEN_REG_OFFSET 0x80
249#define KEYMGR_DPE_MAX_KEY_VER_REGWEN_REG_RESVAL 0x1u
250#define KEYMGR_DPE_MAX_KEY_VER_REGWEN_EN_BIT 0
251
252// Max key version
253#define KEYMGR_DPE_MAX_KEY_VER_SHADOWED_REG_OFFSET 0x84
254#define KEYMGR_DPE_MAX_KEY_VER_SHADOWED_REG_RESVAL 0x0u
255
256// Key manager software output.
257#define KEYMGR_DPE_SW_SHARE0_OUTPUT_VAL_FIELD_WIDTH 32
258#define KEYMGR_DPE_SW_SHARE0_OUTPUT_MULTIREG_COUNT 8
259
260// Key manager software output.
261#define KEYMGR_DPE_SW_SHARE0_OUTPUT_0_REG_OFFSET 0x88
262#define KEYMGR_DPE_SW_SHARE0_OUTPUT_0_REG_RESVAL 0x0u
263
264// Key manager software output.
265#define KEYMGR_DPE_SW_SHARE0_OUTPUT_1_REG_OFFSET 0x8c
266#define KEYMGR_DPE_SW_SHARE0_OUTPUT_1_REG_RESVAL 0x0u
267
268// Key manager software output.
269#define KEYMGR_DPE_SW_SHARE0_OUTPUT_2_REG_OFFSET 0x90
270#define KEYMGR_DPE_SW_SHARE0_OUTPUT_2_REG_RESVAL 0x0u
271
272// Key manager software output.
273#define KEYMGR_DPE_SW_SHARE0_OUTPUT_3_REG_OFFSET 0x94
274#define KEYMGR_DPE_SW_SHARE0_OUTPUT_3_REG_RESVAL 0x0u
275
276// Key manager software output.
277#define KEYMGR_DPE_SW_SHARE0_OUTPUT_4_REG_OFFSET 0x98
278#define KEYMGR_DPE_SW_SHARE0_OUTPUT_4_REG_RESVAL 0x0u
279
280// Key manager software output.
281#define KEYMGR_DPE_SW_SHARE0_OUTPUT_5_REG_OFFSET 0x9c
282#define KEYMGR_DPE_SW_SHARE0_OUTPUT_5_REG_RESVAL 0x0u
283
284// Key manager software output.
285#define KEYMGR_DPE_SW_SHARE0_OUTPUT_6_REG_OFFSET 0xa0
286#define KEYMGR_DPE_SW_SHARE0_OUTPUT_6_REG_RESVAL 0x0u
287
288// Key manager software output.
289#define KEYMGR_DPE_SW_SHARE0_OUTPUT_7_REG_OFFSET 0xa4
290#define KEYMGR_DPE_SW_SHARE0_OUTPUT_7_REG_RESVAL 0x0u
291
292// Key manager software output.
293#define KEYMGR_DPE_SW_SHARE1_OUTPUT_VAL_FIELD_WIDTH 32
294#define KEYMGR_DPE_SW_SHARE1_OUTPUT_MULTIREG_COUNT 8
295
296// Key manager software output.
297#define KEYMGR_DPE_SW_SHARE1_OUTPUT_0_REG_OFFSET 0xa8
298#define KEYMGR_DPE_SW_SHARE1_OUTPUT_0_REG_RESVAL 0x0u
299
300// Key manager software output.
301#define KEYMGR_DPE_SW_SHARE1_OUTPUT_1_REG_OFFSET 0xac
302#define KEYMGR_DPE_SW_SHARE1_OUTPUT_1_REG_RESVAL 0x0u
303
304// Key manager software output.
305#define KEYMGR_DPE_SW_SHARE1_OUTPUT_2_REG_OFFSET 0xb0
306#define KEYMGR_DPE_SW_SHARE1_OUTPUT_2_REG_RESVAL 0x0u
307
308// Key manager software output.
309#define KEYMGR_DPE_SW_SHARE1_OUTPUT_3_REG_OFFSET 0xb4
310#define KEYMGR_DPE_SW_SHARE1_OUTPUT_3_REG_RESVAL 0x0u
311
312// Key manager software output.
313#define KEYMGR_DPE_SW_SHARE1_OUTPUT_4_REG_OFFSET 0xb8
314#define KEYMGR_DPE_SW_SHARE1_OUTPUT_4_REG_RESVAL 0x0u
315
316// Key manager software output.
317#define KEYMGR_DPE_SW_SHARE1_OUTPUT_5_REG_OFFSET 0xbc
318#define KEYMGR_DPE_SW_SHARE1_OUTPUT_5_REG_RESVAL 0x0u
319
320// Key manager software output.
321#define KEYMGR_DPE_SW_SHARE1_OUTPUT_6_REG_OFFSET 0xc0
322#define KEYMGR_DPE_SW_SHARE1_OUTPUT_6_REG_RESVAL 0x0u
323
324// Key manager software output.
325#define KEYMGR_DPE_SW_SHARE1_OUTPUT_7_REG_OFFSET 0xc4
326#define KEYMGR_DPE_SW_SHARE1_OUTPUT_7_REG_RESVAL 0x0u
327
328// Key manager working state.
329#define KEYMGR_DPE_WORKING_STATE_REG_OFFSET 0xc8
330#define KEYMGR_DPE_WORKING_STATE_REG_RESVAL 0x0u
331#define KEYMGR_DPE_WORKING_STATE_STATE_MASK 0x3u
332#define KEYMGR_DPE_WORKING_STATE_STATE_OFFSET 0
333#define KEYMGR_DPE_WORKING_STATE_STATE_FIELD \
334 ((bitfield_field32_t) { .mask = KEYMGR_DPE_WORKING_STATE_STATE_MASK, .index = KEYMGR_DPE_WORKING_STATE_STATE_OFFSET })
335#define KEYMGR_DPE_WORKING_STATE_STATE_VALUE_RESET 0x0
336#define KEYMGR_DPE_WORKING_STATE_STATE_VALUE_AVAILABLE 0x1
337#define KEYMGR_DPE_WORKING_STATE_STATE_VALUE_DISABLED 0x2
338#define KEYMGR_DPE_WORKING_STATE_STATE_VALUE_INVALID 0x3
339
340// Key manager status.
341#define KEYMGR_DPE_OP_STATUS_REG_OFFSET 0xcc
342#define KEYMGR_DPE_OP_STATUS_REG_RESVAL 0x0u
343#define KEYMGR_DPE_OP_STATUS_STATUS_MASK 0x3u
344#define KEYMGR_DPE_OP_STATUS_STATUS_OFFSET 0
345#define KEYMGR_DPE_OP_STATUS_STATUS_FIELD \
346 ((bitfield_field32_t) { .mask = KEYMGR_DPE_OP_STATUS_STATUS_MASK, .index = KEYMGR_DPE_OP_STATUS_STATUS_OFFSET })
347#define KEYMGR_DPE_OP_STATUS_STATUS_VALUE_IDLE 0x0
348#define KEYMGR_DPE_OP_STATUS_STATUS_VALUE_WIP 0x1
349#define KEYMGR_DPE_OP_STATUS_STATUS_VALUE_DONE_SUCCESS 0x2
350#define KEYMGR_DPE_OP_STATUS_STATUS_VALUE_DONE_ERROR 0x3
351
352// Read metadata (low word) for each HW slot.
353#define KEYMGR_DPE_METADATA_LOW_MAX_KEY_VERSION_FIELD_WIDTH 32
354#define KEYMGR_DPE_METADATA_LOW_MULTIREG_COUNT 8
355
356// Read metadata (low word) for each HW slot.
357#define KEYMGR_DPE_METADATA_LOW_0_REG_OFFSET 0xd0
358#define KEYMGR_DPE_METADATA_LOW_0_REG_RESVAL 0x0u
359
360// Read metadata (low word) for each HW slot.
361#define KEYMGR_DPE_METADATA_LOW_1_REG_OFFSET 0xd4
362#define KEYMGR_DPE_METADATA_LOW_1_REG_RESVAL 0x0u
363
364// Read metadata (low word) for each HW slot.
365#define KEYMGR_DPE_METADATA_LOW_2_REG_OFFSET 0xd8
366#define KEYMGR_DPE_METADATA_LOW_2_REG_RESVAL 0x0u
367
368// Read metadata (low word) for each HW slot.
369#define KEYMGR_DPE_METADATA_LOW_3_REG_OFFSET 0xdc
370#define KEYMGR_DPE_METADATA_LOW_3_REG_RESVAL 0x0u
371
372// Read metadata (low word) for each HW slot.
373#define KEYMGR_DPE_METADATA_LOW_4_REG_OFFSET 0xe0
374#define KEYMGR_DPE_METADATA_LOW_4_REG_RESVAL 0x0u
375
376// Read metadata (low word) for each HW slot.
377#define KEYMGR_DPE_METADATA_LOW_5_REG_OFFSET 0xe4
378#define KEYMGR_DPE_METADATA_LOW_5_REG_RESVAL 0x0u
379
380// Read metadata (low word) for each HW slot.
381#define KEYMGR_DPE_METADATA_LOW_6_REG_OFFSET 0xe8
382#define KEYMGR_DPE_METADATA_LOW_6_REG_RESVAL 0x0u
383
384// Read metadata (low word) for each HW slot.
385#define KEYMGR_DPE_METADATA_LOW_7_REG_OFFSET 0xec
386#define KEYMGR_DPE_METADATA_LOW_7_REG_RESVAL 0x0u
387
388// Read metadata (high word) for each HW slot.
389#define KEYMGR_DPE_METADATA_HIGH_VALID_FIELD_WIDTH 1
390#define KEYMGR_DPE_METADATA_HIGH_BOOT_STAGE_FIELD_WIDTH 3
391#define KEYMGR_DPE_METADATA_HIGH_ALLOW_CHILD_POLICY_FIELD_WIDTH 1
392#define KEYMGR_DPE_METADATA_HIGH_EXPORTABLE_POLICY_FIELD_WIDTH 1
393#define KEYMGR_DPE_METADATA_HIGH_RETAIN_PARENT_POLICY_FIELD_WIDTH 1
394#define KEYMGR_DPE_METADATA_HIGH_ALLOW_KEYGEN_POLICY_FIELD_WIDTH 1
395#define KEYMGR_DPE_METADATA_HIGH_MULTIREG_COUNT 8
396
397// Read metadata (high word) for each HW slot.
398#define KEYMGR_DPE_METADATA_HIGH_0_REG_OFFSET 0xf0
399#define KEYMGR_DPE_METADATA_HIGH_0_REG_RESVAL 0x0u
400#define KEYMGR_DPE_METADATA_HIGH_0_VALID_0_BIT 0
401#define KEYMGR_DPE_METADATA_HIGH_0_BOOT_STAGE_0_MASK 0x7u
402#define KEYMGR_DPE_METADATA_HIGH_0_BOOT_STAGE_0_OFFSET 1
403#define KEYMGR_DPE_METADATA_HIGH_0_BOOT_STAGE_0_FIELD \
404 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_0_BOOT_STAGE_0_MASK, .index = KEYMGR_DPE_METADATA_HIGH_0_BOOT_STAGE_0_OFFSET })
405#define KEYMGR_DPE_METADATA_HIGH_0_ALLOW_CHILD_POLICY_0_BIT 4
406#define KEYMGR_DPE_METADATA_HIGH_0_EXPORTABLE_POLICY_0_BIT 5
407#define KEYMGR_DPE_METADATA_HIGH_0_RETAIN_PARENT_POLICY_0_BIT 6
408#define KEYMGR_DPE_METADATA_HIGH_0_ALLOW_KEYGEN_POLICY_0_BIT 7
409
410// Read metadata (high word) for each HW slot.
411#define KEYMGR_DPE_METADATA_HIGH_1_REG_OFFSET 0xf4
412#define KEYMGR_DPE_METADATA_HIGH_1_REG_RESVAL 0x0u
413#define KEYMGR_DPE_METADATA_HIGH_1_VALID_1_BIT 0
414#define KEYMGR_DPE_METADATA_HIGH_1_BOOT_STAGE_1_MASK 0x7u
415#define KEYMGR_DPE_METADATA_HIGH_1_BOOT_STAGE_1_OFFSET 1
416#define KEYMGR_DPE_METADATA_HIGH_1_BOOT_STAGE_1_FIELD \
417 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_1_BOOT_STAGE_1_MASK, .index = KEYMGR_DPE_METADATA_HIGH_1_BOOT_STAGE_1_OFFSET })
418#define KEYMGR_DPE_METADATA_HIGH_1_ALLOW_CHILD_POLICY_1_BIT 4
419#define KEYMGR_DPE_METADATA_HIGH_1_EXPORTABLE_POLICY_1_BIT 5
420#define KEYMGR_DPE_METADATA_HIGH_1_RETAIN_PARENT_POLICY_1_BIT 6
421#define KEYMGR_DPE_METADATA_HIGH_1_ALLOW_KEYGEN_POLICY_1_BIT 7
422
423// Read metadata (high word) for each HW slot.
424#define KEYMGR_DPE_METADATA_HIGH_2_REG_OFFSET 0xf8
425#define KEYMGR_DPE_METADATA_HIGH_2_REG_RESVAL 0x0u
426#define KEYMGR_DPE_METADATA_HIGH_2_VALID_2_BIT 0
427#define KEYMGR_DPE_METADATA_HIGH_2_BOOT_STAGE_2_MASK 0x7u
428#define KEYMGR_DPE_METADATA_HIGH_2_BOOT_STAGE_2_OFFSET 1
429#define KEYMGR_DPE_METADATA_HIGH_2_BOOT_STAGE_2_FIELD \
430 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_2_BOOT_STAGE_2_MASK, .index = KEYMGR_DPE_METADATA_HIGH_2_BOOT_STAGE_2_OFFSET })
431#define KEYMGR_DPE_METADATA_HIGH_2_ALLOW_CHILD_POLICY_2_BIT 4
432#define KEYMGR_DPE_METADATA_HIGH_2_EXPORTABLE_POLICY_2_BIT 5
433#define KEYMGR_DPE_METADATA_HIGH_2_RETAIN_PARENT_POLICY_2_BIT 6
434#define KEYMGR_DPE_METADATA_HIGH_2_ALLOW_KEYGEN_POLICY_2_BIT 7
435
436// Read metadata (high word) for each HW slot.
437#define KEYMGR_DPE_METADATA_HIGH_3_REG_OFFSET 0xfc
438#define KEYMGR_DPE_METADATA_HIGH_3_REG_RESVAL 0x0u
439#define KEYMGR_DPE_METADATA_HIGH_3_VALID_3_BIT 0
440#define KEYMGR_DPE_METADATA_HIGH_3_BOOT_STAGE_3_MASK 0x7u
441#define KEYMGR_DPE_METADATA_HIGH_3_BOOT_STAGE_3_OFFSET 1
442#define KEYMGR_DPE_METADATA_HIGH_3_BOOT_STAGE_3_FIELD \
443 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_3_BOOT_STAGE_3_MASK, .index = KEYMGR_DPE_METADATA_HIGH_3_BOOT_STAGE_3_OFFSET })
444#define KEYMGR_DPE_METADATA_HIGH_3_ALLOW_CHILD_POLICY_3_BIT 4
445#define KEYMGR_DPE_METADATA_HIGH_3_EXPORTABLE_POLICY_3_BIT 5
446#define KEYMGR_DPE_METADATA_HIGH_3_RETAIN_PARENT_POLICY_3_BIT 6
447#define KEYMGR_DPE_METADATA_HIGH_3_ALLOW_KEYGEN_POLICY_3_BIT 7
448
449// Read metadata (high word) for each HW slot.
450#define KEYMGR_DPE_METADATA_HIGH_4_REG_OFFSET 0x100
451#define KEYMGR_DPE_METADATA_HIGH_4_REG_RESVAL 0x0u
452#define KEYMGR_DPE_METADATA_HIGH_4_VALID_4_BIT 0
453#define KEYMGR_DPE_METADATA_HIGH_4_BOOT_STAGE_4_MASK 0x7u
454#define KEYMGR_DPE_METADATA_HIGH_4_BOOT_STAGE_4_OFFSET 1
455#define KEYMGR_DPE_METADATA_HIGH_4_BOOT_STAGE_4_FIELD \
456 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_4_BOOT_STAGE_4_MASK, .index = KEYMGR_DPE_METADATA_HIGH_4_BOOT_STAGE_4_OFFSET })
457#define KEYMGR_DPE_METADATA_HIGH_4_ALLOW_CHILD_POLICY_4_BIT 4
458#define KEYMGR_DPE_METADATA_HIGH_4_EXPORTABLE_POLICY_4_BIT 5
459#define KEYMGR_DPE_METADATA_HIGH_4_RETAIN_PARENT_POLICY_4_BIT 6
460#define KEYMGR_DPE_METADATA_HIGH_4_ALLOW_KEYGEN_POLICY_4_BIT 7
461
462// Read metadata (high word) for each HW slot.
463#define KEYMGR_DPE_METADATA_HIGH_5_REG_OFFSET 0x104
464#define KEYMGR_DPE_METADATA_HIGH_5_REG_RESVAL 0x0u
465#define KEYMGR_DPE_METADATA_HIGH_5_VALID_5_BIT 0
466#define KEYMGR_DPE_METADATA_HIGH_5_BOOT_STAGE_5_MASK 0x7u
467#define KEYMGR_DPE_METADATA_HIGH_5_BOOT_STAGE_5_OFFSET 1
468#define KEYMGR_DPE_METADATA_HIGH_5_BOOT_STAGE_5_FIELD \
469 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_5_BOOT_STAGE_5_MASK, .index = KEYMGR_DPE_METADATA_HIGH_5_BOOT_STAGE_5_OFFSET })
470#define KEYMGR_DPE_METADATA_HIGH_5_ALLOW_CHILD_POLICY_5_BIT 4
471#define KEYMGR_DPE_METADATA_HIGH_5_EXPORTABLE_POLICY_5_BIT 5
472#define KEYMGR_DPE_METADATA_HIGH_5_RETAIN_PARENT_POLICY_5_BIT 6
473#define KEYMGR_DPE_METADATA_HIGH_5_ALLOW_KEYGEN_POLICY_5_BIT 7
474
475// Read metadata (high word) for each HW slot.
476#define KEYMGR_DPE_METADATA_HIGH_6_REG_OFFSET 0x108
477#define KEYMGR_DPE_METADATA_HIGH_6_REG_RESVAL 0x0u
478#define KEYMGR_DPE_METADATA_HIGH_6_VALID_6_BIT 0
479#define KEYMGR_DPE_METADATA_HIGH_6_BOOT_STAGE_6_MASK 0x7u
480#define KEYMGR_DPE_METADATA_HIGH_6_BOOT_STAGE_6_OFFSET 1
481#define KEYMGR_DPE_METADATA_HIGH_6_BOOT_STAGE_6_FIELD \
482 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_6_BOOT_STAGE_6_MASK, .index = KEYMGR_DPE_METADATA_HIGH_6_BOOT_STAGE_6_OFFSET })
483#define KEYMGR_DPE_METADATA_HIGH_6_ALLOW_CHILD_POLICY_6_BIT 4
484#define KEYMGR_DPE_METADATA_HIGH_6_EXPORTABLE_POLICY_6_BIT 5
485#define KEYMGR_DPE_METADATA_HIGH_6_RETAIN_PARENT_POLICY_6_BIT 6
486#define KEYMGR_DPE_METADATA_HIGH_6_ALLOW_KEYGEN_POLICY_6_BIT 7
487
488// Read metadata (high word) for each HW slot.
489#define KEYMGR_DPE_METADATA_HIGH_7_REG_OFFSET 0x10c
490#define KEYMGR_DPE_METADATA_HIGH_7_REG_RESVAL 0x0u
491#define KEYMGR_DPE_METADATA_HIGH_7_VALID_7_BIT 0
492#define KEYMGR_DPE_METADATA_HIGH_7_BOOT_STAGE_7_MASK 0x7u
493#define KEYMGR_DPE_METADATA_HIGH_7_BOOT_STAGE_7_OFFSET 1
494#define KEYMGR_DPE_METADATA_HIGH_7_BOOT_STAGE_7_FIELD \
495 ((bitfield_field32_t) { .mask = KEYMGR_DPE_METADATA_HIGH_7_BOOT_STAGE_7_MASK, .index = KEYMGR_DPE_METADATA_HIGH_7_BOOT_STAGE_7_OFFSET })
496#define KEYMGR_DPE_METADATA_HIGH_7_ALLOW_CHILD_POLICY_7_BIT 4
497#define KEYMGR_DPE_METADATA_HIGH_7_EXPORTABLE_POLICY_7_BIT 5
498#define KEYMGR_DPE_METADATA_HIGH_7_RETAIN_PARENT_POLICY_7_BIT 6
499#define KEYMGR_DPE_METADATA_HIGH_7_ALLOW_KEYGEN_POLICY_7_BIT 7
500
501// Key manager error code.
502#define KEYMGR_DPE_ERR_CODE_REG_OFFSET 0x110
503#define KEYMGR_DPE_ERR_CODE_REG_RESVAL 0x0u
504#define KEYMGR_DPE_ERR_CODE_INVALID_OP_BIT 0
505#define KEYMGR_DPE_ERR_CODE_INVALID_KMAC_INPUT_BIT 1
506#define KEYMGR_DPE_ERR_CODE_INVALID_SHADOW_UPDATE_BIT 2
507
508// This register represents both synchronous and asynchronous fatal faults.
509#define KEYMGR_DPE_FAULT_STATUS_REG_OFFSET 0x114
510#define KEYMGR_DPE_FAULT_STATUS_REG_RESVAL 0x0u
511#define KEYMGR_DPE_FAULT_STATUS_CMD_BIT 0
512#define KEYMGR_DPE_FAULT_STATUS_KMAC_FSM_BIT 1
513#define KEYMGR_DPE_FAULT_STATUS_KMAC_DONE_BIT 2
514#define KEYMGR_DPE_FAULT_STATUS_KMAC_OP_BIT 3
515#define KEYMGR_DPE_FAULT_STATUS_KMAC_OUT_BIT 4
516#define KEYMGR_DPE_FAULT_STATUS_REGFILE_INTG_BIT 5
517#define KEYMGR_DPE_FAULT_STATUS_SHADOW_BIT 6
518#define KEYMGR_DPE_FAULT_STATUS_CTRL_FSM_INTG_BIT 7
519#define KEYMGR_DPE_FAULT_STATUS_CTRL_FSM_CHK_BIT 8
520#define KEYMGR_DPE_FAULT_STATUS_CTRL_FSM_CNT_BIT 9
521#define KEYMGR_DPE_FAULT_STATUS_RESEED_CNT_BIT 10
522#define KEYMGR_DPE_FAULT_STATUS_SIDE_CTRL_FSM_BIT 11
523#define KEYMGR_DPE_FAULT_STATUS_SIDE_CTRL_SEL_BIT 12
524#define KEYMGR_DPE_FAULT_STATUS_KEY_ECC_BIT 13
525
526// The register holds some debug information that may be convenient if keymgr
527#define KEYMGR_DPE_DEBUG_REG_OFFSET 0x118
528#define KEYMGR_DPE_DEBUG_REG_RESVAL 0x0u
529#define KEYMGR_DPE_DEBUG_INVALID_CREATOR_SEED_BIT 0
530#define KEYMGR_DPE_DEBUG_INVALID_OWNER_SEED_BIT 1
531#define KEYMGR_DPE_DEBUG_INVALID_DEV_ID_BIT 2
532#define KEYMGR_DPE_DEBUG_INVALID_HEALTH_STATE_BIT 3
533#define KEYMGR_DPE_DEBUG_INVALID_KEY_VERSION_BIT 4
534#define KEYMGR_DPE_DEBUG_INVALID_KEY_BIT 5
535#define KEYMGR_DPE_DEBUG_INVALID_DIGEST_BIT 6
536#define KEYMGR_DPE_DEBUG_INVALID_ROOT_KEY_BIT 7
537#define KEYMGR_DPE_DEBUG_INACTIVE_LC_EN_BIT 8
538#define KEYMGR_DPE_DEBUG_INVALID_SECONDARY_ROOT_KEY_BIT 9
539#define KEYMGR_DPE_DEBUG_INVALID_FIELD_ENTROPY_BIT 10
540
541// Register lock for the `load root key` operation, see
542// !!CONTROL_SHADOWED.OPERATION.
543#define KEYMGR_DPE_LOAD_ROOT_KEY_LOCK_REG_OFFSET 0x11c
544#define KEYMGR_DPE_LOAD_ROOT_KEY_LOCK_REG_RESVAL 0x0u
545#define KEYMGR_DPE_LOAD_ROOT_KEY_LOCK_LOCK_BIT 0
546
547// Register lock for the `load secondary root key` operation, see
548// !!CONTROL_SHADOWED.OPERATION.
549#define KEYMGR_DPE_LOAD_SECONDARY_ROOT_KEY_LOCK_REG_OFFSET 0x120
550#define KEYMGR_DPE_LOAD_SECONDARY_ROOT_KEY_LOCK_REG_RESVAL 0x0u
551#define KEYMGR_DPE_LOAD_SECONDARY_ROOT_KEY_LOCK_LOCK_BIT 0
552
553// Enforce the software binding value as the only advance input message until
554// the next reset
555#define KEYMGR_DPE_ENFORCE_SW_BINDING_REG_OFFSET 0x124
556#define KEYMGR_DPE_ENFORCE_SW_BINDING_REG_RESVAL 0x9u
557#define KEYMGR_DPE_ENFORCE_SW_BINDING_ENFORCE_MASK 0xfu
558#define KEYMGR_DPE_ENFORCE_SW_BINDING_ENFORCE_OFFSET 0
559#define KEYMGR_DPE_ENFORCE_SW_BINDING_ENFORCE_FIELD \
560 ((bitfield_field32_t) { .mask = KEYMGR_DPE_ENFORCE_SW_BINDING_ENFORCE_MASK, .index = KEYMGR_DPE_ENFORCE_SW_BINDING_ENFORCE_OFFSET })
561
562#ifdef __cplusplus
563} // extern "C"
564#endif
565#endif // _KEYMGR_DPE_REG_DEFS_
566// End generated register defines for keymgr_dpe