Software APIs
lc_ctrl_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for lc_ctrl
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 _LC_CTRL_REG_DEFS_
14#define _LC_CTRL_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Width of SiliconCreatorId revision field.
20#define LC_CTRL_PARAM_SILICON_CREATOR_ID_WIDTH 16
21
22// Width of ProductId revision field.
23#define LC_CTRL_PARAM_PRODUCT_ID_WIDTH 16
24
25// Width of RevisionId revision field.
26#define LC_CTRL_PARAM_REVISION_ID_WIDTH 8
27
28// Number of 32bit words in a token.
29#define LC_CTRL_PARAM_NUM_TOKEN_WORDS 4
30
31// Number of life cycle state enum bits.
32#define LC_CTRL_PARAM_CSR_LC_STATE_WIDTH 30
33
34// Number of life cycle transition counter bits.
35#define LC_CTRL_PARAM_CSR_LC_COUNT_WIDTH 5
36
37// Number of life cycle id state enum bits.
38#define LC_CTRL_PARAM_CSR_LC_ID_STATE_WIDTH 32
39
40// Number of vendor/test-specific OTP control bits.
41#define LC_CTRL_PARAM_CSR_OTP_TEST_CTRL_WIDTH 32
42
43// Number of vendor/test-specific OTP status bits.
44#define LC_CTRL_PARAM_CSR_OTP_TEST_STATUS_WIDTH 32
45
46// Number of 32bit words in the Device ID.
47#define LC_CTRL_PARAM_NUM_DEVICE_ID_WORDS 8
48
49// Number of 32bit words in the manufacturing state.
50#define LC_CTRL_PARAM_NUM_MANUF_STATE_WORDS 8
51
52// Number of alerts
53#define LC_CTRL_PARAM_NUM_ALERTS 3
54
55// Register width
56#define LC_CTRL_PARAM_REG_WIDTH 32
57
58// Alert Test Register
59#define LC_CTRL_ALERT_TEST_REG_OFFSET 0x0
60#define LC_CTRL_ALERT_TEST_REG_RESVAL 0x0u
61#define LC_CTRL_ALERT_TEST_FATAL_PROG_ERROR_BIT 0
62#define LC_CTRL_ALERT_TEST_FATAL_STATE_ERROR_BIT 1
63#define LC_CTRL_ALERT_TEST_FATAL_BUS_INTEG_ERROR_BIT 2
64
65// life cycle status register. Note that all errors are terminal and require
66// a reset cycle.
67#define LC_CTRL_STATUS_REG_OFFSET 0x4
68#define LC_CTRL_STATUS_REG_RESVAL 0x0u
69#define LC_CTRL_STATUS_INITIALIZED_BIT 0
70#define LC_CTRL_STATUS_READY_BIT 1
71#define LC_CTRL_STATUS_EXT_CLOCK_SWITCHED_BIT 2
72#define LC_CTRL_STATUS_TRANSITION_SUCCESSFUL_BIT 3
73#define LC_CTRL_STATUS_TRANSITION_COUNT_ERROR_BIT 4
74#define LC_CTRL_STATUS_TRANSITION_ERROR_BIT 5
75#define LC_CTRL_STATUS_TOKEN_ERROR_BIT 6
76#define LC_CTRL_STATUS_FLASH_RMA_ERROR_BIT 7
77#define LC_CTRL_STATUS_OTP_ERROR_BIT 8
78#define LC_CTRL_STATUS_STATE_ERROR_BIT 9
79#define LC_CTRL_STATUS_BUS_INTEG_ERROR_BIT 10
80#define LC_CTRL_STATUS_OTP_PARTITION_ERROR_BIT 11
81
82// Register write enable for the hardware mutex register.
83#define LC_CTRL_CLAIM_TRANSITION_IF_REGWEN_REG_OFFSET 0x8
84#define LC_CTRL_CLAIM_TRANSITION_IF_REGWEN_REG_RESVAL 0x1u
85#define LC_CTRL_CLAIM_TRANSITION_IF_REGWEN_CLAIM_TRANSITION_IF_REGWEN_BIT 0
86
87// Hardware mutex to claim exclusive access to the transition interface.
88#define LC_CTRL_CLAIM_TRANSITION_IF_REG_OFFSET 0xc
89#define LC_CTRL_CLAIM_TRANSITION_IF_REG_RESVAL 0x69u
90#define LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_MASK 0xffu
91#define LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_OFFSET 0
92#define LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_FIELD \
93 ((bitfield_field32_t) { .mask = LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_MASK, .index = LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_OFFSET })
94
95// Register write enable for all transition interface registers.
96#define LC_CTRL_TRANSITION_REGWEN_REG_OFFSET 0x10
97#define LC_CTRL_TRANSITION_REGWEN_REG_RESVAL 0x0u
98#define LC_CTRL_TRANSITION_REGWEN_TRANSITION_REGWEN_BIT 0
99
100// Command register for state transition requests.
101#define LC_CTRL_TRANSITION_CMD_REG_OFFSET 0x14
102#define LC_CTRL_TRANSITION_CMD_REG_RESVAL 0x0u
103#define LC_CTRL_TRANSITION_CMD_START_BIT 0
104
105// Control register for state transition requests.
106#define LC_CTRL_TRANSITION_CTRL_REG_OFFSET 0x18
107#define LC_CTRL_TRANSITION_CTRL_REG_RESVAL 0x0u
108#define LC_CTRL_TRANSITION_CTRL_EXT_CLOCK_EN_BIT 0
109#define LC_CTRL_TRANSITION_CTRL_VOLATILE_RAW_UNLOCK_BIT 1
110
111// 128bit token for conditional transitions.
112#define LC_CTRL_TRANSITION_TOKEN_TRANSITION_TOKEN_FIELD_WIDTH 32
113#define LC_CTRL_TRANSITION_TOKEN_MULTIREG_COUNT 4
114
115// 128bit token for conditional transitions.
116#define LC_CTRL_TRANSITION_TOKEN_0_REG_OFFSET 0x1c
117#define LC_CTRL_TRANSITION_TOKEN_0_REG_RESVAL 0x0u
118
119// 128bit token for conditional transitions.
120#define LC_CTRL_TRANSITION_TOKEN_1_REG_OFFSET 0x20
121#define LC_CTRL_TRANSITION_TOKEN_1_REG_RESVAL 0x0u
122
123// 128bit token for conditional transitions.
124#define LC_CTRL_TRANSITION_TOKEN_2_REG_OFFSET 0x24
125#define LC_CTRL_TRANSITION_TOKEN_2_REG_RESVAL 0x0u
126
127// 128bit token for conditional transitions.
128#define LC_CTRL_TRANSITION_TOKEN_3_REG_OFFSET 0x28
129#define LC_CTRL_TRANSITION_TOKEN_3_REG_RESVAL 0x0u
130
131// This register exposes the decoded life cycle state.
132#define LC_CTRL_TRANSITION_TARGET_REG_OFFSET 0x2c
133#define LC_CTRL_TRANSITION_TARGET_REG_RESVAL 0x0u
134#define LC_CTRL_TRANSITION_TARGET_STATE_MASK 0x3fffffffu
135#define LC_CTRL_TRANSITION_TARGET_STATE_OFFSET 0
136#define LC_CTRL_TRANSITION_TARGET_STATE_FIELD \
137 ((bitfield_field32_t) { .mask = LC_CTRL_TRANSITION_TARGET_STATE_MASK, .index = LC_CTRL_TRANSITION_TARGET_STATE_OFFSET })
138#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_RAW 0x0
139#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED0 0x2108421
140#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED0 0x4210842
141#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED1 0x6318c63
142#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED1 0x8421084
143#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED2 0xa5294a5
144#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED2 0xc6318c6
145#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED3 0xe739ce7
146#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED3 0x10842108
147#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED4 0x1294a529
148#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED4 0x14a5294a
149#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED5 0x16b5ad6b
150#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED5 0x18c6318c
151#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED6 0x1ad6b5ad
152#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_LOCKED6 0x1ce739ce
153#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_TEST_UNLOCKED7 0x1ef7bdef
154#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_DEV 0x21084210
155#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_PROD 0x2318c631
156#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_PROD_END 0x25294a52
157#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_RMA 0x2739ce73
158#define LC_CTRL_TRANSITION_TARGET_STATE_VALUE_SCRAP 0x294a5294
159
160// Test/vendor-specific settings for the OTP macro wrapper.
161#define LC_CTRL_OTP_VENDOR_TEST_CTRL_REG_OFFSET 0x30
162#define LC_CTRL_OTP_VENDOR_TEST_CTRL_REG_RESVAL 0x0u
163
164// Test/vendor-specific settings for the OTP macro wrapper.
165#define LC_CTRL_OTP_VENDOR_TEST_STATUS_REG_OFFSET 0x34
166#define LC_CTRL_OTP_VENDOR_TEST_STATUS_REG_RESVAL 0x0u
167
168// This register exposes the decoded life cycle state.
169#define LC_CTRL_LC_STATE_REG_OFFSET 0x38
170#define LC_CTRL_LC_STATE_REG_RESVAL 0x0u
171#define LC_CTRL_LC_STATE_STATE_MASK 0x3fffffffu
172#define LC_CTRL_LC_STATE_STATE_OFFSET 0
173#define LC_CTRL_LC_STATE_STATE_FIELD \
174 ((bitfield_field32_t) { .mask = LC_CTRL_LC_STATE_STATE_MASK, .index = LC_CTRL_LC_STATE_STATE_OFFSET })
175#define LC_CTRL_LC_STATE_STATE_VALUE_RAW 0x0
176#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED0 0x2108421
177#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED0 0x4210842
178#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED1 0x6318c63
179#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED1 0x8421084
180#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED2 0xa5294a5
181#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED2 0xc6318c6
182#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED3 0xe739ce7
183#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED3 0x10842108
184#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED4 0x1294a529
185#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED4 0x14a5294a
186#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED5 0x16b5ad6b
187#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED5 0x18c6318c
188#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED6 0x1ad6b5ad
189#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_LOCKED6 0x1ce739ce
190#define LC_CTRL_LC_STATE_STATE_VALUE_TEST_UNLOCKED7 0x1ef7bdef
191#define LC_CTRL_LC_STATE_STATE_VALUE_DEV 0x21084210
192#define LC_CTRL_LC_STATE_STATE_VALUE_PROD 0x2318c631
193#define LC_CTRL_LC_STATE_STATE_VALUE_PROD_END 0x25294a52
194#define LC_CTRL_LC_STATE_STATE_VALUE_RMA 0x2739ce73
195#define LC_CTRL_LC_STATE_STATE_VALUE_SCRAP 0x294a5294
196#define LC_CTRL_LC_STATE_STATE_VALUE_POST_TRANSITION 0x2b5ad6b5
197#define LC_CTRL_LC_STATE_STATE_VALUE_ESCALATE 0x2d6b5ad6
198#define LC_CTRL_LC_STATE_STATE_VALUE_INVALID 0x2f7bdef7
199
200// This register exposes the state of the decoded life cycle transition
201// counter.
202#define LC_CTRL_LC_TRANSITION_CNT_REG_OFFSET 0x3c
203#define LC_CTRL_LC_TRANSITION_CNT_REG_RESVAL 0x0u
204#define LC_CTRL_LC_TRANSITION_CNT_CNT_MASK 0x1fu
205#define LC_CTRL_LC_TRANSITION_CNT_CNT_OFFSET 0
206#define LC_CTRL_LC_TRANSITION_CNT_CNT_FIELD \
207 ((bitfield_field32_t) { .mask = LC_CTRL_LC_TRANSITION_CNT_CNT_MASK, .index = LC_CTRL_LC_TRANSITION_CNT_CNT_OFFSET })
208
209// This register exposes the id state of the device.
210#define LC_CTRL_LC_ID_STATE_REG_OFFSET 0x40
211#define LC_CTRL_LC_ID_STATE_REG_RESVAL 0x0u
212#define LC_CTRL_LC_ID_STATE_STATE_VALUE_BLANK 0x0
213#define LC_CTRL_LC_ID_STATE_STATE_VALUE_PERSONALIZED 0x55555555
214#define LC_CTRL_LC_ID_STATE_STATE_VALUE_INVALID 0xaaaaaaaa
215
216// This register holds the SILICON_CREATOR_ID and the PRODUCT_ID.
217#define LC_CTRL_HW_REVISION0_REG_OFFSET 0x44
218#define LC_CTRL_HW_REVISION0_REG_RESVAL 0x0u
219#define LC_CTRL_HW_REVISION0_PRODUCT_ID_MASK 0xffffu
220#define LC_CTRL_HW_REVISION0_PRODUCT_ID_OFFSET 0
221#define LC_CTRL_HW_REVISION0_PRODUCT_ID_FIELD \
222 ((bitfield_field32_t) { .mask = LC_CTRL_HW_REVISION0_PRODUCT_ID_MASK, .index = LC_CTRL_HW_REVISION0_PRODUCT_ID_OFFSET })
223#define LC_CTRL_HW_REVISION0_SILICON_CREATOR_ID_MASK 0xffffu
224#define LC_CTRL_HW_REVISION0_SILICON_CREATOR_ID_OFFSET 16
225#define LC_CTRL_HW_REVISION0_SILICON_CREATOR_ID_FIELD \
226 ((bitfield_field32_t) { .mask = LC_CTRL_HW_REVISION0_SILICON_CREATOR_ID_MASK, .index = LC_CTRL_HW_REVISION0_SILICON_CREATOR_ID_OFFSET })
227
228// This register holds the REVISION_ID.
229#define LC_CTRL_HW_REVISION1_REG_OFFSET 0x48
230#define LC_CTRL_HW_REVISION1_REG_RESVAL 0x0u
231#define LC_CTRL_HW_REVISION1_REVISION_ID_MASK 0xffu
232#define LC_CTRL_HW_REVISION1_REVISION_ID_OFFSET 0
233#define LC_CTRL_HW_REVISION1_REVISION_ID_FIELD \
234 ((bitfield_field32_t) { .mask = LC_CTRL_HW_REVISION1_REVISION_ID_MASK, .index = LC_CTRL_HW_REVISION1_REVISION_ID_OFFSET })
235#define LC_CTRL_HW_REVISION1_RESERVED_MASK 0xffffffu
236#define LC_CTRL_HW_REVISION1_RESERVED_OFFSET 8
237#define LC_CTRL_HW_REVISION1_RESERVED_FIELD \
238 ((bitfield_field32_t) { .mask = LC_CTRL_HW_REVISION1_RESERVED_MASK, .index = LC_CTRL_HW_REVISION1_RESERVED_OFFSET })
239
240// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
241// in OTP.
242#define LC_CTRL_DEVICE_ID_DEVICE_ID_FIELD_WIDTH 32
243#define LC_CTRL_DEVICE_ID_MULTIREG_COUNT 8
244
245// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
246// in OTP.
247#define LC_CTRL_DEVICE_ID_0_REG_OFFSET 0x4c
248#define LC_CTRL_DEVICE_ID_0_REG_RESVAL 0x0u
249
250// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
251// in OTP.
252#define LC_CTRL_DEVICE_ID_1_REG_OFFSET 0x50
253#define LC_CTRL_DEVICE_ID_1_REG_RESVAL 0x0u
254
255// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
256// in OTP.
257#define LC_CTRL_DEVICE_ID_2_REG_OFFSET 0x54
258#define LC_CTRL_DEVICE_ID_2_REG_RESVAL 0x0u
259
260// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
261// in OTP.
262#define LC_CTRL_DEVICE_ID_3_REG_OFFSET 0x58
263#define LC_CTRL_DEVICE_ID_3_REG_RESVAL 0x0u
264
265// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
266// in OTP.
267#define LC_CTRL_DEVICE_ID_4_REG_OFFSET 0x5c
268#define LC_CTRL_DEVICE_ID_4_REG_RESVAL 0x0u
269
270// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
271// in OTP.
272#define LC_CTRL_DEVICE_ID_5_REG_OFFSET 0x60
273#define LC_CTRL_DEVICE_ID_5_REG_RESVAL 0x0u
274
275// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
276// in OTP.
277#define LC_CTRL_DEVICE_ID_6_REG_OFFSET 0x64
278#define LC_CTRL_DEVICE_ID_6_REG_RESVAL 0x0u
279
280// This is the 256bit DEVICE_ID value that is stored in the HW_CFG0 partition
281// in OTP.
282#define LC_CTRL_DEVICE_ID_7_REG_OFFSET 0x68
283#define LC_CTRL_DEVICE_ID_7_REG_RESVAL 0x0u
284
285// This is a 256bit field used for keeping track of the manufacturing state.
286// (common parameters)
287#define LC_CTRL_MANUF_STATE_MANUF_STATE_FIELD_WIDTH 32
288#define LC_CTRL_MANUF_STATE_MULTIREG_COUNT 8
289
290// This is a 256bit field used for keeping track of the manufacturing state.
291#define LC_CTRL_MANUF_STATE_0_REG_OFFSET 0x6c
292#define LC_CTRL_MANUF_STATE_0_REG_RESVAL 0x0u
293
294// This is a 256bit field used for keeping track of the manufacturing state.
295#define LC_CTRL_MANUF_STATE_1_REG_OFFSET 0x70
296#define LC_CTRL_MANUF_STATE_1_REG_RESVAL 0x0u
297
298// This is a 256bit field used for keeping track of the manufacturing state.
299#define LC_CTRL_MANUF_STATE_2_REG_OFFSET 0x74
300#define LC_CTRL_MANUF_STATE_2_REG_RESVAL 0x0u
301
302// This is a 256bit field used for keeping track of the manufacturing state.
303#define LC_CTRL_MANUF_STATE_3_REG_OFFSET 0x78
304#define LC_CTRL_MANUF_STATE_3_REG_RESVAL 0x0u
305
306// This is a 256bit field used for keeping track of the manufacturing state.
307#define LC_CTRL_MANUF_STATE_4_REG_OFFSET 0x7c
308#define LC_CTRL_MANUF_STATE_4_REG_RESVAL 0x0u
309
310// This is a 256bit field used for keeping track of the manufacturing state.
311#define LC_CTRL_MANUF_STATE_5_REG_OFFSET 0x80
312#define LC_CTRL_MANUF_STATE_5_REG_RESVAL 0x0u
313
314// This is a 256bit field used for keeping track of the manufacturing state.
315#define LC_CTRL_MANUF_STATE_6_REG_OFFSET 0x84
316#define LC_CTRL_MANUF_STATE_6_REG_RESVAL 0x0u
317
318// This is a 256bit field used for keeping track of the manufacturing state.
319#define LC_CTRL_MANUF_STATE_7_REG_OFFSET 0x88
320#define LC_CTRL_MANUF_STATE_7_REG_RESVAL 0x0u
321
322// Memory area: Access window to lc_ctrl CSRs and .
323#define LC_CTRL_DMI_REG_OFFSET 0x0
324#define LC_CTRL_DMI_SIZE_WORDS 1024
325#define LC_CTRL_DMI_SIZE_BYTES 4096
326#ifdef __cplusplus
327} // extern "C"
328#endif
329#endif // _LC_CTRL_REG_DEFS_
330// End generated register defines for lc_ctrl