HPM SDK
HPMicro Software Development Kit
hpm_pcfg_regs.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021-2024 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 
9 #ifndef HPM_PCFG_H
10 #define HPM_PCFG_H
11 
12 typedef struct {
13  __RW uint32_t BANDGAP; /* 0x0: BANGGAP control */
14  __RW uint32_t LDO1P1; /* 0x4: 1V LDO config */
15  __RW uint32_t LDO2P5; /* 0x8: 2.5V LDO config */
16  __R uint8_t RESERVED0[4]; /* 0xC - 0xF: Reserved */
17  __RW uint32_t DCDC_MODE; /* 0x10: DCDC mode select */
18  __RW uint32_t DCDC_LPMODE; /* 0x14: DCDC low power mode */
19  __RW uint32_t DCDC_PROT; /* 0x18: DCDC protection */
20  __RW uint32_t DCDC_CURRENT; /* 0x1C: DCDC current estimation */
21  __RW uint32_t DCDC_ADVMODE; /* 0x20: DCDC advance setting */
22  __RW uint32_t DCDC_ADVPARAM; /* 0x24: DCDC advance parameter */
23  __RW uint32_t DCDC_MISC; /* 0x28: DCDC misc parameter */
24  __RW uint32_t DCDC_DEBUG; /* 0x2C: DCDC Debug */
25  __RW uint32_t DCDC_START_TIME; /* 0x30: DCDC ramp time */
26  __RW uint32_t DCDC_RESUME_TIME; /* 0x34: DCDC resume time */
27  __R uint8_t RESERVED1[8]; /* 0x38 - 0x3F: Reserved */
28  __RW uint32_t POWER_TRAP; /* 0x40: SOC power trap */
29  __RW uint32_t WAKE_CAUSE; /* 0x44: Wake up source */
30  __RW uint32_t WAKE_MASK; /* 0x48: Wake up mask */
31  __RW uint32_t SCG_CTRL; /* 0x4C: Clock gate control in PMIC */
32  __RW uint32_t DEBUG_STOP; /* 0x50: Debug stop config */
33  __R uint8_t RESERVED2[12]; /* 0x54 - 0x5F: Reserved */
34  __RW uint32_t RC24M; /* 0x60: RC 24M config */
35  __RW uint32_t RC24M_TRACK; /* 0x64: RC 24M track mode */
36  __RW uint32_t TRACK_TARGET; /* 0x68: RC 24M track target */
37  __R uint32_t STATUS; /* 0x6C: RC 24M track status */
38 } PCFG_Type;
39 
40 
41 /* Bitfield definition for register: BANDGAP */
42 /*
43  * VBG_TRIMMED (RW)
44  *
45  * Bandgap trim happened, this bit set by hardware after trim value loaded, and stop load, write 0 will clear this bit and reload trim value
46  * 0: bandgap is not trimmed
47  * 1: bandgap is trimmed
48  */
49 #define PCFG_BANDGAP_VBG_TRIMMED_MASK (0x80000000UL)
50 #define PCFG_BANDGAP_VBG_TRIMMED_SHIFT (31U)
51 #define PCFG_BANDGAP_VBG_TRIMMED_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_VBG_TRIMMED_SHIFT) & PCFG_BANDGAP_VBG_TRIMMED_MASK)
52 #define PCFG_BANDGAP_VBG_TRIMMED_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_VBG_TRIMMED_MASK) >> PCFG_BANDGAP_VBG_TRIMMED_SHIFT)
53 
54 /*
55  * LOWPOWER_MODE (RW)
56  *
57  * Banggap work in low power mode, banggap function limited
58  * 0: banggap works in normal mode
59  * 1: banggap works in low power mode
60  */
61 #define PCFG_BANDGAP_LOWPOWER_MODE_MASK (0x2000000UL)
62 #define PCFG_BANDGAP_LOWPOWER_MODE_SHIFT (25U)
63 #define PCFG_BANDGAP_LOWPOWER_MODE_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_LOWPOWER_MODE_SHIFT) & PCFG_BANDGAP_LOWPOWER_MODE_MASK)
64 #define PCFG_BANDGAP_LOWPOWER_MODE_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_LOWPOWER_MODE_MASK) >> PCFG_BANDGAP_LOWPOWER_MODE_SHIFT)
65 
66 /*
67  * POWER_SAVE (RW)
68  *
69  * Banggap work in power save mode, banggap function normally
70  * 0: banggap works in high performance mode
71  * 1: banggap works in power saving mode
72  */
73 #define PCFG_BANDGAP_POWER_SAVE_MASK (0x1000000UL)
74 #define PCFG_BANDGAP_POWER_SAVE_SHIFT (24U)
75 #define PCFG_BANDGAP_POWER_SAVE_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_POWER_SAVE_SHIFT) & PCFG_BANDGAP_POWER_SAVE_MASK)
76 #define PCFG_BANDGAP_POWER_SAVE_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_POWER_SAVE_MASK) >> PCFG_BANDGAP_POWER_SAVE_SHIFT)
77 
78 /*
79  * VBG_1P0_TRIM (RW)
80  *
81  * Banggap 1.0V output trim value
82  */
83 #define PCFG_BANDGAP_VBG_1P0_TRIM_MASK (0x1F0000UL)
84 #define PCFG_BANDGAP_VBG_1P0_TRIM_SHIFT (16U)
85 #define PCFG_BANDGAP_VBG_1P0_TRIM_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_VBG_1P0_TRIM_SHIFT) & PCFG_BANDGAP_VBG_1P0_TRIM_MASK)
86 #define PCFG_BANDGAP_VBG_1P0_TRIM_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_VBG_1P0_TRIM_MASK) >> PCFG_BANDGAP_VBG_1P0_TRIM_SHIFT)
87 
88 /*
89  * VBG_P65_TRIM (RW)
90  *
91  * Banggap 1.0V output trim value
92  */
93 #define PCFG_BANDGAP_VBG_P65_TRIM_MASK (0x1F00U)
94 #define PCFG_BANDGAP_VBG_P65_TRIM_SHIFT (8U)
95 #define PCFG_BANDGAP_VBG_P65_TRIM_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_VBG_P65_TRIM_SHIFT) & PCFG_BANDGAP_VBG_P65_TRIM_MASK)
96 #define PCFG_BANDGAP_VBG_P65_TRIM_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_VBG_P65_TRIM_MASK) >> PCFG_BANDGAP_VBG_P65_TRIM_SHIFT)
97 
98 /*
99  * VBG_P50_TRIM (RW)
100  *
101  * Banggap 1.0V output trim value
102  */
103 #define PCFG_BANDGAP_VBG_P50_TRIM_MASK (0x1FU)
104 #define PCFG_BANDGAP_VBG_P50_TRIM_SHIFT (0U)
105 #define PCFG_BANDGAP_VBG_P50_TRIM_SET(x) (((uint32_t)(x) << PCFG_BANDGAP_VBG_P50_TRIM_SHIFT) & PCFG_BANDGAP_VBG_P50_TRIM_MASK)
106 #define PCFG_BANDGAP_VBG_P50_TRIM_GET(x) (((uint32_t)(x) & PCFG_BANDGAP_VBG_P50_TRIM_MASK) >> PCFG_BANDGAP_VBG_P50_TRIM_SHIFT)
107 
108 /* Bitfield definition for register: LDO1P1 */
109 /*
110  * VOLT (RW)
111  *
112  * LDO output voltage in mV, value valid through 700-1320, , step 20mV. Hardware select voltage no less than target if not on valid steps, with maximum 1320mV.
113  * 700: 700mV
114  * 720: 720mV
115  * . . .
116  * 1320:1320mV
117  */
118 #define PCFG_LDO1P1_VOLT_MASK (0xFFFU)
119 #define PCFG_LDO1P1_VOLT_SHIFT (0U)
120 #define PCFG_LDO1P1_VOLT_SET(x) (((uint32_t)(x) << PCFG_LDO1P1_VOLT_SHIFT) & PCFG_LDO1P1_VOLT_MASK)
121 #define PCFG_LDO1P1_VOLT_GET(x) (((uint32_t)(x) & PCFG_LDO1P1_VOLT_MASK) >> PCFG_LDO1P1_VOLT_SHIFT)
122 
123 /* Bitfield definition for register: LDO2P5 */
124 /*
125  * READY (RO)
126  *
127  * Ready flag, will set 1ms after enabled or voltage change
128  * 0: LDO is not ready for use
129  * 1: LDO is ready
130  */
131 #define PCFG_LDO2P5_READY_MASK (0x10000000UL)
132 #define PCFG_LDO2P5_READY_SHIFT (28U)
133 #define PCFG_LDO2P5_READY_GET(x) (((uint32_t)(x) & PCFG_LDO2P5_READY_MASK) >> PCFG_LDO2P5_READY_SHIFT)
134 
135 /*
136  * ENABLE (RW)
137  *
138  * LDO enable
139  * 0: turn off LDO
140  * 1: turn on LDO
141  */
142 #define PCFG_LDO2P5_ENABLE_MASK (0x10000UL)
143 #define PCFG_LDO2P5_ENABLE_SHIFT (16U)
144 #define PCFG_LDO2P5_ENABLE_SET(x) (((uint32_t)(x) << PCFG_LDO2P5_ENABLE_SHIFT) & PCFG_LDO2P5_ENABLE_MASK)
145 #define PCFG_LDO2P5_ENABLE_GET(x) (((uint32_t)(x) & PCFG_LDO2P5_ENABLE_MASK) >> PCFG_LDO2P5_ENABLE_SHIFT)
146 
147 /*
148  * VOLT (RW)
149  *
150  * LDO output voltage in mV, value valid through 2125-2900, step 25mV. Hardware select voltage no less than target if not on valid steps, with maximum 2900mV.
151  * 2125: 2125mV
152  * 2150: 2150mV
153  * . . .
154  * 2900:2900mV
155  */
156 #define PCFG_LDO2P5_VOLT_MASK (0xFFFU)
157 #define PCFG_LDO2P5_VOLT_SHIFT (0U)
158 #define PCFG_LDO2P5_VOLT_SET(x) (((uint32_t)(x) << PCFG_LDO2P5_VOLT_SHIFT) & PCFG_LDO2P5_VOLT_MASK)
159 #define PCFG_LDO2P5_VOLT_GET(x) (((uint32_t)(x) & PCFG_LDO2P5_VOLT_MASK) >> PCFG_LDO2P5_VOLT_SHIFT)
160 
161 /* Bitfield definition for register: DCDC_MODE */
162 /*
163  * READY (RO)
164  *
165  * Ready flag
166  * 0: DCDC is applying new change
167  * 1: DCDC is ready
168  */
169 #define PCFG_DCDC_MODE_READY_MASK (0x10000000UL)
170 #define PCFG_DCDC_MODE_READY_SHIFT (28U)
171 #define PCFG_DCDC_MODE_READY_GET(x) (((uint32_t)(x) & PCFG_DCDC_MODE_READY_MASK) >> PCFG_DCDC_MODE_READY_SHIFT)
172 
173 /*
174  * MODE (RW)
175  *
176  * DCDC work mode
177  * XX0: turn off
178  * 001: basic mode
179  * 011: generic mode
180  * 101: automatic mode
181  * 111: expert mode
182  */
183 #define PCFG_DCDC_MODE_MODE_MASK (0x70000UL)
184 #define PCFG_DCDC_MODE_MODE_SHIFT (16U)
185 #define PCFG_DCDC_MODE_MODE_SET(x) (((uint32_t)(x) << PCFG_DCDC_MODE_MODE_SHIFT) & PCFG_DCDC_MODE_MODE_MASK)
186 #define PCFG_DCDC_MODE_MODE_GET(x) (((uint32_t)(x) & PCFG_DCDC_MODE_MODE_MASK) >> PCFG_DCDC_MODE_MODE_SHIFT)
187 
188 /*
189  * VOLT (RW)
190  *
191  * DCDC voltage in mV in normal mode, value valid through 600-1375, , step 25mV. Hardware select voltage no less than target if not on valid steps, with maximum 1375mV.
192  * 600: 600mV
193  * 625: 625mV
194  * . . .
195  * 1375:1375mV
196  */
197 #define PCFG_DCDC_MODE_VOLT_MASK (0xFFFU)
198 #define PCFG_DCDC_MODE_VOLT_SHIFT (0U)
199 #define PCFG_DCDC_MODE_VOLT_SET(x) (((uint32_t)(x) << PCFG_DCDC_MODE_VOLT_SHIFT) & PCFG_DCDC_MODE_VOLT_MASK)
200 #define PCFG_DCDC_MODE_VOLT_GET(x) (((uint32_t)(x) & PCFG_DCDC_MODE_VOLT_MASK) >> PCFG_DCDC_MODE_VOLT_SHIFT)
201 
202 /* Bitfield definition for register: DCDC_LPMODE */
203 /*
204  * STBY_VOLT (RW)
205  *
206  * DCDC voltage in mV in standby mode, , value valid through 600-1375, , step 25mV. Hardware select voltage no less than target if not on valid steps, with maximum 1375mV.
207  * 600: 600mV
208  * 625: 625mV
209  * . . .
210  * 1375:1375mV
211  */
212 #define PCFG_DCDC_LPMODE_STBY_VOLT_MASK (0xFFFU)
213 #define PCFG_DCDC_LPMODE_STBY_VOLT_SHIFT (0U)
214 #define PCFG_DCDC_LPMODE_STBY_VOLT_SET(x) (((uint32_t)(x) << PCFG_DCDC_LPMODE_STBY_VOLT_SHIFT) & PCFG_DCDC_LPMODE_STBY_VOLT_MASK)
215 #define PCFG_DCDC_LPMODE_STBY_VOLT_GET(x) (((uint32_t)(x) & PCFG_DCDC_LPMODE_STBY_VOLT_MASK) >> PCFG_DCDC_LPMODE_STBY_VOLT_SHIFT)
216 
217 /* Bitfield definition for register: DCDC_PROT */
218 /*
219  * ILIMIT_LP (RW)
220  *
221  * over current setting for low power mode
222  * 0:250mA
223  * 1:200mA
224  */
225 #define PCFG_DCDC_PROT_ILIMIT_LP_MASK (0x10000000UL)
226 #define PCFG_DCDC_PROT_ILIMIT_LP_SHIFT (28U)
227 #define PCFG_DCDC_PROT_ILIMIT_LP_SET(x) (((uint32_t)(x) << PCFG_DCDC_PROT_ILIMIT_LP_SHIFT) & PCFG_DCDC_PROT_ILIMIT_LP_MASK)
228 #define PCFG_DCDC_PROT_ILIMIT_LP_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_ILIMIT_LP_MASK) >> PCFG_DCDC_PROT_ILIMIT_LP_SHIFT)
229 
230 /*
231  * OVERLOAD_LP (RO)
232  *
233  * over current in low power mode
234  * 0: current is below setting
235  * 1: overcurrent happened in low power mode
236  */
237 #define PCFG_DCDC_PROT_OVERLOAD_LP_MASK (0x1000000UL)
238 #define PCFG_DCDC_PROT_OVERLOAD_LP_SHIFT (24U)
239 #define PCFG_DCDC_PROT_OVERLOAD_LP_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_OVERLOAD_LP_MASK) >> PCFG_DCDC_PROT_OVERLOAD_LP_SHIFT)
240 
241 /*
242  * DISABLE_POWER_LOSS (RW)
243  *
244  * disable power loss protection
245  * 0: power loss protection enabled, DCDC shuts down when power loss
246  * 1: power loss protection disabled, DCDC try working after power voltage drop
247  */
248 #define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_MASK (0x800000UL)
249 #define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_SHIFT (23U)
250 #define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_SET(x) (((uint32_t)(x) << PCFG_DCDC_PROT_DISABLE_POWER_LOSS_SHIFT) & PCFG_DCDC_PROT_DISABLE_POWER_LOSS_MASK)
251 #define PCFG_DCDC_PROT_DISABLE_POWER_LOSS_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_DISABLE_POWER_LOSS_MASK) >> PCFG_DCDC_PROT_DISABLE_POWER_LOSS_SHIFT)
252 
253 /*
254  * POWER_LOSS_FLAG (RO)
255  *
256  * power loss
257  * 0: input power is good
258  * 1: input power is too low
259  */
260 #define PCFG_DCDC_PROT_POWER_LOSS_FLAG_MASK (0x10000UL)
261 #define PCFG_DCDC_PROT_POWER_LOSS_FLAG_SHIFT (16U)
262 #define PCFG_DCDC_PROT_POWER_LOSS_FLAG_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_POWER_LOSS_FLAG_MASK) >> PCFG_DCDC_PROT_POWER_LOSS_FLAG_SHIFT)
263 
264 /*
265  * DISABLE_OVERVOLTAGE (RW)
266  *
267  * output over voltage protection
268  * 0: protection enabled, DCDC will shut down is output voltage is unexpected high
269  * 1: protection disabled, DCDC continue to adjust output voltage
270  */
271 #define PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_MASK (0x8000U)
272 #define PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_SHIFT (15U)
273 #define PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_SET(x) (((uint32_t)(x) << PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_SHIFT) & PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_MASK)
274 #define PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_MASK) >> PCFG_DCDC_PROT_DISABLE_OVERVOLTAGE_SHIFT)
275 
276 /*
277  * OVERVOLT_FLAG (RO)
278  *
279  * output over voltage flag
280  * 0: output is normal
281  * 1: output is unexpected high
282  */
283 #define PCFG_DCDC_PROT_OVERVOLT_FLAG_MASK (0x100U)
284 #define PCFG_DCDC_PROT_OVERVOLT_FLAG_SHIFT (8U)
285 #define PCFG_DCDC_PROT_OVERVOLT_FLAG_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_OVERVOLT_FLAG_MASK) >> PCFG_DCDC_PROT_OVERVOLT_FLAG_SHIFT)
286 
287 /*
288  * DISABLE_SHORT (RW)
289  *
290  * disable output short circuit protection
291  * 0: short circuits protection enabled, DCDC shut down if short circuit on output detected
292  * 1: short circuit protection disabled
293  */
294 #define PCFG_DCDC_PROT_DISABLE_SHORT_MASK (0x80U)
295 #define PCFG_DCDC_PROT_DISABLE_SHORT_SHIFT (7U)
296 #define PCFG_DCDC_PROT_DISABLE_SHORT_SET(x) (((uint32_t)(x) << PCFG_DCDC_PROT_DISABLE_SHORT_SHIFT) & PCFG_DCDC_PROT_DISABLE_SHORT_MASK)
297 #define PCFG_DCDC_PROT_DISABLE_SHORT_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_DISABLE_SHORT_MASK) >> PCFG_DCDC_PROT_DISABLE_SHORT_SHIFT)
298 
299 /*
300  * SHORT_CURRENT (RW)
301  *
302  * short circuit current setting
303  * 0: 2.0A,
304  * 1: 1.3A
305  */
306 #define PCFG_DCDC_PROT_SHORT_CURRENT_MASK (0x10U)
307 #define PCFG_DCDC_PROT_SHORT_CURRENT_SHIFT (4U)
308 #define PCFG_DCDC_PROT_SHORT_CURRENT_SET(x) (((uint32_t)(x) << PCFG_DCDC_PROT_SHORT_CURRENT_SHIFT) & PCFG_DCDC_PROT_SHORT_CURRENT_MASK)
309 #define PCFG_DCDC_PROT_SHORT_CURRENT_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_SHORT_CURRENT_MASK) >> PCFG_DCDC_PROT_SHORT_CURRENT_SHIFT)
310 
311 /*
312  * SHORT_FLAG (RO)
313  *
314  * short circuit flag
315  * 0: current is within limit
316  * 1: short circuits detected
317  */
318 #define PCFG_DCDC_PROT_SHORT_FLAG_MASK (0x1U)
319 #define PCFG_DCDC_PROT_SHORT_FLAG_SHIFT (0U)
320 #define PCFG_DCDC_PROT_SHORT_FLAG_GET(x) (((uint32_t)(x) & PCFG_DCDC_PROT_SHORT_FLAG_MASK) >> PCFG_DCDC_PROT_SHORT_FLAG_SHIFT)
321 
322 /* Bitfield definition for register: DCDC_CURRENT */
323 /*
324  * ESTI_EN (RW)
325  *
326  * enable current measure
327  */
328 #define PCFG_DCDC_CURRENT_ESTI_EN_MASK (0x8000U)
329 #define PCFG_DCDC_CURRENT_ESTI_EN_SHIFT (15U)
330 #define PCFG_DCDC_CURRENT_ESTI_EN_SET(x) (((uint32_t)(x) << PCFG_DCDC_CURRENT_ESTI_EN_SHIFT) & PCFG_DCDC_CURRENT_ESTI_EN_MASK)
331 #define PCFG_DCDC_CURRENT_ESTI_EN_GET(x) (((uint32_t)(x) & PCFG_DCDC_CURRENT_ESTI_EN_MASK) >> PCFG_DCDC_CURRENT_ESTI_EN_SHIFT)
332 
333 /*
334  * VALID (RO)
335  *
336  * Current level valid
337  * 0: data is invalid
338  * 1: data is valid
339  */
340 #define PCFG_DCDC_CURRENT_VALID_MASK (0x100U)
341 #define PCFG_DCDC_CURRENT_VALID_SHIFT (8U)
342 #define PCFG_DCDC_CURRENT_VALID_GET(x) (((uint32_t)(x) & PCFG_DCDC_CURRENT_VALID_MASK) >> PCFG_DCDC_CURRENT_VALID_SHIFT)
343 
344 /*
345  * LEVEL (RO)
346  *
347  * DCDC current level, current level is num * 50mA
348  */
349 #define PCFG_DCDC_CURRENT_LEVEL_MASK (0x1FU)
350 #define PCFG_DCDC_CURRENT_LEVEL_SHIFT (0U)
351 #define PCFG_DCDC_CURRENT_LEVEL_GET(x) (((uint32_t)(x) & PCFG_DCDC_CURRENT_LEVEL_MASK) >> PCFG_DCDC_CURRENT_LEVEL_SHIFT)
352 
353 /* Bitfield definition for register: DCDC_ADVMODE */
354 /*
355  * EN_RCSCALE (RW)
356  *
357  * Enable RC scale
358  */
359 #define PCFG_DCDC_ADVMODE_EN_RCSCALE_MASK (0x7000000UL)
360 #define PCFG_DCDC_ADVMODE_EN_RCSCALE_SHIFT (24U)
361 #define PCFG_DCDC_ADVMODE_EN_RCSCALE_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_RCSCALE_SHIFT) & PCFG_DCDC_ADVMODE_EN_RCSCALE_MASK)
362 #define PCFG_DCDC_ADVMODE_EN_RCSCALE_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_RCSCALE_MASK) >> PCFG_DCDC_ADVMODE_EN_RCSCALE_SHIFT)
363 
364 /*
365  * DC_C (RW)
366  *
367  * Loop C number
368  */
369 #define PCFG_DCDC_ADVMODE_DC_C_MASK (0x300000UL)
370 #define PCFG_DCDC_ADVMODE_DC_C_SHIFT (20U)
371 #define PCFG_DCDC_ADVMODE_DC_C_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_DC_C_SHIFT) & PCFG_DCDC_ADVMODE_DC_C_MASK)
372 #define PCFG_DCDC_ADVMODE_DC_C_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_DC_C_MASK) >> PCFG_DCDC_ADVMODE_DC_C_SHIFT)
373 
374 /*
375  * DC_R (RW)
376  *
377  * Loop R number
378  */
379 #define PCFG_DCDC_ADVMODE_DC_R_MASK (0xF0000UL)
380 #define PCFG_DCDC_ADVMODE_DC_R_SHIFT (16U)
381 #define PCFG_DCDC_ADVMODE_DC_R_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_DC_R_SHIFT) & PCFG_DCDC_ADVMODE_DC_R_MASK)
382 #define PCFG_DCDC_ADVMODE_DC_R_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_DC_R_MASK) >> PCFG_DCDC_ADVMODE_DC_R_SHIFT)
383 
384 /*
385  * EN_FF_DET (RW)
386  *
387  * enable feed forward detect
388  * 0: feed forward detect is disabled
389  * 1: feed forward detect is enabled
390  */
391 #define PCFG_DCDC_ADVMODE_EN_FF_DET_MASK (0x40U)
392 #define PCFG_DCDC_ADVMODE_EN_FF_DET_SHIFT (6U)
393 #define PCFG_DCDC_ADVMODE_EN_FF_DET_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_FF_DET_SHIFT) & PCFG_DCDC_ADVMODE_EN_FF_DET_MASK)
394 #define PCFG_DCDC_ADVMODE_EN_FF_DET_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_FF_DET_MASK) >> PCFG_DCDC_ADVMODE_EN_FF_DET_SHIFT)
395 
396 /*
397  * EN_FF_LOOP (RW)
398  *
399  * enable feed forward loop
400  * 0: feed forward loop is disabled
401  * 1: feed forward loop is enabled
402  */
403 #define PCFG_DCDC_ADVMODE_EN_FF_LOOP_MASK (0x20U)
404 #define PCFG_DCDC_ADVMODE_EN_FF_LOOP_SHIFT (5U)
405 #define PCFG_DCDC_ADVMODE_EN_FF_LOOP_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_FF_LOOP_SHIFT) & PCFG_DCDC_ADVMODE_EN_FF_LOOP_MASK)
406 #define PCFG_DCDC_ADVMODE_EN_FF_LOOP_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_FF_LOOP_MASK) >> PCFG_DCDC_ADVMODE_EN_FF_LOOP_SHIFT)
407 
408 /*
409  * EN_DCM_EXIT (RW)
410  *
411  * avoid over voltage
412  * 0: stay in DCM mode when voltage excess
413  * 1: change to CCM mode when voltage excess
414  */
415 #define PCFG_DCDC_ADVMODE_EN_DCM_EXIT_MASK (0x8U)
416 #define PCFG_DCDC_ADVMODE_EN_DCM_EXIT_SHIFT (3U)
417 #define PCFG_DCDC_ADVMODE_EN_DCM_EXIT_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_DCM_EXIT_SHIFT) & PCFG_DCDC_ADVMODE_EN_DCM_EXIT_MASK)
418 #define PCFG_DCDC_ADVMODE_EN_DCM_EXIT_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_DCM_EXIT_MASK) >> PCFG_DCDC_ADVMODE_EN_DCM_EXIT_SHIFT)
419 
420 /*
421  * EN_SKIP (RW)
422  *
423  * enable skip on narrow pulse
424  * 0: do not skip narrow pulse
425  * 1: skip narrow pulse
426  */
427 #define PCFG_DCDC_ADVMODE_EN_SKIP_MASK (0x4U)
428 #define PCFG_DCDC_ADVMODE_EN_SKIP_SHIFT (2U)
429 #define PCFG_DCDC_ADVMODE_EN_SKIP_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_SKIP_SHIFT) & PCFG_DCDC_ADVMODE_EN_SKIP_MASK)
430 #define PCFG_DCDC_ADVMODE_EN_SKIP_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_SKIP_MASK) >> PCFG_DCDC_ADVMODE_EN_SKIP_SHIFT)
431 
432 /*
433  * EN_IDLE (RW)
434  *
435  * enable skip when voltage is higher than threshold
436  * 0: do not skip
437  * 1: skip if voltage is excess
438  */
439 #define PCFG_DCDC_ADVMODE_EN_IDLE_MASK (0x2U)
440 #define PCFG_DCDC_ADVMODE_EN_IDLE_SHIFT (1U)
441 #define PCFG_DCDC_ADVMODE_EN_IDLE_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_IDLE_SHIFT) & PCFG_DCDC_ADVMODE_EN_IDLE_MASK)
442 #define PCFG_DCDC_ADVMODE_EN_IDLE_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_IDLE_MASK) >> PCFG_DCDC_ADVMODE_EN_IDLE_SHIFT)
443 
444 /*
445  * EN_DCM (RW)
446  *
447  * DCM mode
448  * 0: CCM mode
449  * 1: DCM mode
450  */
451 #define PCFG_DCDC_ADVMODE_EN_DCM_MASK (0x1U)
452 #define PCFG_DCDC_ADVMODE_EN_DCM_SHIFT (0U)
453 #define PCFG_DCDC_ADVMODE_EN_DCM_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVMODE_EN_DCM_SHIFT) & PCFG_DCDC_ADVMODE_EN_DCM_MASK)
454 #define PCFG_DCDC_ADVMODE_EN_DCM_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVMODE_EN_DCM_MASK) >> PCFG_DCDC_ADVMODE_EN_DCM_SHIFT)
455 
456 /* Bitfield definition for register: DCDC_ADVPARAM */
457 /*
458  * MIN_DUT (RW)
459  *
460  * minimum duty cycle
461  */
462 #define PCFG_DCDC_ADVPARAM_MIN_DUT_MASK (0x7F00U)
463 #define PCFG_DCDC_ADVPARAM_MIN_DUT_SHIFT (8U)
464 #define PCFG_DCDC_ADVPARAM_MIN_DUT_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVPARAM_MIN_DUT_SHIFT) & PCFG_DCDC_ADVPARAM_MIN_DUT_MASK)
465 #define PCFG_DCDC_ADVPARAM_MIN_DUT_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVPARAM_MIN_DUT_MASK) >> PCFG_DCDC_ADVPARAM_MIN_DUT_SHIFT)
466 
467 /*
468  * MAX_DUT (RW)
469  *
470  * maximum duty cycle
471  */
472 #define PCFG_DCDC_ADVPARAM_MAX_DUT_MASK (0x7FU)
473 #define PCFG_DCDC_ADVPARAM_MAX_DUT_SHIFT (0U)
474 #define PCFG_DCDC_ADVPARAM_MAX_DUT_SET(x) (((uint32_t)(x) << PCFG_DCDC_ADVPARAM_MAX_DUT_SHIFT) & PCFG_DCDC_ADVPARAM_MAX_DUT_MASK)
475 #define PCFG_DCDC_ADVPARAM_MAX_DUT_GET(x) (((uint32_t)(x) & PCFG_DCDC_ADVPARAM_MAX_DUT_MASK) >> PCFG_DCDC_ADVPARAM_MAX_DUT_SHIFT)
476 
477 /* Bitfield definition for register: DCDC_MISC */
478 /*
479  * EN_HYST (RW)
480  *
481  * hysteres enable
482  */
483 #define PCFG_DCDC_MISC_EN_HYST_MASK (0x10000000UL)
484 #define PCFG_DCDC_MISC_EN_HYST_SHIFT (28U)
485 #define PCFG_DCDC_MISC_EN_HYST_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_EN_HYST_SHIFT) & PCFG_DCDC_MISC_EN_HYST_MASK)
486 #define PCFG_DCDC_MISC_EN_HYST_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_EN_HYST_MASK) >> PCFG_DCDC_MISC_EN_HYST_SHIFT)
487 
488 /*
489  * HYST_SIGN (RW)
490  *
491  * hysteres sign
492  */
493 #define PCFG_DCDC_MISC_HYST_SIGN_MASK (0x2000000UL)
494 #define PCFG_DCDC_MISC_HYST_SIGN_SHIFT (25U)
495 #define PCFG_DCDC_MISC_HYST_SIGN_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_HYST_SIGN_SHIFT) & PCFG_DCDC_MISC_HYST_SIGN_MASK)
496 #define PCFG_DCDC_MISC_HYST_SIGN_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_HYST_SIGN_MASK) >> PCFG_DCDC_MISC_HYST_SIGN_SHIFT)
497 
498 /*
499  * HYST_THRS (RW)
500  *
501  * hysteres threshold
502  */
503 #define PCFG_DCDC_MISC_HYST_THRS_MASK (0x1000000UL)
504 #define PCFG_DCDC_MISC_HYST_THRS_SHIFT (24U)
505 #define PCFG_DCDC_MISC_HYST_THRS_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_HYST_THRS_SHIFT) & PCFG_DCDC_MISC_HYST_THRS_MASK)
506 #define PCFG_DCDC_MISC_HYST_THRS_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_HYST_THRS_MASK) >> PCFG_DCDC_MISC_HYST_THRS_SHIFT)
507 
508 /*
509  * RC_SCALE (RW)
510  *
511  * Loop RC scale threshold
512  */
513 #define PCFG_DCDC_MISC_RC_SCALE_MASK (0x100000UL)
514 #define PCFG_DCDC_MISC_RC_SCALE_SHIFT (20U)
515 #define PCFG_DCDC_MISC_RC_SCALE_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_RC_SCALE_SHIFT) & PCFG_DCDC_MISC_RC_SCALE_MASK)
516 #define PCFG_DCDC_MISC_RC_SCALE_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_RC_SCALE_MASK) >> PCFG_DCDC_MISC_RC_SCALE_SHIFT)
517 
518 /*
519  * DC_FF (RW)
520  *
521  * Loop feed forward number
522  */
523 #define PCFG_DCDC_MISC_DC_FF_MASK (0x70000UL)
524 #define PCFG_DCDC_MISC_DC_FF_SHIFT (16U)
525 #define PCFG_DCDC_MISC_DC_FF_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_DC_FF_SHIFT) & PCFG_DCDC_MISC_DC_FF_MASK)
526 #define PCFG_DCDC_MISC_DC_FF_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_DC_FF_MASK) >> PCFG_DCDC_MISC_DC_FF_SHIFT)
527 
528 /*
529  * OL_THRE (RW)
530  *
531  * overload threshold in low power mode
532  */
533 #define PCFG_DCDC_MISC_OL_THRE_MASK (0x300U)
534 #define PCFG_DCDC_MISC_OL_THRE_SHIFT (8U)
535 #define PCFG_DCDC_MISC_OL_THRE_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_OL_THRE_SHIFT) & PCFG_DCDC_MISC_OL_THRE_MASK)
536 #define PCFG_DCDC_MISC_OL_THRE_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_OL_THRE_MASK) >> PCFG_DCDC_MISC_OL_THRE_SHIFT)
537 
538 /*
539  * OL_HYST (RW)
540  *
541  * voltage ripple threshold in low power mode
542  * 0: 12.5mV
543  * 1: 25mV
544  */
545 #define PCFG_DCDC_MISC_OL_HYST_MASK (0x10U)
546 #define PCFG_DCDC_MISC_OL_HYST_SHIFT (4U)
547 #define PCFG_DCDC_MISC_OL_HYST_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_OL_HYST_SHIFT) & PCFG_DCDC_MISC_OL_HYST_MASK)
548 #define PCFG_DCDC_MISC_OL_HYST_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_OL_HYST_MASK) >> PCFG_DCDC_MISC_OL_HYST_SHIFT)
549 
550 /*
551  * DELAY (RW)
552  *
553  * enable delay
554  * 0: delay disabled,
555  * 1: delay enabled
556  */
557 #define PCFG_DCDC_MISC_DELAY_MASK (0x4U)
558 #define PCFG_DCDC_MISC_DELAY_SHIFT (2U)
559 #define PCFG_DCDC_MISC_DELAY_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_DELAY_SHIFT) & PCFG_DCDC_MISC_DELAY_MASK)
560 #define PCFG_DCDC_MISC_DELAY_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_DELAY_MASK) >> PCFG_DCDC_MISC_DELAY_SHIFT)
561 
562 /*
563  * CLK_SEL (RW)
564  *
565  * clock selection
566  * 0: select DCDC internal oscillator
567  * 1: select RC24M oscillator
568  */
569 #define PCFG_DCDC_MISC_CLK_SEL_MASK (0x2U)
570 #define PCFG_DCDC_MISC_CLK_SEL_SHIFT (1U)
571 #define PCFG_DCDC_MISC_CLK_SEL_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_CLK_SEL_SHIFT) & PCFG_DCDC_MISC_CLK_SEL_MASK)
572 #define PCFG_DCDC_MISC_CLK_SEL_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_CLK_SEL_MASK) >> PCFG_DCDC_MISC_CLK_SEL_SHIFT)
573 
574 /*
575  * EN_STEP (RW)
576  *
577  * enable stepping in voltage change
578  * 0: stepping disabled,
579  * 1: steping enabled
580  */
581 #define PCFG_DCDC_MISC_EN_STEP_MASK (0x1U)
582 #define PCFG_DCDC_MISC_EN_STEP_SHIFT (0U)
583 #define PCFG_DCDC_MISC_EN_STEP_SET(x) (((uint32_t)(x) << PCFG_DCDC_MISC_EN_STEP_SHIFT) & PCFG_DCDC_MISC_EN_STEP_MASK)
584 #define PCFG_DCDC_MISC_EN_STEP_GET(x) (((uint32_t)(x) & PCFG_DCDC_MISC_EN_STEP_MASK) >> PCFG_DCDC_MISC_EN_STEP_SHIFT)
585 
586 /* Bitfield definition for register: DCDC_DEBUG */
587 /*
588  * UPDATE_TIME (RW)
589  *
590  * DCDC voltage change time in 24M clock cycles, default value is 1mS
591  */
592 #define PCFG_DCDC_DEBUG_UPDATE_TIME_MASK (0xFFFFFUL)
593 #define PCFG_DCDC_DEBUG_UPDATE_TIME_SHIFT (0U)
594 #define PCFG_DCDC_DEBUG_UPDATE_TIME_SET(x) (((uint32_t)(x) << PCFG_DCDC_DEBUG_UPDATE_TIME_SHIFT) & PCFG_DCDC_DEBUG_UPDATE_TIME_MASK)
595 #define PCFG_DCDC_DEBUG_UPDATE_TIME_GET(x) (((uint32_t)(x) & PCFG_DCDC_DEBUG_UPDATE_TIME_MASK) >> PCFG_DCDC_DEBUG_UPDATE_TIME_SHIFT)
596 
597 /* Bitfield definition for register: DCDC_START_TIME */
598 /*
599  * START_TIME (RW)
600  *
601  * Start delay for DCDC to turn on, in 24M clock cycles, default value is 3mS
602  */
603 #define PCFG_DCDC_START_TIME_START_TIME_MASK (0xFFFFFUL)
604 #define PCFG_DCDC_START_TIME_START_TIME_SHIFT (0U)
605 #define PCFG_DCDC_START_TIME_START_TIME_SET(x) (((uint32_t)(x) << PCFG_DCDC_START_TIME_START_TIME_SHIFT) & PCFG_DCDC_START_TIME_START_TIME_MASK)
606 #define PCFG_DCDC_START_TIME_START_TIME_GET(x) (((uint32_t)(x) & PCFG_DCDC_START_TIME_START_TIME_MASK) >> PCFG_DCDC_START_TIME_START_TIME_SHIFT)
607 
608 /* Bitfield definition for register: DCDC_RESUME_TIME */
609 /*
610  * RESUME_TIME (RW)
611  *
612  * Resume delay for DCDC to recover from low power mode, in 24M clock cycles, default value is 1.5mS
613  */
614 #define PCFG_DCDC_RESUME_TIME_RESUME_TIME_MASK (0xFFFFFUL)
615 #define PCFG_DCDC_RESUME_TIME_RESUME_TIME_SHIFT (0U)
616 #define PCFG_DCDC_RESUME_TIME_RESUME_TIME_SET(x) (((uint32_t)(x) << PCFG_DCDC_RESUME_TIME_RESUME_TIME_SHIFT) & PCFG_DCDC_RESUME_TIME_RESUME_TIME_MASK)
617 #define PCFG_DCDC_RESUME_TIME_RESUME_TIME_GET(x) (((uint32_t)(x) & PCFG_DCDC_RESUME_TIME_RESUME_TIME_MASK) >> PCFG_DCDC_RESUME_TIME_RESUME_TIME_SHIFT)
618 
619 /* Bitfield definition for register: POWER_TRAP */
620 /*
621  * TRIGGERED (RW)
622  *
623  * Low power trap status, thit bit will set when power related low power flow triggered, write 1 to clear this flag.
624  * 0: low power trap is not triggered
625  * 1: low power trap triggered
626  */
627 #define PCFG_POWER_TRAP_TRIGGERED_MASK (0x80000000UL)
628 #define PCFG_POWER_TRAP_TRIGGERED_SHIFT (31U)
629 #define PCFG_POWER_TRAP_TRIGGERED_SET(x) (((uint32_t)(x) << PCFG_POWER_TRAP_TRIGGERED_SHIFT) & PCFG_POWER_TRAP_TRIGGERED_MASK)
630 #define PCFG_POWER_TRAP_TRIGGERED_GET(x) (((uint32_t)(x) & PCFG_POWER_TRAP_TRIGGERED_MASK) >> PCFG_POWER_TRAP_TRIGGERED_SHIFT)
631 
632 /*
633  * RETENTION (RW)
634  *
635  * DCDC enter standby mode, which will reduce voltage for memory content retention
636  * 0: Shutdown DCDC
637  * 1: reduce DCDC voltage
638  */
639 #define PCFG_POWER_TRAP_RETENTION_MASK (0x10000UL)
640 #define PCFG_POWER_TRAP_RETENTION_SHIFT (16U)
641 #define PCFG_POWER_TRAP_RETENTION_SET(x) (((uint32_t)(x) << PCFG_POWER_TRAP_RETENTION_SHIFT) & PCFG_POWER_TRAP_RETENTION_MASK)
642 #define PCFG_POWER_TRAP_RETENTION_GET(x) (((uint32_t)(x) & PCFG_POWER_TRAP_RETENTION_MASK) >> PCFG_POWER_TRAP_RETENTION_SHIFT)
643 
644 /*
645  * TRAP (RW)
646  *
647  * Enable trap of SOC power supply, trap is used to hold SOC in low power mode for DCDC to enter further low power mode, this bit will self-clear when power related low pwer flow triggered
648  * 0: trap not enabled, pmic side low power function disabled
649  * 1: trap enabled, STOP operation leads to PMIC low power flow if SOC is not retentioned.
650  */
651 #define PCFG_POWER_TRAP_TRAP_MASK (0x1U)
652 #define PCFG_POWER_TRAP_TRAP_SHIFT (0U)
653 #define PCFG_POWER_TRAP_TRAP_SET(x) (((uint32_t)(x) << PCFG_POWER_TRAP_TRAP_SHIFT) & PCFG_POWER_TRAP_TRAP_MASK)
654 #define PCFG_POWER_TRAP_TRAP_GET(x) (((uint32_t)(x) & PCFG_POWER_TRAP_TRAP_MASK) >> PCFG_POWER_TRAP_TRAP_SHIFT)
655 
656 /* Bitfield definition for register: WAKE_CAUSE */
657 /*
658  * CAUSE (RW)
659  *
660  * wake up cause, each bit represents one wake up source, write 1 to clear the register bit
661  * 0: wake up source is not active during last wakeup
662  * 1: wake up source is active furing last wakeup
663  * bit 0: pmic_enable
664  * bit 1: debug wakeup
665  * bit 4: fuse interrupt
666  * bit 7: UART interrupt
667  * bit 8: TMR interrupt
668  * bit 9: WDG interrupt
669  * bit10: GPIO in PMIC interrupt
670  * bit11: Security monitor interrupt
671  * bit12: Security in PMIC event
672  * bit16: Security violation in BATT
673  * bit17: GPIO in BATT interrupt
674  * bit18: BATT Button interrupt
675  * bit19: RTC alarm interrupt
676  */
677 #define PCFG_WAKE_CAUSE_CAUSE_MASK (0xFFFFFFFFUL)
678 #define PCFG_WAKE_CAUSE_CAUSE_SHIFT (0U)
679 #define PCFG_WAKE_CAUSE_CAUSE_SET(x) (((uint32_t)(x) << PCFG_WAKE_CAUSE_CAUSE_SHIFT) & PCFG_WAKE_CAUSE_CAUSE_MASK)
680 #define PCFG_WAKE_CAUSE_CAUSE_GET(x) (((uint32_t)(x) & PCFG_WAKE_CAUSE_CAUSE_MASK) >> PCFG_WAKE_CAUSE_CAUSE_SHIFT)
681 
682 /* Bitfield definition for register: WAKE_MASK */
683 /*
684  * MASK (RW)
685  *
686  * mask for wake up sources, each bit represents one wakeup source
687  * 0: allow source to wake up system
688  * 1: disallow source to wakeup system
689  * bit 0: pmic_enable
690  * bit 1: debug wakeup
691  * bit 4: fuse interrupt
692  * bit 7: UART interrupt
693  * bit 8: TMR interrupt
694  * bit 9: WDG interrupt
695  * bit10: GPIO in PMIC interrupt
696  * bit11: Security monitor interrupt
697  * bit12: Security in PMIC event
698  * bit16: Security violation in BATT
699  * bit17: GPIO in BATT interrupt
700  * bit18: BATT Button interrupt
701  * bit19: RTC alarm interrupt
702  */
703 #define PCFG_WAKE_MASK_MASK_MASK (0xFFFFFFFFUL)
704 #define PCFG_WAKE_MASK_MASK_SHIFT (0U)
705 #define PCFG_WAKE_MASK_MASK_SET(x) (((uint32_t)(x) << PCFG_WAKE_MASK_MASK_SHIFT) & PCFG_WAKE_MASK_MASK_MASK)
706 #define PCFG_WAKE_MASK_MASK_GET(x) (((uint32_t)(x) & PCFG_WAKE_MASK_MASK_MASK) >> PCFG_WAKE_MASK_MASK_SHIFT)
707 
708 /* Bitfield definition for register: SCG_CTRL */
709 /*
710  * SCG (RW)
711  *
712  * control whether clock being gated during PMIC low power flow, 2 bits for each peripheral
713  * 00,01: reserved
714  * 10: clock is always off
715  * 11: clock is always on
716  * bit0-1: fuse
717  * bit6-7:gpio
718  * bit8-9:ioc
719  * bit10-11: timer
720  * bit12-13:wdog
721  * bit14-15:uart
722  * bit16-17:debug
723  */
724 #define PCFG_SCG_CTRL_SCG_MASK (0xFFFFFFFFUL)
725 #define PCFG_SCG_CTRL_SCG_SHIFT (0U)
726 #define PCFG_SCG_CTRL_SCG_SET(x) (((uint32_t)(x) << PCFG_SCG_CTRL_SCG_SHIFT) & PCFG_SCG_CTRL_SCG_MASK)
727 #define PCFG_SCG_CTRL_SCG_GET(x) (((uint32_t)(x) & PCFG_SCG_CTRL_SCG_MASK) >> PCFG_SCG_CTRL_SCG_SHIFT)
728 
729 /* Bitfield definition for register: DEBUG_STOP */
730 /*
731  * CPU1 (RW)
732  *
733  * Stop peripheral when CPU1 enter debug mode
734  * 0: peripheral keep running when CPU1 in debug mode
735  * 1: peripheral enter debug mode when CPU1 enter debug
736  */
737 #define PCFG_DEBUG_STOP_CPU1_MASK (0x2U)
738 #define PCFG_DEBUG_STOP_CPU1_SHIFT (1U)
739 #define PCFG_DEBUG_STOP_CPU1_SET(x) (((uint32_t)(x) << PCFG_DEBUG_STOP_CPU1_SHIFT) & PCFG_DEBUG_STOP_CPU1_MASK)
740 #define PCFG_DEBUG_STOP_CPU1_GET(x) (((uint32_t)(x) & PCFG_DEBUG_STOP_CPU1_MASK) >> PCFG_DEBUG_STOP_CPU1_SHIFT)
741 
742 /*
743  * CPU0 (RW)
744  *
745  * Stop peripheral when CPU0 enter debug mode
746  * 0: peripheral keep running when CPU0 in debug mode
747  * 1: peripheral enter debug mode when CPU0 enter debug
748  */
749 #define PCFG_DEBUG_STOP_CPU0_MASK (0x1U)
750 #define PCFG_DEBUG_STOP_CPU0_SHIFT (0U)
751 #define PCFG_DEBUG_STOP_CPU0_SET(x) (((uint32_t)(x) << PCFG_DEBUG_STOP_CPU0_SHIFT) & PCFG_DEBUG_STOP_CPU0_MASK)
752 #define PCFG_DEBUG_STOP_CPU0_GET(x) (((uint32_t)(x) & PCFG_DEBUG_STOP_CPU0_MASK) >> PCFG_DEBUG_STOP_CPU0_SHIFT)
753 
754 /* Bitfield definition for register: RC24M */
755 /*
756  * RC_TRIMMED (RW)
757  *
758  * RC24M trim happened, this bit set by hardware after trim value loaded, and stop load, write 0 will clear this bit and reload trim value
759  * 0: RC is not trimmed
760  * 1: RC is trimmed
761  */
762 #define PCFG_RC24M_RC_TRIMMED_MASK (0x80000000UL)
763 #define PCFG_RC24M_RC_TRIMMED_SHIFT (31U)
764 #define PCFG_RC24M_RC_TRIMMED_SET(x) (((uint32_t)(x) << PCFG_RC24M_RC_TRIMMED_SHIFT) & PCFG_RC24M_RC_TRIMMED_MASK)
765 #define PCFG_RC24M_RC_TRIMMED_GET(x) (((uint32_t)(x) & PCFG_RC24M_RC_TRIMMED_MASK) >> PCFG_RC24M_RC_TRIMMED_SHIFT)
766 
767 /*
768  * TRIM_C (RW)
769  *
770  * Coarse trim for RC24M, bigger value means faster
771  */
772 #define PCFG_RC24M_TRIM_C_MASK (0x700U)
773 #define PCFG_RC24M_TRIM_C_SHIFT (8U)
774 #define PCFG_RC24M_TRIM_C_SET(x) (((uint32_t)(x) << PCFG_RC24M_TRIM_C_SHIFT) & PCFG_RC24M_TRIM_C_MASK)
775 #define PCFG_RC24M_TRIM_C_GET(x) (((uint32_t)(x) & PCFG_RC24M_TRIM_C_MASK) >> PCFG_RC24M_TRIM_C_SHIFT)
776 
777 /*
778  * TRIM_F (RW)
779  *
780  * Fine trim for RC24M, bigger value means faster
781  */
782 #define PCFG_RC24M_TRIM_F_MASK (0x1FU)
783 #define PCFG_RC24M_TRIM_F_SHIFT (0U)
784 #define PCFG_RC24M_TRIM_F_SET(x) (((uint32_t)(x) << PCFG_RC24M_TRIM_F_SHIFT) & PCFG_RC24M_TRIM_F_MASK)
785 #define PCFG_RC24M_TRIM_F_GET(x) (((uint32_t)(x) & PCFG_RC24M_TRIM_F_MASK) >> PCFG_RC24M_TRIM_F_SHIFT)
786 
787 /* Bitfield definition for register: RC24M_TRACK */
788 /*
789  * SEL24M (RW)
790  *
791  * Select track reference
792  * 0: select 32K as reference
793  * 1: select 24M XTAL as reference
794  */
795 #define PCFG_RC24M_TRACK_SEL24M_MASK (0x10000UL)
796 #define PCFG_RC24M_TRACK_SEL24M_SHIFT (16U)
797 #define PCFG_RC24M_TRACK_SEL24M_SET(x) (((uint32_t)(x) << PCFG_RC24M_TRACK_SEL24M_SHIFT) & PCFG_RC24M_TRACK_SEL24M_MASK)
798 #define PCFG_RC24M_TRACK_SEL24M_GET(x) (((uint32_t)(x) & PCFG_RC24M_TRACK_SEL24M_MASK) >> PCFG_RC24M_TRACK_SEL24M_SHIFT)
799 
800 /*
801  * RETURN (RW)
802  *
803  * Retrun default value when XTAL loss
804  * 0: remain last tracking value
805  * 1: switch to default value
806  */
807 #define PCFG_RC24M_TRACK_RETURN_MASK (0x10U)
808 #define PCFG_RC24M_TRACK_RETURN_SHIFT (4U)
809 #define PCFG_RC24M_TRACK_RETURN_SET(x) (((uint32_t)(x) << PCFG_RC24M_TRACK_RETURN_SHIFT) & PCFG_RC24M_TRACK_RETURN_MASK)
810 #define PCFG_RC24M_TRACK_RETURN_GET(x) (((uint32_t)(x) & PCFG_RC24M_TRACK_RETURN_MASK) >> PCFG_RC24M_TRACK_RETURN_SHIFT)
811 
812 /*
813  * TRACK (RW)
814  *
815  * track mode
816  * 0: RC24M free running
817  * 1: track RC24M to external XTAL
818  */
819 #define PCFG_RC24M_TRACK_TRACK_MASK (0x1U)
820 #define PCFG_RC24M_TRACK_TRACK_SHIFT (0U)
821 #define PCFG_RC24M_TRACK_TRACK_SET(x) (((uint32_t)(x) << PCFG_RC24M_TRACK_TRACK_SHIFT) & PCFG_RC24M_TRACK_TRACK_MASK)
822 #define PCFG_RC24M_TRACK_TRACK_GET(x) (((uint32_t)(x) & PCFG_RC24M_TRACK_TRACK_MASK) >> PCFG_RC24M_TRACK_TRACK_SHIFT)
823 
824 /* Bitfield definition for register: TRACK_TARGET */
825 /*
826  * PRE_DIV (RW)
827  *
828  * Divider for reference source
829  */
830 #define PCFG_TRACK_TARGET_PRE_DIV_MASK (0xFFFF0000UL)
831 #define PCFG_TRACK_TARGET_PRE_DIV_SHIFT (16U)
832 #define PCFG_TRACK_TARGET_PRE_DIV_SET(x) (((uint32_t)(x) << PCFG_TRACK_TARGET_PRE_DIV_SHIFT) & PCFG_TRACK_TARGET_PRE_DIV_MASK)
833 #define PCFG_TRACK_TARGET_PRE_DIV_GET(x) (((uint32_t)(x) & PCFG_TRACK_TARGET_PRE_DIV_MASK) >> PCFG_TRACK_TARGET_PRE_DIV_SHIFT)
834 
835 /*
836  * TARGET (RW)
837  *
838  * Target frequency multiplier of divided source
839  */
840 #define PCFG_TRACK_TARGET_TARGET_MASK (0xFFFFU)
841 #define PCFG_TRACK_TARGET_TARGET_SHIFT (0U)
842 #define PCFG_TRACK_TARGET_TARGET_SET(x) (((uint32_t)(x) << PCFG_TRACK_TARGET_TARGET_SHIFT) & PCFG_TRACK_TARGET_TARGET_MASK)
843 #define PCFG_TRACK_TARGET_TARGET_GET(x) (((uint32_t)(x) & PCFG_TRACK_TARGET_TARGET_MASK) >> PCFG_TRACK_TARGET_TARGET_SHIFT)
844 
845 /* Bitfield definition for register: STATUS */
846 /*
847  * SEL32K (RO)
848  *
849  * track is using XTAL32K
850  * 0: track is not using XTAL32K
851  * 1: track is using XTAL32K
852  */
853 #define PCFG_STATUS_SEL32K_MASK (0x100000UL)
854 #define PCFG_STATUS_SEL32K_SHIFT (20U)
855 #define PCFG_STATUS_SEL32K_GET(x) (((uint32_t)(x) & PCFG_STATUS_SEL32K_MASK) >> PCFG_STATUS_SEL32K_SHIFT)
856 
857 /*
858  * SEL24M (RO)
859  *
860  * track is using XTAL24M
861  * 0: track is not using XTAL24M
862  * 1: track is using XTAL24M
863  */
864 #define PCFG_STATUS_SEL24M_MASK (0x10000UL)
865 #define PCFG_STATUS_SEL24M_SHIFT (16U)
866 #define PCFG_STATUS_SEL24M_GET(x) (((uint32_t)(x) & PCFG_STATUS_SEL24M_MASK) >> PCFG_STATUS_SEL24M_SHIFT)
867 
868 /*
869  * EN_TRIM (RO)
870  *
871  * default value takes effect
872  * 0: default value is invalid
873  * 1: default value is valid
874  */
875 #define PCFG_STATUS_EN_TRIM_MASK (0x8000U)
876 #define PCFG_STATUS_EN_TRIM_SHIFT (15U)
877 #define PCFG_STATUS_EN_TRIM_GET(x) (((uint32_t)(x) & PCFG_STATUS_EN_TRIM_MASK) >> PCFG_STATUS_EN_TRIM_SHIFT)
878 
879 /*
880  * TRIM_C (RO)
881  *
882  * default coarse trim value
883  */
884 #define PCFG_STATUS_TRIM_C_MASK (0x700U)
885 #define PCFG_STATUS_TRIM_C_SHIFT (8U)
886 #define PCFG_STATUS_TRIM_C_GET(x) (((uint32_t)(x) & PCFG_STATUS_TRIM_C_MASK) >> PCFG_STATUS_TRIM_C_SHIFT)
887 
888 /*
889  * TRIM_F (RO)
890  *
891  * default fine trim value
892  */
893 #define PCFG_STATUS_TRIM_F_MASK (0x1FU)
894 #define PCFG_STATUS_TRIM_F_SHIFT (0U)
895 #define PCFG_STATUS_TRIM_F_GET(x) (((uint32_t)(x) & PCFG_STATUS_TRIM_F_MASK) >> PCFG_STATUS_TRIM_F_SHIFT)
896 
897 
898 
899 
900 #endif /* HPM_PCFG_H */
Definition: hpm_pcfg_regs.h:12