fsl_pmu.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. /*
  2. * Copyright 2020-2021 NXP
  3. * All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-3-Clause
  6. */
  7. #ifndef _FSL_PMU_H_
  8. #define _FSL_PMU_H_
  9. #include "fsl_common.h"
  10. /*!
  11. * @addtogroup pmu
  12. * @{
  13. */
  14. /*******************************************************************************
  15. * Definitions
  16. ******************************************************************************/
  17. /*! @name Driver version
  18. * @{
  19. */
  20. /*! @brief PMU driver version */
  21. #define FSL_PMU_DRIVER_VERSION (MAKE_VERSION(2, 1, 0)) /*!< Version 2.1.0. */
  22. /*!
  23. * @}
  24. */
  25. #if defined(ANADIG_PMU_PMU_BIAS_CTRL2_FBB_M7_CONTROL_MODE_MASK)
  26. #define PMU_HAS_FBB (1U)
  27. #else
  28. #define PMU_HAS_FBB (0U)
  29. #endif /* ANADIG_PMU_PMU_BIAS_CTRL2_FBB_M7_CONTROL_MODE_MASK */
  30. /*!
  31. * @brief System setpoints enumeration.
  32. */
  33. enum _pmu_setpoint_map
  34. {
  35. kPMU_SetPoint0 = 1UL << 0UL, /*!< Set point 0. */
  36. kPMU_SetPoint1 = 1UL << 1UL, /*!< Set point 1. */
  37. kPMU_SetPoint2 = 1UL << 2UL, /*!< Set point 2. */
  38. kPMU_SetPoint3 = 1UL << 3UL, /*!< Set point 3. */
  39. kPMU_SetPoint4 = 1UL << 4UL, /*!< Set point 4. */
  40. kPMU_SetPoint5 = 1UL << 5UL, /*!< Set point 5. */
  41. kPMU_SetPoint6 = 1UL << 6UL, /*!< Set point 6. */
  42. kPMU_SetPoint7 = 1UL << 7UL, /*!< Set point 7. */
  43. kPMU_SetPoint8 = 1UL << 8UL, /*!< Set point 8. */
  44. kPMU_SetPoint9 = 1UL << 9UL, /*!< Set point 9. */
  45. kPMU_SetPoint10 = 1UL << 10UL, /*!< Set point 10. */
  46. kPMU_SetPoint11 = 1UL << 11UL, /*!< Set point 11. */
  47. kPMU_SetPoint12 = 1UL << 12UL, /*!< Set point 12. */
  48. kPMU_SetPoint13 = 1UL << 13UL, /*!< Set point 13. */
  49. kPMU_SetPoint14 = 1UL << 14UL, /*!< Set point 14. */
  50. kPMU_SetPoint15 = 1UL << 15UL /*!< Set point 15. */
  51. };
  52. /*!
  53. * @brief The name of LDOs
  54. */
  55. typedef enum _pmu_ldo_name
  56. {
  57. kPMU_PllLdo = 0U, /*!< The PLL LDO in SOC domain. */
  58. kPMU_LpsrAnaLdo = 1U, /*!< The LPSR ANA LDO in LPSR domain. */
  59. kPMU_LpsrDigLdo = 2U, /*!< The LPSR DIG LDO in LPSR domain. */
  60. kPMU_SnvsDigLdo = 3U /*!< The SNVS DIG LDO in SNVS domain. */
  61. } pmu_ldo_name_t;
  62. /*!
  63. * @brief The name of body bias.
  64. */
  65. typedef enum _pmu_body_bias_name
  66. {
  67. #if (defined(PMU_HAS_FBB) && PMU_HAS_FBB)
  68. kPMU_FBB_CM7 = 0x0U, /*!< The FBB implemented in Cortex-M7 Platform. */
  69. kPMU_RBB_SOC = 0x1U, /*!< The RBB implemented in SOC. */
  70. kPMU_RBB_LPSR = 0x2U, /*!< The RBB implemented in LPSRMIX. */
  71. #else
  72. kPMU_RBB_SOC = 0x0U, /*!< The RBB implemented in SOC. */
  73. kPMU_RBB_LPSR = 0x1U, /*!< The RBB implemented in LPSRMIX. */
  74. #endif /* PMU_HAS_FBB */
  75. } pmu_body_bias_name_t;
  76. /*!
  77. * @brief The control mode of LDOs/Bandgaps/Body Bias.
  78. */
  79. typedef enum _pmu_control_mode
  80. {
  81. kPMU_StaticMode = 0U, /*!< Static/Software Control mode. */
  82. kPMU_GPCMode = 1U, /*!< GPC/Hardware Control mode. */
  83. } pmu_control_mode_t;
  84. /*!
  85. * @brief The operation mode for the LDOs.
  86. */
  87. typedef enum _pmu_ldo_operate_mode
  88. {
  89. kPMU_LowPowerMode = 0x0U, /*!< LDOs operate in Low power mode. */
  90. kPMU_HighPowerMode = 0x1U, /*!< LDOs operate in High power mode. */
  91. } pmu_ldo_operate_mode_t;
  92. /*!
  93. * @brief The enumeration of LPSR ANA LDO's charge pump current.
  94. */
  95. typedef enum _pmu_lpsr_ana_ldo_charge_pump_current
  96. {
  97. kPMU_LpsrAnaChargePump300nA = 0U, /*!< The current of the charge pump is selected as 300nA. */
  98. kPMU_LpsrAnaChargePump400nA = 1U, /*!< The current of the charge pump is selected as 400nA. */
  99. kPMU_LpsrAnaChargePump500nA = 2U, /*!< The current of the charge pump is selected as 500nA. */
  100. kPMU_LpsrAnaChargePump600nA = 3U, /*!< The current of the charge pump is selected as 600nA. */
  101. } pmu_lpsr_ana_ldo_charge_pump_current_t;
  102. /*!
  103. * @brief The enumeration of LPSR ANA LDO's output range.
  104. */
  105. typedef enum _pmu_lpsr_ana_ldo_output_range
  106. {
  107. kPMU_LpsrAnaLdoOutputFrom1P77To1P83 = 0U, /*!< The output voltage varies from 1.77V to 1.83V. */
  108. kPMU_LpsrAnaLdoOutputFrom1P72To1P77 = 1U, /*!< The output voltage varies from 1.72V to 1.77V. */
  109. kPMU_LpsrAnaLdoOutputFrom1P82To1P88 = 2U, /*!< The output voltage varies from 1.82V to 1.88V. */
  110. } pmu_lpsr_ana_ldo_output_range_t;
  111. /*!
  112. * @brief The enumeration of voltage step time for LPSR DIG LDO.
  113. */
  114. typedef enum _pmu_lpsr_dig_voltage_step_time
  115. {
  116. kPMU_LpsrDigVoltageStepInc15us = 0x0U, /*!< LPSR DIG LDO voltage step time selected as 15us. */
  117. kPMU_LpsrDigVoltageStepInc25us = 0x1U, /*!< LPSR DIG LDO voltage step time selected as 25us. */
  118. kPMU_LpsrDigVoltageStepInc50us = 0x2U, /*!< LPSR DIG LDO voltage step time selected as 50us. */
  119. kPMU_LpsrDigVoltageStepInc100us = 0x3U, /*!< LPSR DIG LDO voltage step time selected as 100us. */
  120. } pmu_lpsr_dig_voltage_step_time_t;
  121. /*!
  122. * @brief The target output voltage of LPSR DIG LDO.
  123. */
  124. typedef enum _pmu_lpsr_dig_target_output_voltage
  125. {
  126. kPMU_LpsrDigTargetStableVoltage0P631V = 0x0U, /*!< The target voltage selected as 0.631V */
  127. kPMU_LpsrDigTargetStableVoltage0P65V = 0x1U, /*!< The target voltage selected as 0.65V */
  128. kPMU_LpsrDigTargetStableVoltage0P67V = 0x2U, /*!< The target voltage selected as 0.67V */
  129. kPMU_LpsrDigTargetStableVoltage0P689V = 0x3U, /*!< The target voltage selected as 0.689V */
  130. kPMU_LpsrDigTargetStableVoltage0P709V = 0x4U, /*!< The target voltage selected as 0.709V */
  131. kPMU_LpsrDigTargetStableVoltage0P728V = 0x5U, /*!< The target voltage selected as 0.728V */
  132. kPMU_LpsrDigTargetStableVoltage0P748V = 0x6U, /*!< The target voltage selected as 0.748V */
  133. kPMU_LpsrDigTargetStableVoltage0P767V = 0x7U, /*!< The target voltage selected as 0.767V */
  134. kPMU_LpsrDigTargetStableVoltage0P786V = 0x8U, /*!< The target voltage selected as 0.786V */
  135. kPMU_LpsrDigTargetStableVoltage0P806V = 0x9U, /*!< The target voltage selected as 0.806V */
  136. kPMU_LpsrDigTargetStableVoltage0P825V = 0xAU, /*!< The target voltage selected as 0.825V */
  137. kPMU_LpsrDigTargetStableVoltage0P845V = 0xBU, /*!< The target voltage selected as 0.845V */
  138. kPMU_LpsrDigTargetStableVoltage0P864V = 0xCU, /*!< The target voltage selected as 0.864V */
  139. kPMU_LpsrDigTargetStableVoltage0P883V = 0xDU, /*!< The target voltage selected as 0.883V */
  140. kPMU_LpsrDigTargetStableVoltage0P903V = 0xEU, /*!< The target voltage selected as 0.903V */
  141. kPMU_LpsrDigTargetStableVoltage0P922V = 0xFU, /*!< The target voltage selected as 0.922V */
  142. kPMU_LpsrDigTargetStableVoltage0P942V = 0x10U, /*!< The target voltage selected as 0.942V */
  143. kPMU_LpsrDigTargetStableVoltage0P961V = 0x11U, /*!< The target voltage selected as 0.961V */
  144. kPMU_LpsrDigTargetStableVoltage0P981V = 0x12U, /*!< The target voltage selected as 0.981V */
  145. kPMU_LpsrDigTargetStableVoltage1P0V = 0x13U, /*!< The target voltage selected as 1.0V */
  146. kPMU_LpsrDigTargetStableVoltage1P019V = 0x14U, /*!< The target voltage selected as 1.019V */
  147. kPMU_LpsrDigTargetStableVoltage1P039V = 0x15U, /*!< The target voltage selected as 1.039V */
  148. kPMU_LpsrDigTargetStableVoltage1P058V = 0x16U, /*!< The target voltage selected as 1.058V */
  149. kPMU_LpsrDigTargetStableVoltage1P078V = 0x17U, /*!< The target voltage selected as 1.078V */
  150. kPMU_LpsrDigTargetStableVoltage1P097V = 0x18U, /*!< The target voltage selected as 1.097V */
  151. kPMU_LpsrDigTargetStableVoltage1P117V = 0x19U, /*!< The target voltage selected as 1.117V */
  152. kPMU_LpsrDigTargetStableVoltage1P136V = 0x1AU, /*!< The target voltage selected as 1.136V */
  153. kPMU_LpsrDigTargetStableVoltage1P155V = 0x1BU, /*!< The target voltage selected as 1.155V */
  154. kPMU_LpsrDigTargetStableVoltage1P175V = 0x1CU, /*!< The target voltage selected as 1.175V */
  155. kPMU_LpsrDigTargetStableVoltage1P194V = 0x1DU, /*!< The target voltage selected as 1.194V */
  156. kPMU_LpsrDigTargetStableVoltage1P214V = 0x1EU, /*!< The target voltage selected as 1.214V */
  157. kPMU_LpsrDigTargetStableVoltage1P233V = 0x1FU, /*!< The target voltage selected as 1.233V */
  158. } pmu_lpsr_dig_target_output_voltage_t;
  159. /*!
  160. * @brief The enumeration of the SNVS DIG LDO's charge pump current.
  161. */
  162. typedef enum _pmu_snvs_dig_charge_pump_current
  163. {
  164. kPMU_SnvsDigChargePump12P5nA = 0U, /*!< The current of SNVS DIG LDO's charge pump is selected as 12.5nA. */
  165. kPMU_SnvsDigChargePump6P25nA = 1U, /*!< The current of SNVS DIG LDO's charge pump is selected as 6.25nA. */
  166. kPMU_SnvsDigChargePump18P75nA = 2U, /*!< The current of SNVS DIG LDO's charge pump is selected as 18.75nA. */
  167. } pmu_snvs_dig_charge_pump_current_t;
  168. /*!
  169. * @brief The enumeration of the SNVS DIG LDO's discharge resistor.
  170. */
  171. typedef enum _pmu_snvs_dig_discharge_resistor_value
  172. {
  173. kPMU_SnvsDigDischargeResistor15K = 0U, /*!< The Discharge Resistor is selected as 15K ohm */
  174. kPMU_SnvsDigDischargeResistor30K = 1U, /*!< The Discharge Resistor is selected as 30K ohm */
  175. kPMU_SnvsDigDischargeResistor9K = 2U, /*!< The Discharge Resistor is selected as 9K ohm */
  176. } pmu_snvs_dig_discharge_resistor_value_t;
  177. /*!
  178. * @brief The enumeration of bandgap power down option.
  179. */
  180. enum _pmu_static_bandgap_power_down_option
  181. {
  182. kPMU_PowerDownBandgapFully = 1U << 0U, /*!< Fully power down the bandgap module. */
  183. kPMU_PowerDownVoltageReferenceOutputOnly = 1U << 1U, /*!< Power down only the reference output
  184. section of the bandgap */
  185. kPMU_PowerDownBandgapVBGUPDetector = 1U << 2U, /*!< Power down the VBGUP detector of the bandgap without
  186. affecting any additional functionality. */
  187. };
  188. /*!
  189. * @brief The enumeration of output VBG voltage.
  190. */
  191. typedef enum _pmu_bandgap_output_VBG_voltage_value
  192. {
  193. kPMU_BandgapOutputVBGVoltageNominal = 0x0U, /*!< Output nominal voltage. */
  194. kPMU_BandgapOutputVBGVoltagePlus10mV = 0x1U, /*!< Output VBG voltage Plus 10mV. */
  195. kPMU_BandgapOutputVBGVoltagePlus20mV = 0x2U, /*!< Output VBG voltage Plus 20mV. */
  196. kPMU_BandgapOutputVBGVoltagePlus30mV = 0x3U, /*!< Output VBG voltage Plus 30mV. */
  197. kPMU_BandgapOutputVBGVoltageMinus10mV = 0x4U, /*!< Output VBG voltage Minus 10mV. */
  198. kPMU_BandgapOutputVBGVoltageMinus20mV = 0x5U, /*!< Output VBG voltage Minus 20mV. */
  199. kPMU_BandgapOutputVBGVoltageMinus30mV = 0x6U, /*!< Output VBG voltage Minus 30mV. */
  200. kPMU_BandgapOutputVBGVoltageMinus40mV = 0x7U, /*!< Output VBG voltage Minus 40mV. */
  201. } pmu_bandgap_output_VBG_voltage_value_t;
  202. /*!
  203. * @brief The enumeration of output current.
  204. */
  205. typedef enum _pmu_bandgap_output_current_value
  206. {
  207. kPMU_OutputCurrent11P5uA = 0x0U, /*!< Output 11.5uA current from the bandgap. */
  208. kPMU_OutputCurrent11P8uA = 0x1U, /*!< Output 11.8uA current from the bandgap. */
  209. kPMU_OutputCurrent12P1uA = 0x2U, /*!< Output 12.1uA current from the bandgap. */
  210. kPMU_OutputCurrent12P4uA = 0x4U, /*!< Output 12.4uA current from the bandgap. */
  211. kPMU_OutputCurrent12P7uA = 0x5U, /*!< Output 12.7uA current from the bandgap. */
  212. kPMU_OutputCurrent13P0uA = 0x6U, /*!< Output 13.0uA current from the bandgap. */
  213. kPMU_OutputCurrent13P3uA = 0x7U, /*!< Output 13.3uA current from the bandgap. */
  214. } pmu_bandgap_output_current_value_t;
  215. /*!
  216. * @brief The enumerator of well bias power source.
  217. */
  218. typedef enum _pmu_well_bias_power_source
  219. {
  220. kPMU_WellBiasPowerFromLpsrDigLdo = 0U, /*!< LPSR Dig LDO supplies the power stage and NWELL sampler. */
  221. kPMU_WellBiasPowerFromDCDC, /*!< DCDC supplies the power stage and NWELL sampler. */
  222. } pmu_well_bias_power_source_t;
  223. /*!
  224. * @brief The enumerator of bias area size.
  225. */
  226. typedef enum _pmu_bias_area_size
  227. {
  228. kPMU_180uA_6mm2At125C = 0U, /*!< Imax = 180uA; Areamax-RVT = 6.00mm2 at 125C */
  229. kPMU_150uA_5mm2At125C, /*!< Imax = 150uA; Areamax-RVT = 5.00mm2 at 125C */
  230. kPMU_120uA_4mm2At125C, /*!< Imax = 120uA; Areamax-RVT = 4.00mm2 at 125C */
  231. kPMU_90uA_3mm2At125C, /*!< Imax = 90uA; Areamax-RVT = 3.00mm2 at 125C */
  232. kPMU_60uA_2mm2At125C, /*!< Imax = 60uA; Areamax-RVT = 2.00mm2 at 125C */
  233. kPMU_45uA_1P5mm2At125C, /*!< Imax = 45uA; Areamax-RVT = 1P5mm2 at 125C */
  234. kPMU_30uA_1mm2At125C, /*!< Imax = 30uA; Areamax-RVT = 1.00mm2 at 125C */
  235. kPMU_15uA_0P5mm2At125C, /*!< Imax = 15uA; Areamax-RVT = 0.50mm2 at 125C */
  236. } pmu_bias_area_size_t;
  237. /*!
  238. * @brief The enumerator of well bias typical frequency.
  239. */
  240. typedef enum _pmu_well_bias_typical_freq
  241. {
  242. kPMU_OscFreqDiv128 = 0U, /*!< Typical frequency = osc_freq / 128. */
  243. kPMU_OscFreqDiv64 = 1U, /*!< Typical frequency = osc_freq / 64. */
  244. kPMU_OscFreqDiv32 = 2U, /*!< Typical frequency = osc_freq / 32. */
  245. kPMU_OscFreqDiv16 = 3U, /*!< Typical frequency = osc_freq / 16. */
  246. kPMU_OscFreqDiv8 = 4U, /*!< Typical frequency = osc_freq / 8. */
  247. kPMU_OscFreqDiv2 = 6U, /*!< Typical frequency = osc_freq / 2. */
  248. kPMU_OscFreq = 7U, /*!< Typical frequency = oscillator frequency. */
  249. } pmu_well_bias_typical_freq_t;
  250. /*!
  251. * @brief The enumerator of well bias adaptive clock source.
  252. */
  253. typedef enum _pmu_adaptive_clock_source
  254. {
  255. kPMU_AdaptiveClkSourceOscClk = 0U, /*!< The adaptive clock source is oscillator clock. */
  256. kPMU_AdaptiveClkSourceChargePumpClk, /*!< The adaptive clock source is charge pump clock. */
  257. } pmu_adaptive_clock_source_t;
  258. /*!
  259. * @brief The enumerator of frequency reduction due to cap increment.
  260. */
  261. typedef enum _pmu_freq_reduction
  262. {
  263. kPMU_FreqReductionNone = 0U, /*!< No frequency reduction. */
  264. kPMU_FreqReduction30PCT, /*!< 30% frequency reduction due to cap increment. */
  265. kPMU_FreqReduction40PCT, /*!< 40% frequency reduction due to cap increment. */
  266. kPMU_FreqReduction50PCT, /*!< 50% frequency reduction due to cap increment. */
  267. } pmu_freq_reduction_t;
  268. /*!
  269. * @brief The enumerator of well bias 1P8 adjustment.
  270. */
  271. typedef enum _pmu_well_bias_1P8_adjustment
  272. {
  273. kPMU_Cref0fFCspl0fFDeltaC0fF = 0U, /*!< Cref = 0fF, Cspl = 0fF, DeltaC = 0fF. */
  274. kPMU_Cref0fFCspl30fFDeltaCN30fF, /*!< Cref = 0fF, Cspl = 30fF, DeltaC = -30fF. */
  275. kPMU_Cref0fFCspl43fFDeltaCN43fF, /*!< Cref = 0fF, Cspl = 43fF, DeltaC = -43fF. */
  276. kPMU_Cref0fFCspl62fFDeltaCN62fF, /*!< Cref = 0fF, Cspl = 62fF, DeltaC = -62fF. */
  277. kPMU_Cref0fFCspl105fFDeltaCN105fF, /*!< Cref = 0fF, Cspl = 105fF, DeltaC = -105fF. */
  278. kPMU_Cref30fFCspl0fFDeltaC30fF, /*!< Cref = 30fF, Cspl = 0fF, DeltaC = 30fF. */
  279. kPMU_Cref30fFCspl43fFDeltaCN12fF, /*!< Cref = 30fF, Cspl = 43fF, DeltaC = -12fF. */
  280. kPMU_Cref30fFCspl105fFDeltaCN75fF, /*!< Cref = 30fF, Cspl = 105fF, DeltaC = -75fF. */
  281. kPMU_Cref43fFCspl0fFDeltaC43fF, /*!< Cref = 43fF, Cspl = 0fF, DeltaC = 43fF. */
  282. kPMU_Cref43fFCspl30fFDeltaC13fF, /*!< Cref = 43fF, Cspl = 30fF, DeltaC = 13fF. */
  283. kPMU_Cref43fFCspl62fFDeltaCN19fF, /*!< Cref = 43fF, Cspl = 62fF, DeltaC = -19fF. */
  284. kPMU_Cref62fFCspl0fFDeltaC62fF, /*!< Cref = 62fF, Cspl = 0fF, DeltaC = 62fF. */
  285. kPMU_Cref62fFCspl43fFDeltaC19fF, /*!< Cref = 62fF, Cspl = 43fF, DeltaC = 19fF. */
  286. kPMU_Cref105fFCspl0fFDeltaC105fF, /*!< Cref = 105fF, Cspl = 0fF, DeltaC = 105fF. */
  287. kPMU_Cref105fFCspl30fFDeltaC75fF, /*!< Cref = 105fF, Cspl = 30fF, DeltaC = 75fF. */
  288. } pmu_well_bias_1P8_adjustment_t;
  289. /*!
  290. * @brief LPSR ANA LDO config.
  291. */
  292. typedef struct _pmu_static_lpsr_ana_ldo_config
  293. {
  294. pmu_ldo_operate_mode_t mode; /*!< The operate mode of LPSR ANA LDO. */
  295. bool enable2mALoad; /*!< Enable/Disable 2mA load.
  296. - \b true Enables 2mA loading to prevent overshoot;
  297. - \b false Disables 2mA loading.*/
  298. bool enable4mALoad; /*!< Enable/Disable 4mA load.
  299. - \b true Enables 4mA loading to prevent dramatic voltage drop;
  300. - \b false Disables 4mA load. */
  301. bool enable20uALoad; /*!< Enable/Disable 20uA load.
  302. - \b true Enables 20uA loading to prevent overshoot;
  303. - \b false Disables 20uA load. */
  304. bool enableStandbyMode; /*!< Enable/Disable Standby Mode.
  305. - \b true Enables Standby mode, if the STBY assert, the LPSR ANA LDO enter LP mode
  306. - \b false Disables Standby mode. */
  307. } pmu_static_lpsr_ana_ldo_config_t;
  308. /*!
  309. * @brief LPSR DIG LDO Config in Static/Software Mode.
  310. */
  311. typedef struct _pmu_static_lpsr_dig_config
  312. {
  313. bool enableStableDetect; /*!< Enable/Disable Stable Detect.
  314. - \b true Enables Stable Detect.
  315. - \b false Disables Stable Detect. */
  316. pmu_lpsr_dig_voltage_step_time_t voltageStepTime; /*!< Step time. */
  317. pmu_lpsr_dig_target_output_voltage_t targetVoltage; /*!< The target output voltage. */
  318. } pmu_static_lpsr_dig_config_t;
  319. /*!
  320. * @brief SNVS DIG LDO config.
  321. */
  322. typedef struct _pmu_snvs_dig_config
  323. {
  324. pmu_ldo_operate_mode_t mode; /*!< The operate mode the SNVS DIG LDO. */
  325. pmu_snvs_dig_charge_pump_current_t chargePumpCurrent; /*!< The current of SNVS DIG LDO's charge pump current. */
  326. pmu_snvs_dig_discharge_resistor_value_t dischargeResistorValue; /*!< The value of SNVS DIG LDO's
  327. Discharge Resistor. */
  328. uint8_t trimValue; /*!< The trim value. */
  329. bool enablePullDown; /*!< Enable/Disable Pull down.
  330. - \b true Enables the feature of using 1M ohm resistor to discharge the LDO output.
  331. - \b false Disables the feature of using 1M ohm resistor to discharge the LDO output. */
  332. bool enableLdoStable; /*!< Enable/Disable SNVS DIG LDO Stable. */
  333. } pmu_snvs_dig_config_t;
  334. /*!
  335. * @brief Bandgap config in static mode.
  336. */
  337. typedef struct _pmu_static_bandgap_config
  338. {
  339. uint8_t powerDownOption; /*!< The OR'ed value of @ref _pmu_static_bandgap_power_down_option. Please refer to @ref
  340. _pmu_static_bandgap_power_down_option. */
  341. bool enableLowPowerMode; /*!< Turn on/off the Low power mode.
  342. - \b true Turns on the low power operation of the bandgap.
  343. - \b false Turns off the low power operation of the bandgap. */
  344. pmu_bandgap_output_VBG_voltage_value_t outputVoltage; /*!< The output VBG voltage of Bandgap. */
  345. pmu_bandgap_output_current_value_t outputCurrent; /*!< The output current from the bandgap to
  346. the temperature sensors. */
  347. } pmu_static_bandgap_config_t;
  348. /*!
  349. * @brief The union of well bias basic options, such as clock source, power source and so on.
  350. */
  351. typedef union _pmu_well_bias_option
  352. {
  353. uint16_t wellBiasData; /*!< well bias configuration data. */
  354. struct
  355. {
  356. uint16_t enablePWellOnly : 1U; /*!< Turn on both PWELL and NWELL, or only trun on PWELL.
  357. - \b 1b0 PWELL and NEWLL are both turned on.
  358. - \b 1b1 PWELL is turned on only. */
  359. uint16_t reserved1 : 1U; /*!< Reserved. */
  360. uint16_t biasAreaSize : 3U; /*!< Select size of bias area, please refer to @ref pmu_bias_area_size_t */
  361. uint16_t disableAdaptiveFreq : 1U; /*!< Enable/Disable adaptive frequency.
  362. - \b 1b0 Frequency change after each half cycle minimum frequency
  363. determined by typical frequency.
  364. - \b 1b1 Adaptive frequency disabled. Frequency determined by typical
  365. frequency. */
  366. uint16_t wellBiasFreq : 3U; /*!< Set well bias typical frequency, please refer to @ref
  367. pmu_well_bias_typical_freq_t. */
  368. uint16_t clkSource : 1U; /*!< Config the adaptive clock source, please @ref pmu_adaptive_clock_source_t. */
  369. uint16_t freqReduction : 2U; /*!< Config the percent of frequency reduction due to cap increment,
  370. please refer to @ref pmu_freq_reduction_t. */
  371. uint16_t enablePowerDownOption : 1U; /*!< Enable/Disable pull down option.
  372. - \b false Pull down option is disabled.
  373. - \b true Pull down option is enabled. */
  374. uint16_t reserved2 : 1U; /*!< Reserved. */
  375. uint16_t powerSource : 1U; /*!< Set power source, please refer to @ref pmu_well_bias_power_source_t. */
  376. uint16_t reserved3 : 1U; /*!< Reserved. */
  377. } wellBiasStruct;
  378. } pmu_well_bias_option_t;
  379. /*!
  380. * @brief The structure of well bias configuration.
  381. */
  382. typedef struct _pmu_well_bias_config
  383. {
  384. pmu_well_bias_option_t wellBiasOption; /*!< Well bias basic function, please
  385. refer to @ref pmu_well_bias_option_t. */
  386. pmu_well_bias_1P8_adjustment_t adjustment; /*!< Well bias adjustment 1P8, please
  387. refer to @ref pmu_well_bias_1P8_adjustment_t. */
  388. } pmu_well_bias_config_t;
  389. /*!
  390. * @brief The stucture of body bias config in GPC mode.
  391. */
  392. typedef struct _pmu_gpc_body_bias_config
  393. {
  394. uint8_t PWELLRegulatorSize; /*!< The size of the PWELL Regulator. */
  395. uint8_t NWELLRegulatorSize; /*!< The size of the NWELL Regulator. */
  396. uint8_t oscillatorSize; /*!< The size of the oscillator bits. */
  397. uint8_t regulatorStrength; /*!< The strength of the selected regulator. */
  398. } pmu_gpc_body_bias_config_t;
  399. /*******************************************************************************
  400. * API
  401. ******************************************************************************/
  402. #if defined(__cplusplus)
  403. extern "C" {
  404. #endif
  405. /*!
  406. * @name LDOs Control APIs
  407. * @{
  408. */
  409. /*!
  410. * @brief Selects the control mode of the PLL LDO.
  411. *
  412. * @param base PMU peripheral base address.
  413. * @param mode The control mode of the PLL LDO. Please refer to @ref pmu_control_mode_t.
  414. */
  415. void PMU_SetPllLdoControlMode(ANADIG_PMU_Type *base, pmu_control_mode_t mode);
  416. /*!
  417. * @brief Switches the PLL LDO from Static/Software Mode to GPC/Hardware Mode.
  418. *
  419. * @param base PMU peripheral base address.
  420. */
  421. void PMU_SwitchPllLdoToGPCMode(ANADIG_PMU_Type *base);
  422. /*!
  423. * @brief Enables PLL LDO via AI interface in Static/Software mode.
  424. *
  425. * @param base PMU peripheral base address.
  426. */
  427. void PMU_StaticEnablePllLdo(ANADIG_PMU_Type *base);
  428. /*!
  429. * @brief Disables PLL LDO via AI interface in Static/Software mode.
  430. */
  431. void PMU_StaticDisablePllLdo(void);
  432. /*!
  433. * @brief Selects the control mode of the LPSR ANA LDO.
  434. *
  435. * @param base PMU peripheral base address.
  436. * @param mode The control mode of the LPSR ANA LDO. Please refer to @ref pmu_control_mode_t.
  437. */
  438. void PMU_SetLpsrAnaLdoControlMode(ANADIG_LDO_SNVS_Type *base, pmu_control_mode_t mode);
  439. /*!
  440. * @brief Sets the Bypass mode of the LPSR ANA LDO.
  441. *
  442. * @param base ANADIG_LDO_SNVS peripheral base address.
  443. * @param enable Enable/Disable bypass mode.
  444. * - \b true Enable LPSR ANA Bypass mode.
  445. * - \b false Disable LPSR ANA Bypass mode.
  446. */
  447. void PMU_StaticEnableLpsrAnaLdoBypassMode(ANADIG_LDO_SNVS_Type *base, bool enable);
  448. /*!
  449. * @brief Checks whether the LPSR ANA LDO is in bypass mode.
  450. *
  451. * @param base ANADIG_LDO_SNVS peripheral base address.
  452. * @return The result used to indicates whether the LPSR ANA LDO is in bypass mode.
  453. * - \b true The LPSR ANA LDO is in bypass mode.
  454. * - \b false The LPSR ANA LDO not in bypass mode.
  455. */
  456. static inline bool PMU_StaticCheckLpsrAnaLdoBypassMode(ANADIG_LDO_SNVS_Type *base)
  457. {
  458. return ((ANADIG_LDO_SNVS->PMU_LDO_LPSR_ANA & ANADIG_LDO_SNVS_PMU_LDO_LPSR_ANA_BYPASS_MODE_EN_MASK) != 0UL);
  459. }
  460. /*!
  461. * @brief Fill the LPSR ANA LDO configuration structure with default settings.
  462. *
  463. * The default values are:
  464. * @code
  465. * config->mode = kPMU_HighPowerMode;
  466. config->enable2mALoad = true;
  467. config->enable20uALoad = false;
  468. config->enable4mALoad = true;
  469. config->enableStandbyMode = false;
  470. config->driverStrength = kPMU_LpsrAnaLdoDriverStrength0;
  471. config->brownOutDetectorConfig = kPMU_LpsrAnaLdoBrownOutDetectorDisable;
  472. config->chargePumpCurrent = kPMU_LpsrAnaChargePump300nA;
  473. config->outputRange = kPMU_LpsrAnaLdoOutputFrom1P77To1P83;
  474. * @endcode
  475. *
  476. * @param config Pointer to the structure @ref pmu_static_lpsr_ana_ldo_config_t.
  477. */
  478. void PMU_StaticGetLpsrAnaLdoDefaultConfig(pmu_static_lpsr_ana_ldo_config_t *config);
  479. /*!
  480. * @brief Initialize the LPSR ANA LDO in Static/Sofware Mode.
  481. *
  482. * @param base ANADIG_LDO_SNVS peripheral base address.
  483. * @param config Pointer to the structure @ref pmu_static_lpsr_ana_ldo_config_t.
  484. */
  485. void PMU_StaticLpsrAnaLdoInit(ANADIG_LDO_SNVS_Type *base, const pmu_static_lpsr_ana_ldo_config_t *config);
  486. /*!
  487. * @brief Disable the output of LPSR ANA LDO.
  488. *
  489. * @param base ANADIG_LDO_SNVS peripheral base address.
  490. */
  491. void PMU_StaticLpsrAnaLdoDeinit(ANADIG_LDO_SNVS_Type *base);
  492. /*!
  493. * @brief Selects the control mode of the LPSR DIG LDO.
  494. *
  495. * @param base PMU peripheral base address.
  496. * @param mode The control mode of the LPSR DIG LDO. Please refer to @ref pmu_control_mode_t.
  497. */
  498. void PMU_SetLpsrDigLdoControlMode(ANADIG_LDO_SNVS_Type *base, pmu_control_mode_t mode);
  499. /*!
  500. * @brief Turn on/off Bypass mode of the LPSR DIG LDO in Static/Software mode.
  501. *
  502. * @param base ANADIG_LDO_SNVS peripheral base address.
  503. * @param enable
  504. * - \b true Turns on Bypass mode of the LPSR DIG LDO.
  505. * - \b false Turns off Bypass mode of the LPSR DIG LDO.
  506. */
  507. void PMU_StaticEnableLpsrDigLdoBypassMode(ANADIG_LDO_SNVS_Type *base, bool enable);
  508. /*!
  509. * @brief Checks whether the LPSR DIG LDO is in bypass mode.
  510. *
  511. * @param base PMU peripheral base address.
  512. * @return The result used to indicates whether the LPSR DIG LDO is in bypass mode.
  513. * - \b true The LPSR DIG LDO is in bypass mode.
  514. * - \b false The LPSR DIG LDO not in bypass mode.
  515. */
  516. static inline bool PMU_StaticCheckLpsrDigLdoBypassMode(ANADIG_LDO_SNVS_Type *base)
  517. {
  518. return ((ANADIG_LDO_SNVS->PMU_LDO_LPSR_DIG & ANADIG_LDO_SNVS_PMU_LDO_LPSR_DIG_BYPASS_MODE_MASK) != 0UL);
  519. }
  520. /*!
  521. * @brief Gets the default configuration of LPSR DIG LDO.
  522. *
  523. * The default values are:
  524. * @code
  525. * config->enableStableDetect = false;
  526. * config->voltageStepTime = kPMU_LpsrDigVoltageStepInc50us;
  527. * config->brownOutConfig = kPMU_LpsrDigBrownOutDisable;
  528. * config->targetVoltage = kPMU_LpsrDigTargetStableVoltage1P0V;
  529. * config->mode = kPMU_HighPowerMode;
  530. * @endcode
  531. * @param config Pointer to the structure @ref pmu_static_lpsr_dig_config_t.
  532. */
  533. void PMU_StaticGetLpsrDigLdoDefaultConfig(pmu_static_lpsr_dig_config_t *config);
  534. /*!
  535. * @brief Initialize the LPSR DIG LDO in static mode.
  536. *
  537. * @param base ANADIG_LDO_SNVS peripheral base address.
  538. * @param config Pointer to the structure @ref pmu_static_lpsr_dig_config_t.
  539. */
  540. void PMU_StaticLpsrDigLdoInit(ANADIG_LDO_SNVS_Type *base, const pmu_static_lpsr_dig_config_t *config);
  541. /*!
  542. * @brief Disable the LPSR DIG LDO.
  543. *
  544. * @param base ANADIG_LDO_SNVS peripheral base address.
  545. */
  546. void PMU_StaticLpsrDigLdoDeinit(ANADIG_LDO_SNVS_Type *base);
  547. /*!
  548. * @brief Sets the voltage step of LPSR DIG LDO in certain setpoint during GPC mode.
  549. *
  550. * @note The function provides the feature to set the voltage step to different setpoints.
  551. *
  552. * @param setpointMap The map of setpoints should be the OR'ed Value of @ref _pmu_setpoint_map.
  553. * @param voltageValue The voltage step to be set. See enumeration @ref pmu_lpsr_dig_target_output_voltage_t.
  554. */
  555. void PMU_GPCSetLpsrDigLdoTargetVoltage(uint32_t setpointMap, pmu_lpsr_dig_target_output_voltage_t voltageValue);
  556. /*!
  557. * @brief Gets the default config of the SNVS DIG LDO.
  558. *
  559. * The default values are:
  560. * @code
  561. * config->mode = kPMU_LowPowerMode;
  562. * config->chargePumpCurrent = kPMU_SnvsDigChargePump12P5nA;
  563. * config->dischargeResistorValue = kPMU_SnvsDigDischargeResistor15K;
  564. * config->trimValue = 0U;
  565. * config->enablePullDown = true;
  566. * config->enableLdoStable = false;
  567. * @endcode
  568. *
  569. * @param config Pointer to @ref pmu_snvs_dig_config_t.
  570. */
  571. void PMU_GetSnvsDigLdoDefaultConfig(pmu_snvs_dig_config_t *config);
  572. /*!
  573. * @brief Initialize the SNVS DIG LDO.
  574. *
  575. * @param base LDO SNVS DIG peripheral base address.
  576. * @param mode Used to control LDO power mode, please refer to @ref pmu_ldo_operate_mode_t.
  577. */
  578. void PMU_SnvsDigLdoInit(ANADIG_LDO_SNVS_DIG_Type *base, pmu_ldo_operate_mode_t mode);
  579. /*!
  580. * @brief Disable SNVS DIG LDO.
  581. */
  582. static inline void PMU_SnvsDigLdoDeinit(ANADIG_LDO_SNVS_DIG_Type *base)
  583. {
  584. base->PMU_LDO_SNVS_DIG &= ~ANADIG_LDO_SNVS_DIG_PMU_LDO_SNVS_DIG_REG_EN_MASK;
  585. }
  586. /*!
  587. * @brief Controls the ON/OFF of the selected LDO in certain setpoints with GPC mode.
  588. *
  589. * @param name The name of the selected ldo. Please see enumeration @ref pmu_ldo_name_t for details.
  590. * @param setpointMap The map of setpoints should be the OR'ed Value of @ref _pmu_setpoint_map, 1b'1
  591. * means enable specific ldo in that setpoint.
  592. * For example, the code PMU_GPCEnableLdo(kPMU_PllLdo, 0x1U) means to enable PLL LDO in setpoint 0 and disable
  593. * PLL LDO in other setpoint.
  594. */
  595. void PMU_GPCEnableLdo(pmu_ldo_name_t name, uint32_t setpointMap);
  596. /*!
  597. * @brief Sets the operating mode of the selected LDO in certain setpoints with GPC mode.
  598. *
  599. * @param name The name of the selected ldo. Please see enumeration @ref pmu_ldo_name_t for details.
  600. * @param setpointMap The map of setpoints should be the OR'ed Value of @ref _pmu_setpoint_map.
  601. * @param mode The operating mode of the selected ldo. Please refer to enumeration @ref pmu_ldo_operate_mode_t for
  602. * details.
  603. */
  604. void PMU_GPCSetLdoOperateMode(pmu_ldo_name_t name, uint32_t setpointMap, pmu_ldo_operate_mode_t mode);
  605. /*!
  606. * @brief Controls the ON/OFF of the selected LDOs' Tracking mode in certain setpoints with GPC mode.
  607. *
  608. * @param name The name of the selected ldo. Please see enumeration @ref pmu_ldo_name_t for details.
  609. * @param setpointMap The map of setpoints that the LDO tracking mode will be enabled in those setpoints, this value
  610. * should be the OR'ed Value of @ref _pmu_setpoint_map.
  611. */
  612. void PMU_GPCEnableLdoTrackingMode(pmu_ldo_name_t name, uint32_t setpointMap);
  613. /*!
  614. * @brief Controls the ON/OFF of the selected LDOs' Bypass mode in certain setpoints with GPC mode.
  615. *
  616. * @param name The name of the selected ldo. Please see enumeration @ref pmu_ldo_name_t for details.
  617. * @param setpointMap The map of setpoints that the LDO bypass mode will be enabled in those setpoints, this value
  618. * should be the OR'ed Value of @ref _pmu_setpoint_map.
  619. */
  620. void PMU_GPCEnableLdoBypassMode(pmu_ldo_name_t name, uint32_t setpointMap);
  621. /*!
  622. * @brief When STBY assert, enable/disable the selected LDO enter it's Low power mode.
  623. *
  624. * @param name The name of the selected ldo. Please see enumeration @ref pmu_ldo_name_t for details.
  625. * @param setpointMap The map of setpoints that the LDO low power mode will be enabled in those setpoints if STBY
  626. * assert, this value should be the OR'ed Value of @ref _pmu_setpoint_map.
  627. */
  628. void PMU_GPCEnableLdoStandbyMode(pmu_ldo_name_t name, uint32_t setpointMap);
  629. /*!
  630. * @}
  631. */
  632. /*!
  633. * @name Bandgap Control APIs
  634. * @{
  635. */
  636. /*!
  637. * @brief Selects the control mode of the Bandgap Reference.
  638. *
  639. * @param base PMU peripheral base address.
  640. * @param mode The control mode of the Bandgap Reference. Please refer to @ref pmu_control_mode_t.
  641. */
  642. void PMU_SetBandgapControlMode(ANADIG_PMU_Type *base, pmu_control_mode_t mode);
  643. /*!
  644. * @brief Switches the Bandgap from Static/Software Mode to GPC/Hardware Mode.
  645. *
  646. * @param base PMU peripheral base address.
  647. */
  648. void PMU_SwitchBandgapToGPCMode(ANADIG_PMU_Type *base);
  649. /*!
  650. * @brief Disables Bandgap self bias for best noise performance.
  651. *
  652. * This function should be invoked after powering up. This function will wait for the bandgap stable and disable the
  653. * bandgap self bias. After powering up, it need to wait for the bandgap to get stable and then disable Bandgap Self
  654. * bias for best noise performance.
  655. */
  656. void PMU_DisableBandgapSelfBiasAfterPowerUp(void);
  657. /*!
  658. * @brief Enables Bandgap self bias before power down.
  659. *
  660. * This function will enable Bandgap self bias feature before powering down or there
  661. * will be risk of Bandgap not starting properly.
  662. */
  663. void PMU_EnableBandgapSelfBiasBeforePowerDown(void);
  664. /*!
  665. * @brief Initialize Bandgap.
  666. *
  667. * @param config Pointer to the structure @ref pmu_static_bandgap_config_t.
  668. */
  669. void PMU_StaticBandgapInit(const pmu_static_bandgap_config_t *config);
  670. /*!
  671. * @brief Controls the ON/OFF of the Bandgap in certain setpoints with GPC mode.
  672. *
  673. * For example, the code PMU_GPCEnableBandgap(PMU, kPMU_SetPoint0 | kPMU_SetPoint1); means enable bandgap in
  674. * setpoint0 and setpoint1 and disable bandgap in other setpoints.
  675. *
  676. * @param base PMU peripheral base address.
  677. * @param setpointMap The map of setpoints that the bandgap will be enabled in those setpoints, this parameter
  678. * should be the OR'ed Value of @ref _pmu_setpoint_map.
  679. */
  680. static inline void PMU_GPCEnableBandgap(ANADIG_PMU_Type *base, uint32_t setpointMap)
  681. {
  682. base->BANDGAP_ENABLE_SP = ~setpointMap;
  683. }
  684. /*!
  685. * @brief Controls the ON/OFF of the Bandgap's Standby mode in certain setpoints with GPC mode.
  686. *
  687. * @param base PMU peripheral base address.
  688. * @param setpointMap The map of setpoints that the bandgap standby mode will be enabled in those setpoints, this value
  689. * should be the OR'ed Value of @ref _pmu_setpoint_map.
  690. */
  691. static inline void PMU_GPCEnableBandgapStandbyMode(ANADIG_PMU_Type *base, uint32_t setpointMap)
  692. {
  693. base->BANDGAP_STBY_EN_SP = setpointMap;
  694. }
  695. /*!
  696. * @}
  697. */
  698. /*!
  699. * @name Body Bias Control APIs
  700. * @{
  701. */
  702. /*!
  703. * @brief Configures Well bias, such as power source, clock source and so on.
  704. *
  705. * @param base PMU peripheral base address.
  706. * @param config Pointer to the @ref pmu_well_bias_config_t structure.
  707. */
  708. void PMU_WellBiasInit(ANADIG_PMU_Type *base, const pmu_well_bias_config_t *config);
  709. /*!
  710. * @brief Gets the default configuration of well bias.
  711. *
  712. * @param config The pointer to the @ref pmu_well_bias_config_t structure.
  713. */
  714. void PMU_GetWellBiasDefaultConfig(pmu_well_bias_config_t *config);
  715. /*!
  716. * @brief Selects the control mode of the Body Bias.
  717. *
  718. * @param base PMU peripheral base address.
  719. * @param name The name of the body bias. Please refer to @ref pmu_body_bias_name_t.
  720. * @param mode The control mode of the Body Bias. Please refer to @ref pmu_control_mode_t.
  721. */
  722. void PMU_SetBodyBiasControlMode(ANADIG_PMU_Type *base, pmu_body_bias_name_t name, pmu_control_mode_t mode);
  723. /*!
  724. * @brief Enables/disables the selected body bias.
  725. *
  726. * @param base PMU peripheral base address.
  727. * @param name The name of the body bias to be turned on/off, please refer to @ref pmu_body_bias_name_t.
  728. * @param enable Used to turn on/off the specific body bias.
  729. * - \b true Enable the selected body bias.
  730. * - \b false Disable the selected body bias.
  731. */
  732. void PMU_EnableBodyBias(ANADIG_PMU_Type *base, pmu_body_bias_name_t name, bool enable);
  733. /*!
  734. * @brief Controls the ON/OFF of the selected body bias in certain setpoints with GPC mode.
  735. *
  736. * @param name The name of the selected body bias. Please see enumeration @ref pmu_body_bias_name_t for details.
  737. * @param setpointMap The map of setpoints that the specific body bias will be enabled in those setpoints, this value
  738. * should be the OR'ed Value of _pmu_setpoint_map.
  739. */
  740. void PMU_GPCEnableBodyBias(pmu_body_bias_name_t name, uint32_t setpointMap);
  741. /*!
  742. * @brief Controls the ON/OFF of the selected Body Bias' Wbias power switch in certain setpoints with GPC mode.
  743. *
  744. * @param name The name of the selected body bias. Please see the enumeration @ref pmu_body_bias_name_t for details.
  745. * @param setpointMap The map of setpoints that the specific body bias's wbias power switch will be turn on in those
  746. * setpoints, this value should be the OR'ed Value of @ref _pmu_setpoint_map.
  747. */
  748. void PMU_GPCEnableBodyBiasStandbyMode(pmu_body_bias_name_t name, uint32_t setpointMap);
  749. /*!
  750. * @brief Gets the default config of body bias in GPC mode.
  751. *
  752. * @param config Pointer to structure @ref pmu_gpc_body_bias_config_t.
  753. */
  754. void PMU_GPCGetBodyBiasDefaultConfig(pmu_gpc_body_bias_config_t *config);
  755. /*!
  756. * @brief Sets the config of the selected Body Bias in GPC mode.
  757. *
  758. * @param name The name of the selected body bias. Please see enumeration @ref pmu_body_bias_name_t for details.
  759. * @param config Pointer to structure @ref pmu_gpc_body_bias_config_t.
  760. */
  761. void PMU_GPCSetBodyBiasConfig(pmu_body_bias_name_t name, const pmu_gpc_body_bias_config_t *config);
  762. /*!
  763. * @}
  764. */
  765. #if defined(__cplusplus)
  766. }
  767. #endif
  768. /*!
  769. * @}
  770. */
  771. #endif /* _FSL_PMU_H_ */