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