hpm_pcfg_regs.h 35 KB

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