Software APIs
clkmgr_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for clkmgr
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 _CLKMGR_REG_DEFS_
14#define _CLKMGR_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of clock groups
20#define CLKMGR_PARAM_NUM_GROUPS 7
21
22// Number of SW gateable clocks
23#define CLKMGR_PARAM_NUM_SW_GATEABLE_CLOCKS 4
24
25// Number of hintable clocks
26#define CLKMGR_PARAM_NUM_HINTABLE_CLOCKS 4
27
28// Number of alerts
29#define CLKMGR_PARAM_NUM_ALERTS 2
30
31// Register width
32#define CLKMGR_PARAM_REG_WIDTH 32
33
34// Alert Test Register
35#define CLKMGR_ALERT_TEST_REG_OFFSET 0x0
36#define CLKMGR_ALERT_TEST_REG_RESVAL 0x0u
37#define CLKMGR_ALERT_TEST_RECOV_FAULT_BIT 0
38#define CLKMGR_ALERT_TEST_FATAL_FAULT_BIT 1
39
40// External clock control write enable
41#define CLKMGR_EXTCLK_CTRL_REGWEN_REG_OFFSET 0x4
42#define CLKMGR_EXTCLK_CTRL_REGWEN_REG_RESVAL 0x1u
43#define CLKMGR_EXTCLK_CTRL_REGWEN_EN_BIT 0
44
45// Select external clock
46#define CLKMGR_EXTCLK_CTRL_REG_OFFSET 0x8
47#define CLKMGR_EXTCLK_CTRL_REG_RESVAL 0x99u
48#define CLKMGR_EXTCLK_CTRL_SEL_MASK 0xfu
49#define CLKMGR_EXTCLK_CTRL_SEL_OFFSET 0
50#define CLKMGR_EXTCLK_CTRL_SEL_FIELD \
51 ((bitfield_field32_t) { .mask = CLKMGR_EXTCLK_CTRL_SEL_MASK, .index = CLKMGR_EXTCLK_CTRL_SEL_OFFSET })
52#define CLKMGR_EXTCLK_CTRL_HI_SPEED_SEL_MASK 0xfu
53#define CLKMGR_EXTCLK_CTRL_HI_SPEED_SEL_OFFSET 4
54#define CLKMGR_EXTCLK_CTRL_HI_SPEED_SEL_FIELD \
55 ((bitfield_field32_t) { .mask = CLKMGR_EXTCLK_CTRL_HI_SPEED_SEL_MASK, .index = CLKMGR_EXTCLK_CTRL_HI_SPEED_SEL_OFFSET })
56
57// Status of requested external clock switch
58#define CLKMGR_EXTCLK_STATUS_REG_OFFSET 0xc
59#define CLKMGR_EXTCLK_STATUS_REG_RESVAL 0x9u
60#define CLKMGR_EXTCLK_STATUS_ACK_MASK 0xfu
61#define CLKMGR_EXTCLK_STATUS_ACK_OFFSET 0
62#define CLKMGR_EXTCLK_STATUS_ACK_FIELD \
63 ((bitfield_field32_t) { .mask = CLKMGR_EXTCLK_STATUS_ACK_MASK, .index = CLKMGR_EXTCLK_STATUS_ACK_OFFSET })
64
65// Jitter write enable
66#define CLKMGR_JITTER_REGWEN_REG_OFFSET 0x10
67#define CLKMGR_JITTER_REGWEN_REG_RESVAL 0x1u
68#define CLKMGR_JITTER_REGWEN_EN_BIT 0
69
70// Enable jittery clock
71#define CLKMGR_JITTER_ENABLE_REG_OFFSET 0x14
72#define CLKMGR_JITTER_ENABLE_REG_RESVAL 0x9u
73#define CLKMGR_JITTER_ENABLE_VAL_MASK 0xfu
74#define CLKMGR_JITTER_ENABLE_VAL_OFFSET 0
75#define CLKMGR_JITTER_ENABLE_VAL_FIELD \
76 ((bitfield_field32_t) { .mask = CLKMGR_JITTER_ENABLE_VAL_MASK, .index = CLKMGR_JITTER_ENABLE_VAL_OFFSET })
77
78// Clock enable for software gateable clocks.
79#define CLKMGR_CLK_ENABLES_REG_OFFSET 0x18
80#define CLKMGR_CLK_ENABLES_REG_RESVAL 0xfu
81#define CLKMGR_CLK_ENABLES_CLK_IO_DIV4_PERI_EN_BIT 0
82#define CLKMGR_CLK_ENABLES_CLK_IO_DIV2_PERI_EN_BIT 1
83#define CLKMGR_CLK_ENABLES_CLK_IO_PERI_EN_BIT 2
84#define CLKMGR_CLK_ENABLES_CLK_USB_PERI_EN_BIT 3
85
86// Clock hint for software gateable transactional clocks during active mode.
87#define CLKMGR_CLK_HINTS_REG_OFFSET 0x1c
88#define CLKMGR_CLK_HINTS_REG_RESVAL 0xfu
89#define CLKMGR_CLK_HINTS_CLK_MAIN_AES_HINT_BIT 0
90#define CLKMGR_CLK_HINTS_CLK_MAIN_HMAC_HINT_BIT 1
91#define CLKMGR_CLK_HINTS_CLK_MAIN_KMAC_HINT_BIT 2
92#define CLKMGR_CLK_HINTS_CLK_MAIN_OTBN_HINT_BIT 3
93
94// Since the final state of !!CLK_HINTS is not always determined by software,
95#define CLKMGR_CLK_HINTS_STATUS_REG_OFFSET 0x20
96#define CLKMGR_CLK_HINTS_STATUS_REG_RESVAL 0xfu
97#define CLKMGR_CLK_HINTS_STATUS_CLK_MAIN_AES_VAL_BIT 0
98#define CLKMGR_CLK_HINTS_STATUS_CLK_MAIN_HMAC_VAL_BIT 1
99#define CLKMGR_CLK_HINTS_STATUS_CLK_MAIN_KMAC_VAL_BIT 2
100#define CLKMGR_CLK_HINTS_STATUS_CLK_MAIN_OTBN_VAL_BIT 3
101
102// Measurement control write enable
103#define CLKMGR_MEASURE_CTRL_REGWEN_REG_OFFSET 0x24
104#define CLKMGR_MEASURE_CTRL_REGWEN_REG_RESVAL 0x1u
105#define CLKMGR_MEASURE_CTRL_REGWEN_EN_BIT 0
106
107// Enable for measurement control
108#define CLKMGR_IO_MEAS_CTRL_EN_REG_OFFSET 0x28
109#define CLKMGR_IO_MEAS_CTRL_EN_REG_RESVAL 0x9u
110#define CLKMGR_IO_MEAS_CTRL_EN_EN_MASK 0xfu
111#define CLKMGR_IO_MEAS_CTRL_EN_EN_OFFSET 0
112#define CLKMGR_IO_MEAS_CTRL_EN_EN_FIELD \
113 ((bitfield_field32_t) { .mask = CLKMGR_IO_MEAS_CTRL_EN_EN_MASK, .index = CLKMGR_IO_MEAS_CTRL_EN_EN_OFFSET })
114
115// Configuration controls for io measurement.
116#define CLKMGR_IO_MEAS_CTRL_SHADOWED_REG_OFFSET 0x2c
117#define CLKMGR_IO_MEAS_CTRL_SHADOWED_REG_RESVAL 0x759eau
118#define CLKMGR_IO_MEAS_CTRL_SHADOWED_HI_MASK 0x3ffu
119#define CLKMGR_IO_MEAS_CTRL_SHADOWED_HI_OFFSET 0
120#define CLKMGR_IO_MEAS_CTRL_SHADOWED_HI_FIELD \
121 ((bitfield_field32_t) { .mask = CLKMGR_IO_MEAS_CTRL_SHADOWED_HI_MASK, .index = CLKMGR_IO_MEAS_CTRL_SHADOWED_HI_OFFSET })
122#define CLKMGR_IO_MEAS_CTRL_SHADOWED_LO_MASK 0x3ffu
123#define CLKMGR_IO_MEAS_CTRL_SHADOWED_LO_OFFSET 10
124#define CLKMGR_IO_MEAS_CTRL_SHADOWED_LO_FIELD \
125 ((bitfield_field32_t) { .mask = CLKMGR_IO_MEAS_CTRL_SHADOWED_LO_MASK, .index = CLKMGR_IO_MEAS_CTRL_SHADOWED_LO_OFFSET })
126
127// Enable for measurement control
128#define CLKMGR_IO_DIV2_MEAS_CTRL_EN_REG_OFFSET 0x30
129#define CLKMGR_IO_DIV2_MEAS_CTRL_EN_REG_RESVAL 0x9u
130#define CLKMGR_IO_DIV2_MEAS_CTRL_EN_EN_MASK 0xfu
131#define CLKMGR_IO_DIV2_MEAS_CTRL_EN_EN_OFFSET 0
132#define CLKMGR_IO_DIV2_MEAS_CTRL_EN_EN_FIELD \
133 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV2_MEAS_CTRL_EN_EN_MASK, .index = CLKMGR_IO_DIV2_MEAS_CTRL_EN_EN_OFFSET })
134
135// Configuration controls for io_div2 measurement.
136#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_REG_OFFSET 0x34
137#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_REG_RESVAL 0x1ccfau
138#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_HI_MASK 0x1ffu
139#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_HI_OFFSET 0
140#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_HI_FIELD \
141 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_HI_MASK, .index = CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_HI_OFFSET })
142#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_LO_MASK 0x1ffu
143#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_LO_OFFSET 9
144#define CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_LO_FIELD \
145 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_LO_MASK, .index = CLKMGR_IO_DIV2_MEAS_CTRL_SHADOWED_LO_OFFSET })
146
147// Enable for measurement control
148#define CLKMGR_IO_DIV4_MEAS_CTRL_EN_REG_OFFSET 0x38
149#define CLKMGR_IO_DIV4_MEAS_CTRL_EN_REG_RESVAL 0x9u
150#define CLKMGR_IO_DIV4_MEAS_CTRL_EN_EN_MASK 0xfu
151#define CLKMGR_IO_DIV4_MEAS_CTRL_EN_EN_OFFSET 0
152#define CLKMGR_IO_DIV4_MEAS_CTRL_EN_EN_FIELD \
153 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV4_MEAS_CTRL_EN_EN_MASK, .index = CLKMGR_IO_DIV4_MEAS_CTRL_EN_EN_OFFSET })
154
155// Configuration controls for io_div4 measurement.
156#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_REG_OFFSET 0x3c
157#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_REG_RESVAL 0x6e82u
158#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_HI_MASK 0xffu
159#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_HI_OFFSET 0
160#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_HI_FIELD \
161 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_HI_MASK, .index = CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_HI_OFFSET })
162#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_LO_MASK 0xffu
163#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_LO_OFFSET 8
164#define CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_LO_FIELD \
165 ((bitfield_field32_t) { .mask = CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_LO_MASK, .index = CLKMGR_IO_DIV4_MEAS_CTRL_SHADOWED_LO_OFFSET })
166
167// Enable for measurement control
168#define CLKMGR_MAIN_MEAS_CTRL_EN_REG_OFFSET 0x40
169#define CLKMGR_MAIN_MEAS_CTRL_EN_REG_RESVAL 0x9u
170#define CLKMGR_MAIN_MEAS_CTRL_EN_EN_MASK 0xfu
171#define CLKMGR_MAIN_MEAS_CTRL_EN_EN_OFFSET 0
172#define CLKMGR_MAIN_MEAS_CTRL_EN_EN_FIELD \
173 ((bitfield_field32_t) { .mask = CLKMGR_MAIN_MEAS_CTRL_EN_EN_MASK, .index = CLKMGR_MAIN_MEAS_CTRL_EN_EN_OFFSET })
174
175// Configuration controls for main measurement.
176#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_REG_OFFSET 0x44
177#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_REG_RESVAL 0x7a9feu
178#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_HI_MASK 0x3ffu
179#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_HI_OFFSET 0
180#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_HI_FIELD \
181 ((bitfield_field32_t) { .mask = CLKMGR_MAIN_MEAS_CTRL_SHADOWED_HI_MASK, .index = CLKMGR_MAIN_MEAS_CTRL_SHADOWED_HI_OFFSET })
182#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_LO_MASK 0x3ffu
183#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_LO_OFFSET 10
184#define CLKMGR_MAIN_MEAS_CTRL_SHADOWED_LO_FIELD \
185 ((bitfield_field32_t) { .mask = CLKMGR_MAIN_MEAS_CTRL_SHADOWED_LO_MASK, .index = CLKMGR_MAIN_MEAS_CTRL_SHADOWED_LO_OFFSET })
186
187// Enable for measurement control
188#define CLKMGR_USB_MEAS_CTRL_EN_REG_OFFSET 0x48
189#define CLKMGR_USB_MEAS_CTRL_EN_REG_RESVAL 0x9u
190#define CLKMGR_USB_MEAS_CTRL_EN_EN_MASK 0xfu
191#define CLKMGR_USB_MEAS_CTRL_EN_EN_OFFSET 0
192#define CLKMGR_USB_MEAS_CTRL_EN_EN_FIELD \
193 ((bitfield_field32_t) { .mask = CLKMGR_USB_MEAS_CTRL_EN_EN_MASK, .index = CLKMGR_USB_MEAS_CTRL_EN_EN_OFFSET })
194
195// Configuration controls for usb measurement.
196#define CLKMGR_USB_MEAS_CTRL_SHADOWED_REG_OFFSET 0x4c
197#define CLKMGR_USB_MEAS_CTRL_SHADOWED_REG_RESVAL 0x1ccfau
198#define CLKMGR_USB_MEAS_CTRL_SHADOWED_HI_MASK 0x1ffu
199#define CLKMGR_USB_MEAS_CTRL_SHADOWED_HI_OFFSET 0
200#define CLKMGR_USB_MEAS_CTRL_SHADOWED_HI_FIELD \
201 ((bitfield_field32_t) { .mask = CLKMGR_USB_MEAS_CTRL_SHADOWED_HI_MASK, .index = CLKMGR_USB_MEAS_CTRL_SHADOWED_HI_OFFSET })
202#define CLKMGR_USB_MEAS_CTRL_SHADOWED_LO_MASK 0x1ffu
203#define CLKMGR_USB_MEAS_CTRL_SHADOWED_LO_OFFSET 9
204#define CLKMGR_USB_MEAS_CTRL_SHADOWED_LO_FIELD \
205 ((bitfield_field32_t) { .mask = CLKMGR_USB_MEAS_CTRL_SHADOWED_LO_MASK, .index = CLKMGR_USB_MEAS_CTRL_SHADOWED_LO_OFFSET })
206
207// Recoverable Error code
208#define CLKMGR_RECOV_ERR_CODE_REG_OFFSET 0x50
209#define CLKMGR_RECOV_ERR_CODE_REG_RESVAL 0x0u
210#define CLKMGR_RECOV_ERR_CODE_SHADOW_UPDATE_ERR_BIT 0
211#define CLKMGR_RECOV_ERR_CODE_IO_MEASURE_ERR_BIT 1
212#define CLKMGR_RECOV_ERR_CODE_IO_DIV2_MEASURE_ERR_BIT 2
213#define CLKMGR_RECOV_ERR_CODE_IO_DIV4_MEASURE_ERR_BIT 3
214#define CLKMGR_RECOV_ERR_CODE_MAIN_MEASURE_ERR_BIT 4
215#define CLKMGR_RECOV_ERR_CODE_USB_MEASURE_ERR_BIT 5
216#define CLKMGR_RECOV_ERR_CODE_IO_TIMEOUT_ERR_BIT 6
217#define CLKMGR_RECOV_ERR_CODE_IO_DIV2_TIMEOUT_ERR_BIT 7
218#define CLKMGR_RECOV_ERR_CODE_IO_DIV4_TIMEOUT_ERR_BIT 8
219#define CLKMGR_RECOV_ERR_CODE_MAIN_TIMEOUT_ERR_BIT 9
220#define CLKMGR_RECOV_ERR_CODE_USB_TIMEOUT_ERR_BIT 10
221
222// Error code
223#define CLKMGR_FATAL_ERR_CODE_REG_OFFSET 0x54
224#define CLKMGR_FATAL_ERR_CODE_REG_RESVAL 0x0u
225#define CLKMGR_FATAL_ERR_CODE_REG_INTG_BIT 0
226#define CLKMGR_FATAL_ERR_CODE_IDLE_CNT_BIT 1
227#define CLKMGR_FATAL_ERR_CODE_SHADOW_STORAGE_ERR_BIT 2
228
229#ifdef __cplusplus
230} // extern "C"
231#endif
232#endif // _CLKMGR_REG_DEFS_
233// End generated register defines for clkmgr