fsl_anatop_ai.h 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533
  1. /*
  2. * Copyright 2019,2021 NXP
  3. * All rights reserved.
  4. *
  5. * SPDX-License-Identifier: BSD-3-Clause
  6. */
  7. #ifndef _FSL_ANATOP_AI_H_
  8. #define _FSL_ANATOP_AI_H_
  9. #include "fsl_common.h"
  10. /*! @addtogroup anatop_ai */
  11. /*! @{ */
  12. /*! @file */
  13. /*! @name Driver version */
  14. /*@{*/
  15. /*! @brief Anatop AI driver version 1.0.0. */
  16. #define FSL_ANATOP_AI_DRIVER_VERSION (MAKE_VERSION(1, 0, 0))
  17. /*@}*/
  18. /*!
  19. * @brief Anatop AI ITF enumeration.
  20. */
  21. typedef enum _anatop_ai_itf
  22. {
  23. kAI_Itf_Ldo = 0, /*!< LDO ITF. */
  24. kAI_Itf_1g = 1, /*!< 1G PLL ITF. */
  25. kAI_Itf_Audio = 2, /*!< Audio PLL ITF. */
  26. kAI_Itf_Video = 3, /*!< Video PLL ITF. */
  27. kAI_Itf_400m = 4, /*!< 400M OSC ITF. */
  28. kAI_Itf_Temp = 5, /*!< Temperature Sensor ITF. */
  29. kAI_Itf_Bandgap = 6, /*!< Bandgap ITF. */
  30. } anatop_ai_itf_t;
  31. /*!
  32. * @brief The enumeration of ANATOP AI Register.
  33. */
  34. typedef enum _anatop_ai_reg
  35. {
  36. kAI_PHY_LDO_CTRL0 = 0x0, /*!< PHY LDO CTRL0 Register. */
  37. kAI_PHY_LDO_CTRL0_SET = 0x4, /*!< PHY LDO CTRL0 Set Register. */
  38. kAI_PHY_LDO_CTRL0_CLR = 0x8, /*!< PHY LDO CTRL0 Clr Register. */
  39. kAI_PHY_LDO_CTRL0_TOG = 0xC, /*!< PHY LDO CTRL0 TOG Register. */
  40. kAI_PHY_LDO_STAT0 = 0x50, /*!< PHY LDO STAT0 Register. */
  41. kAI_PHY_LDO_STAT0_SET = 0x54, /*!< PHY LDO STAT0 Set Register. */
  42. kAI_PHY_LDO_STAT0_CLR = 0x58, /*!< PHY LDO STAT0 Clr Register. */
  43. kAI_PHY_LDO_STAT0_TOG = 0x5C, /*!< PHY LDO STAT0 Tog Register. */
  44. kAI_BANDGAP_CTRL0 = 0x0, /*!< BANDGAP CTRL0 Register. */
  45. kAI_BANDGAP_STAT0 = 0x50, /*!< BANDGAP STAT0 Register. */
  46. kAI_RCOSC400M_CTRL0 = 0x0, /*!< RC OSC 400M CTRL0 Register. */
  47. kAI_RCOSC400M_CTRL0_SET = 0x4, /*!< RC OSC 400M CTRL0 SET Register. */
  48. kAI_RCOSC400M_CTRL0_CLR = 0x8, /*!< RC OSC 400M CTRL0 CLR Register. */
  49. kAI_RCOSC400M_CTRL0_TOG = 0xC, /*!< RC OSC 400M CTRL0 TOG Register. */
  50. kAI_RCOSC400M_CTRL1 = 0x10, /*!< RC OSC 400M CTRL1 Register. */
  51. kAI_RCOSC400M_CTRL1_SET = 0x14, /*!< RC OSC 400M CTRL1 SET Register. */
  52. kAI_RCOSC400M_CTRL1_CLR = 0x18, /*!< RC OSC 400M CTRL1 CLR Register. */
  53. kAI_RCOSC400M_CTRL1_TOG = 0x1C, /*!< RC OSC 400M CTRL1 TOG Register. */
  54. kAI_RCOSC400M_CTRL2 = 0x20, /*!< RC OSC 400M CTRL2 Register. */
  55. kAI_RCOSC400M_CTRL2_SET = 0x24, /*!< RC OSC 400M CTRL2 SET Register. */
  56. kAI_RCOSC400M_CTRL2_CLR = 0x28, /*!< RC OSC 400M CTRL2 CLR Register. */
  57. kAI_RCOSC400M_CTRL2_TOG = 0x2C, /*!< RC OSC 400M CTRL2 TOG Register. */
  58. kAI_RCOSC400M_CTRL3 = 0x30, /*!< RC OSC 400M CTRL3 Register. */
  59. kAI_RCOSC400M_CTRL3_SET = 0x34, /*!< RC OSC 400M CTRL3 SET Register. */
  60. kAI_RCOSC400M_CTRL3_CLR = 0x38, /*!< RC OSC 400M CTRL3 CLR Register. */
  61. kAI_RCOSC400M_CTRL3_TOG = 0x3C, /*!< RC OSC 400M CTRL3 TOG Register. */
  62. kAI_RCOSC400M_STAT0 = 0x50, /*!< RC OSC 400M STAT0 Register. */
  63. kAI_RCOSC400M_STAT0_SET = 0x54, /*!< RC OSC 400M STAT0 SET Register. */
  64. kAI_RCOSC400M_STAT0_CLR = 0x58, /*!< RC OSC 400M STAT0 CLR Register. */
  65. kAI_RCOSC400M_STAT0_TOG = 0x5C, /*!< RC OSC 400M STAT0 TOG Register. */
  66. kAI_RCOSC400M_STAT1 = 0x60, /*!< RC OSC 400M STAT1 Register. */
  67. kAI_RCOSC400M_STAT1_SET = 0x64, /*!< RC OSC 400M STAT1 SET Register. */
  68. kAI_RCOSC400M_STAT1_CLR = 0x68, /*!< RC OSC 400M STAT1 CLR Register. */
  69. kAI_RCOSC400M_STAT1_TOG = 0x6C, /*!< RC OSC 400M STAT1 TOG Register. */
  70. kAI_RCOSC400M_STAT2 = 0x70, /*!< RC OSC 400M STAT2 Register. */
  71. kAI_RCOSC400M_STAT2_SET = 0x74, /*!< RC OSC 400M STAT2 SET Register. */
  72. kAI_RCOSC400M_STAT2_CLR = 0x78, /*!< RC OSC 400M STAT2 CLR Register. */
  73. kAI_RCOSC400M_STAT2_TOG = 0x7C, /*!< RC OSC 400M STAT2 TOG Register. */
  74. kAI_PLL1G_CTRL0 = 0x0, /*!< 1G PLL CTRL0 Register. */
  75. kAI_PLL1G_CTRL0_SET = 0x4, /*!< 1G PLL CTRL0 SET Register. */
  76. kAI_PLL1G_CTRL0_CLR = 0x8, /*!< 1G PLL CTRL0 CLR Register. */
  77. kAI_PLL1G_CTRL1 = 0x10, /*!< 1G PLL CTRL1 Register. */
  78. kAI_PLL1G_CTRL1_SET = 0x14, /*!< 1G PLL CTRL1 SET Register. */
  79. kAI_PLL1G_CTRL1_CLR = 0x18, /*!< 1G PLL CTRL1 CLR Register. */
  80. kAI_PLL1G_CTRL2 = 0x20, /*!< 1G PLL CTRL2 Register. */
  81. kAI_PLL1G_CTRL2_SET = 0x24, /*!< 1G PLL CTRL2 SET Register. */
  82. kAI_PLL1G_CTRL2_CLR = 0x28, /*!< 1G PLL CTRL2 CLR Register. */
  83. kAI_PLL1G_CTRL3 = 0x30, /*!< 1G PLL CTRL3 Register. */
  84. kAI_PLL1G_CTRL3_SET = 0x34, /*!< 1G PLL CTRL3 SET Register. */
  85. kAI_PLL1G_CTRL3_CLR = 0x38, /*!< 1G PLL CTRL3 CLR Register. */
  86. kAI_PLLAUDIO_CTRL0 = 0x0, /*!< AUDIO PLL CTRL0 Register. */
  87. kAI_PLLAUDIO_CTRL0_SET = 0x4, /*!< AUDIO PLL CTRL0 SET Register. */
  88. kAI_PLLAUDIO_CTRL0_CLR = 0x8, /*!< AUDIO PLL CTRL0 CLR Register. */
  89. kAI_PLLAUDIO_CTRL1 = 0x10, /*!< AUDIO PLL CTRL1 Register. */
  90. kAI_PLLAUDIO_CTRL1_SET = 0x14, /*!< AUDIO PLL CTRL1 SET Register. */
  91. kAI_PLLAUDIO_CTRL1_CLR = 0x18, /*!< AUDIO PLL CTRL1 CLR Register. */
  92. kAI_PLLAUDIO_CTRL2 = 0x20, /*!< AUDIO PLL CTRL2 Register. */
  93. kAI_PLLAUDIO_CTRL2_SET = 0x24, /*!< AUDIO PLL CTRL2 SET Register. */
  94. kAI_PLLAUDIO_CTRL2_CLR = 0x28, /*!< AUDIO PLL CTRL2 CLR Register. */
  95. kAI_PLLAUDIO_CTRL3 = 0x30, /*!< AUDIO PLL CTRL3 Register. */
  96. kAI_PLLAUDIO_CTRL3_SET = 0x34, /*!< AUDIO PLL CTRL3 SET Register. */
  97. kAI_PLLAUDIO_CTRL3_CLR = 0x38, /*!< AUDIO PLL CTRL3 CLR Register. */
  98. kAI_PLLVIDEO_CTRL0 = 0x0, /*!< VIDEO PLL CTRL0 Register. */
  99. kAI_PLLVIDEO_CTRL0_SET = 0x4, /*!< VIDEO PLL CTRL0 SET Register. */
  100. kAI_PLLVIDEO_CTRL0_CLR = 0x8, /*!< VIDEO PLL CTRL0 CLR Register. */
  101. kAI_PLLVIDEO_CTRL1 = 0x10, /*!< VIDEO PLL CTRL1 Register. */
  102. kAI_PLLVIDEO_CTRL1_SET = 0x14, /*!< VIDEO PLL CTRL1 SET Register. */
  103. kAI_PLLVIDEO_CTRL1_CLR = 0x18, /*!< VIDEO PLL CTRL1 CLR Register. */
  104. kAI_PLLVIDEO_CTRL2 = 0x20, /*!< VIDEO PLL CTRL2 Register. */
  105. kAI_PLLVIDEO_CTRL2_SET = 0x24, /*!< VIDEO PLL CTRL2 SET Register. */
  106. kAI_PLLVIDEO_CTRL2_CLR = 0x28, /*!< VIDEO PLL CTRL2 CLR Register. */
  107. kAI_PLLVIDEO_CTRL3 = 0x30, /*!< VIDEO PLL CTRL3 Register. */
  108. kAI_PLLVIDEO_CTRL3_SET = 0x34, /*!< VIDEO PLL CTRL3 SET Register. */
  109. kAI_PLLVIDEO_CTRL3_CLR = 0x38, /*!< VIDEO PLL CTRL3 CLR Register. */
  110. } anatop_ai_reg_t;
  111. /* ----------------------------------------------------------------------------
  112. -- AI PHY_LDO CTRL0 Register Masks
  113. ---------------------------------------------------------------------------- */
  114. /*! @name CTRL0 - CTRL0 Register */
  115. /*! @{ */
  116. #define AI_PHY_LDO_CTRL0_LINREG_EN(x) \
  117. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_CTRL0_LINREG_EN_SHIFT)) & AI_PHY_LDO_CTRL0_LINREG_EN_MASK)
  118. #define AI_PHY_LDO_CTRL0_LINREG_EN_MASK (0x1U)
  119. #define AI_PHY_LDO_CTRL0_LINREG_EN_SHIFT (0U)
  120. /*! LINREG_EN - LinReg master enable
  121. * LinReg master enable. Setting this bit will enable the regular
  122. */
  123. #define AI_PHY_LDO_CTRL0_PWRUPLOAD_DIS(x) \
  124. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_CTRL0_PWRUPLOAD_DIS_SHIFT)) & AI_PHY_LDO_CTRL0_PWRUPLOAD_DIS_MASK)
  125. #define AI_PHY_LDO_CTRL0_PWRUPLOAD_DIS_MASK (0x2U)
  126. #define AI_PHY_LDO_CTRL0_PWRUPLOAD_DIS_SHIFT (1U)
  127. /*! LINREG_PWRUPLOAD_DIS - LinReg power-up load disable
  128. * 0b0..Internal pull-down enabled
  129. * 0b1..Internal pull-down disabled
  130. */
  131. #define AI_PHY_LDO_CTRL0_LIMIT_EN(x) \
  132. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_CTRL0_LIMIT_EN_SHIFT)) & AI_PHY_LDO_CTRL0_LIMIT_EN_MASK)
  133. #define AI_PHY_LDO_CTRL0_LIMIT_EN_MASK (0x4U)
  134. #define AI_PHY_LDO_CTRL0_LIMIT_EN_SHIFT (2U)
  135. /*! LINREG_LIMIT_EN - LinReg current limit enable
  136. * LinReg current-limit enable. Setting this bit will enable the
  137. * current-limiter in the regulator
  138. */
  139. #define AI_PHY_LDO_CTRL0_OUTPUT_TRG(x) \
  140. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_CTRL0_OUTPUT_TRG_SHIFT)) & AI_PHY_LDO_CTRL0_OUTPUT_TRG_MASK)
  141. #define AI_PHY_LDO_CTRL0_OUTPUT_TRG_MASK (0x1F0U)
  142. #define AI_PHY_LDO_CTRL0_OUTPUT_TRG_SHIFT (4U)
  143. /*! LINREG_OUTPUT_TRG - LinReg output voltage target setting
  144. * 0b00000..Set output voltage to x.xV
  145. * 0b10000..Set output voltage to 1.0V
  146. * 0b11111..Set output voltage to x.xV
  147. */
  148. #define AI_PHY_LDO_CTRL0_PHY_ISO_B(x) \
  149. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_CTRL0_PHY_ISO_B_SHIFT)) & AI_PHY_LDO_CTRL0_PHY_ISO_B_MASK)
  150. #define AI_PHY_LDO_CTRL0_PHY_ISO_B_MASK (0x8000U)
  151. #define AI_PHY_LDO_CTRL0_PHY_ISO_B_SHIFT (15U)
  152. /*! LINREG_PHY_ISO_B - Isolation control for attached PHY load
  153. * This control bit is to be used by the system controller to isolate the
  154. * attached PHY load when the LinReg is powered down. During a power-up
  155. * event of the regulator it is expected that this control signal is set high
  156. * at least 100us after the main regulator is enabled. During a power-down
  157. * event of the regulator it is expected that this control signal is set low
  158. * before the main regulator is disabled/power-down.
  159. */
  160. /*! @} */
  161. /*! @name STAT0 - STAT0 Register */
  162. /*! @{ */
  163. #define AI_PHY_LDO_STAT0_LINREG_STAT(x) \
  164. (((uint32_t)(((uint32_t)(x)) << AI_PHY_LDO_STAT0_LINREG_STAT_SHIFT)) & AI_PHY_LDO_STAT0_LINREG_STAT_MASK)
  165. #define AI_PHY_LDO_STAT0_LINREG_STAT_MASK (0xFU)
  166. #define AI_PHY_LDO_STAT0_LINREG_STAT_SHIFT (0U)
  167. /*! LINREG_STAT - LinReg status bits
  168. * LinReg status bits.
  169. */
  170. /*! @} */
  171. /*! @name CTRL0 - CTRL0 Register */
  172. /*! @{ */
  173. #define AI_BANDGAP_CTRL0_REFTOP_PWD(x) \
  174. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_PWD_SHIFT)) & AI_BANDGAP_CTRL0_REFTOP_PWD_MASK)
  175. #define AI_BANDGAP_CTRL0_REFTOP_PWD_MASK (0x1U)
  176. #define AI_BANDGAP_CTRL0_REFTOP_PWD_SHIFT (0U)
  177. /*! REFTOP_PWD - This bit fully powers down the bandgap module.
  178. * Setting this bit high will disable reference output currents and voltages from the
  179. * bandgap and will affect functionality and validity of the voltage detectors.
  180. */
  181. #define AI_BANDGAP_CTRL0_REFTOP_LINREGREF_PWD(x) \
  182. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_LINREGREF_PWD_SHIFT)) & \
  183. AI_BANDGAP_CTRL0_REFTOP_LINREGREF_PWD_MASK)
  184. #define AI_BANDGAP_CTRL0_REFTOP_LINREGREF_PWD_MASK (0x2U)
  185. #define AI_BANDGAP_CTRL0_REFTOP_LINREGREF_PWD_SHIFT (1U)
  186. /*!
  187. * REFOP_LINREGREF_PWD - This bit powers down only the voltage reference output section of the bandgap.
  188. * Setting this bit high will affect functionality and validity
  189. * of the voltage detectors.
  190. */
  191. #define AI_BANDGAP_CTRL0_REFTOP_PWDVBGUP(x) \
  192. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_PWDVBGUP_SHIFT)) & AI_BANDGAP_CTRL0_REFTOP_PWDVBGUP_MASK)
  193. #define AI_BANDGAP_CTRL0_REFTOP_PWDVBGUP_MASK (0x4U)
  194. #define AI_BANDGAP_CTRL0_REFTOP_PWDVBGUP_SHIFT (2U)
  195. /*!
  196. * REFTOP_PWDVBGUP - This bit powers down the VBGUP detector of the bandgap
  197. * without affecting any additional functionality.
  198. */
  199. #define AI_BANDGAP_CTRL0_REFTOP_LOWPOWER(x) \
  200. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_LOWPOWER_SHIFT)) & AI_BANDGAP_CTRL0_REFTOP_LOWPOWER_MASK)
  201. #define AI_BANDGAP_CTRL0_REFTOP_LOWPOWER_MASK (0x8U)
  202. #define AI_BANDGAP_CTRL0_REFTOP_LOWPOWER_SHIFT (3U)
  203. /*!
  204. * REFTOP_LOWPOWER - This bit enables the low-power operation of the
  205. * bandgap by cutting the bias currents in half to the main amplifiers.
  206. * This will save power but could affect the accuracy of the output voltages and currents.
  207. */
  208. #define AI_BANDGAP_CTRL0_REFTOP_SELFBIASOFF(x) \
  209. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_SELFBIASOFF_SHIFT)) & \
  210. AI_BANDGAP_CTRL0_REFTOP_SELFBIASOFF_MASK)
  211. #define AI_BANDGAP_CTRL0_REFTOP_SELFBIASOFF_MASK (0x10U)
  212. #define AI_BANDGAP_CTRL0_REFTOP_SELFBIASOFF_SHIFT (4U)
  213. /*!
  214. * REFTOP_SELFBIASOFF - Control bit to disable the self-bias circuit in the bandgap.
  215. * The self-bias circuit is used by the bandgap during startup. This bit should be
  216. * set high after the bandgap has stabilized and is necessary for best noise performance
  217. * of modules using the outputs of the bandgap. It is expected that this control bit
  218. * be set low any time that either the bandgap is fully powered-down or the 1.8V supply is removed.
  219. */
  220. #define AI_BANDGAP_CTRL0_REFTOP_VBGADJ(x) \
  221. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_VBGADJ_SHIFT)) & AI_BANDGAP_CTRL0_REFTOP_VBGADJ_MASK)
  222. #define AI_BANDGAP_CTRL0_REFTOP_VBGADJ_MASK (0xE0U)
  223. #define AI_BANDGAP_CTRL0_REFTOP_VBGADJ_SHIFT (5U)
  224. /*!
  225. * REFTOP_VBGADJ - These bits allow the output VBG voltage of the bandgap to be trimmed
  226. * 000 : nominal
  227. * 001 : +10mV
  228. * 010 : +20mV
  229. * 011 : +30mV
  230. * 100 : -10mV
  231. * 101 : -20mV
  232. * 110 : -30mV
  233. * 111 : -40mV
  234. */
  235. #define AI_BANDGAP_CTRL0_REFTOP_IBZTCADJ(x) \
  236. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_CTRL0_REFTOP_IBZTCADJ_SHIFT)) & AI_BANDGAP_CTRL0_REFTOP_IBZTCADJ_MASK)
  237. #define AI_BANDGAP_CTRL0_REFTOP_IBZTCADJ_MASK (0x1C00U)
  238. #define AI_BANDGAP_CTRL0_REFTOP_IBZTCADJ_SHIFT (10U)
  239. /*!
  240. * REFTOP_IBZTCADJ - These bits allow trimming of the ZTC bias currents from the bandgap to
  241. * the temperature sensors. Assuming a typical process corner the expected values of output
  242. * currents are:
  243. * 000 : 11.5 uA
  244. * 001 : 11.8 uA
  245. * 010 : 12.1 uA
  246. * 100 : 12.4 uA (Nominal expected from MX8QM tempsensor)
  247. * 101 : 12.7 uA
  248. * 110 : 13.0 uA
  249. * 111 : 13.3 uA
  250. */
  251. /*! @} */
  252. /*! @name STAT0 - STAT0 Register */
  253. /*! @{ */
  254. #define AI_BANDGAP_STAT0_REFTOP_VBGUP(x) \
  255. (((uint32_t)(((uint32_t)(x)) << AI_BANDGAP_STAT0_REFTOP_VBGUP_SHIFT)) & AI_BANDGAP_STAT0_REFTOP_VBGUP_MASK)
  256. #define AI_BANDGAP_STAT0_REFTOP_VBGUP_MASK (0x1U)
  257. #define AI_BANDGAP_STAT0_REFTOP_VBGUP_SHIFT (0U)
  258. /*! @} */
  259. /*! @name CTRL0 - CTRL0 Register */
  260. /*! @{ */
  261. #define AI_RCOSC400M_CTRL0_REF_CLK_DIV(x) \
  262. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL0_REF_CLK_DIV_SHIFT)) & AI_RCOSC400M_CTRL0_REF_CLK_DIV_MASK)
  263. #define AI_RCOSC400M_CTRL0_REF_CLK_DIV_MASK (0x3F000000U)
  264. #define AI_RCOSC400M_CTRL0_REF_CLK_DIV_SHIFT (24U)
  265. /*! @} */
  266. /*! @name CTRL1 - CTRL1 Register */
  267. /*! @{ */
  268. #define AI_RCOSC400M_CTRL1_HYST_MINUS(x) \
  269. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL1_HYST_MINUS_SHIFT)) & AI_RCOSC400M_CTRL1_HYST_MINUS_MASK)
  270. #define AI_RCOSC400M_CTRL1_HYST_MINUS_MASK (0xFU)
  271. #define AI_RCOSC400M_CTRL1_HYST_MINUS_SHIFT (0U)
  272. #define AI_RCOSC400M_CTRL1_HYST_PLUS(x) \
  273. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL1_HYST_PLUS_SHIFT)) & AI_RCOSC400M_CTRL1_HYST_PLUS_MASK)
  274. #define AI_RCOSC400M_CTRL1_HYST_PLUS_MASK (0xF00U)
  275. #define AI_RCOSC400M_CTRL1_HYST_PLUS_SHIFT (8U)
  276. #define AI_RCOSC400M_CTRL1_TARGET_COUNT(x) \
  277. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL1_TARGET_COUNT_SHIFT)) & AI_RCOSC400M_CTRL1_TARGET_COUNT_MASK)
  278. #define AI_RCOSC400M_CTRL1_TARGET_COUNT_MASK (0xFFFF0000U)
  279. #define AI_RCOSC400M_CTRL1_TARGET_COUNT_SHIFT (16U)
  280. /*! @} */
  281. /*! @name CTRL2 - CTRL2 Register */
  282. /*! @{ */
  283. #define AI_RCOSC400M_CTRL2_TUNE_BYP(x) \
  284. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL2_TUNE_BYP_SHIFT)) & AI_RCOSC400M_CTRL2_TUNE_BYP_MASK)
  285. #define AI_RCOSC400M_CTRL2_TUNE_BYP_MASK (0x400U)
  286. #define AI_RCOSC400M_CTRL2_TUNE_BYP_SHIFT (10U)
  287. #define AI_RCOSC400M_CTRL2_TUNE_EN(x) \
  288. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL2_TUNE_EN_SHIFT)) & AI_RCOSC400M_CTRL2_TUNE_EN_MASK)
  289. #define AI_RCOSC400M_CTRL2_TUNE_EN_MASK (0x1000U)
  290. #define AI_RCOSC400M_CTRL2_TUNE_EN_SHIFT (12U)
  291. #define AI_RCOSC400M_CTRL2_TUNE_START(x) \
  292. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL2_TUNE_START_SHIFT)) & AI_RCOSC400M_CTRL2_TUNE_START_MASK)
  293. #define AI_RCOSC400M_CTRL2_TUNE_START_MASK (0x4000U)
  294. #define AI_RCOSC400M_CTRL2_TUNE_START_SHIFT (14U)
  295. #define AI_RCOSC400M_CTRL2_OSC_TUNE_VAL(x) \
  296. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL2_OSC_TUNE_VAL_SHIFT)) & AI_RCOSC400M_CTRL2_OSC_TUNE_VAL_MASK)
  297. #define AI_RCOSC400M_CTRL2_OSC_TUNE_VAL_MASK (0xFF000000U)
  298. #define AI_RCOSC400M_CTRL2_OSC_TUNE_VAL_SHIFT (24U)
  299. /*! @} */
  300. /*! @name CTRL3 - CTRL3 Register */
  301. /*! @{ */
  302. #define AI_RCOSC400M_CTRL3_CLR_ERR(x) \
  303. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL3_CLR_ERR_SHIFT)) & AI_RCOSC400M_CTRL3_CLR_ERR_MASK)
  304. #define AI_RCOSC400M_CTRL3_CLR_ERR_MASK (0x1U)
  305. #define AI_RCOSC400M_CTRL3_CLR_ERR_SHIFT (0U)
  306. #define AI_RCOSC400M_CTRL3_EN_1M_CLK(x) \
  307. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL3_EN_1M_CLK_SHIFT)) & AI_RCOSC400M_CTRL3_EN_1M_CLK_MASK)
  308. #define AI_RCOSC400M_CTRL3_EN_1M_CLK_MASK (0x100U)
  309. #define AI_RCOSC400M_CTRL3_EN_1M_CLK_SHIFT (8U)
  310. #define AI_RCOSC400M_CTRL3_MUX_1M_CLK(x) \
  311. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL3_MUX_1M_CLK_SHIFT)) & AI_RCOSC400M_CTRL3_MUX_1M_CLK_MASK)
  312. #define AI_RCOSC400M_CTRL3_MUX_1M_CLK_MASK (0x400U)
  313. #define AI_RCOSC400M_CTRL3_MUX_1M_CLK_SHIFT (10U)
  314. #define AI_RCOSC400M_CTRL3_COUNT_1M_CLK(x) \
  315. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_CTRL3_COUNT_1M_CLK_SHIFT)) & AI_RCOSC400M_CTRL3_COUNT_1M_CLK_MASK)
  316. #define AI_RCOSC400M_CTRL3_COUNT_1M_CLK_MASK (0xFFFF0000U)
  317. #define AI_RCOSC400M_CTRL3_COUNT_1M_CLK_SHIFT (16U)
  318. /*! @} */
  319. /*! @name STAT0 - STAT0 Register */
  320. /*! @{ */
  321. #define AI_RCOSC400M_STAT0_CLK1M_ERR(x) \
  322. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_STAT0_CLK1M_ERR_SHIFT)) & AI_RCOSC400M_STAT0_CLK1M_ERR_MASK)
  323. #define AI_RCOSC400M_STAT0_CLK1M_ERR_MASK (0x1U)
  324. #define AI_RCOSC400M_STAT0_CLK1M_ERR_SHIFT (0U)
  325. /*! @} */
  326. /*! @name STAT1 - STAT1 Register */
  327. /*! @{ */
  328. #define AI_RCOSC400M_STAT1_CURR_COUNT_VAL(x) \
  329. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_STAT1_CURR_COUNT_VAL_SHIFT)) & AI_RCOSC400M_STAT1_CURR_COUNT_VAL_MASK)
  330. #define AI_RCOSC400M_STAT1_CURR_COUNT_VAL_MASK (0xFFFF0000U)
  331. #define AI_RCOSC400M_STAT1_CURR_COUNT_VAL_SHIFT (16U)
  332. /*! @} */
  333. /*! @name STAT2 - STAT2 Register */
  334. /*! @{ */
  335. #define AI_RCOSC400M_STAT2_CURR_OSC_TUNE_VAL(x) \
  336. (((uint32_t)(((uint32_t)(x)) << AI_RCOSC400M_STAT2_CURR_OSC_TUNE_VAL_SHIFT)) & \
  337. AI_RCOSC400M_STAT2_CURR_OSC_TUNE_VAL_MASK)
  338. #define AI_RCOSC400M_STAT2_CURR_OSC_TUNE_VAL_MASK (0xFF000000U)
  339. #define AI_RCOSC400M_STAT2_CURR_OSC_TUNE_VAL_SHIFT (24U)
  340. /*! @} */
  341. /*! @name CTRL0 - CTRL0 Register */
  342. /*! @{ */
  343. #define AI_PLL1G_CTRL0_HOLD_RING_OFF(x) \
  344. (((uint32_t)(((uint32_t)(x)) << AI_PLL1G_CTRL0_HOLD_RING_OFF_SHIFT)) & AI_PLL1G_CTRL0_HOLD_RING_OFF_MASK)
  345. #define AI_PLL1G_CTRL0_HOLD_RING_OFF_MASK (0x2000UL)
  346. #define AI_PLL1G_CTRL0_HOLD_RING_OFF_SHIFT (13U)
  347. #define AI_PLL1G_CTRL0_POWER_UP(x) \
  348. (((uint32_t)(((uint32_t)(x)) << AI_PLL1G_CTRL0_POWER_UP_SHIFT)) & AI_PLL1G_CTRL0_POWER_UP_MASK)
  349. #define AI_PLL1G_CTRL0_POWER_UP_MASK (0x4000UL)
  350. #define AI_PLL1G_CTRL0_POWER_UP_SHIFT (14U)
  351. #define AI_PLL1G_CTRL0_ENABLE(x) \
  352. (((uint32_t)(((uint32_t)(x)) << AI_PLL1G_CTRL0_ENABLE_SHIFT)) & AI_PLL1G_CTRL0_ENABLE_MASK)
  353. #define AI_PLL1G_CTRL0_ENABLE_MASK (0x8000UL)
  354. #define AI_PLL1G_CTRL0_ENABLE_SHIFT (15U)
  355. #define AI_PLL1G_CTRL0_BYPASS(x) \
  356. (((uint32_t)(((uint32_t)(x)) << AI_PLL1G_CTRL0_BYPASS_SHIFT)) & AI_PLL1G_CTRL0_BYPASS_MASK)
  357. #define AI_PLL1G_CTRL0_BYPASS_MASK (0x10000UL)
  358. #define AI_PLL1G_CTRL0_BYPASS_SHIFT (16U)
  359. #define AI_PLL1G_CTRL0_PLL_REG_EN(x) \
  360. (((uint32_t)(((uint32_t)(x)) << AI_PLL1G_CTRL0_PLL_REG_EN_SHIFT)) & AI_PLL1G_CTRL0_PLL_REG_EN_MASK)
  361. #define AI_PLL1G_CTRL0_PLL_REG_EN_MASK (0x400000UL)
  362. #define AI_PLL1G_CTRL0_PLL_REG_EN_SHIFT (22U)
  363. /*! @} */
  364. /*! @name CTRL0 - CTRL0 Register */
  365. /*! @{ */
  366. #define AI_PLLAUDIO_CTRL0_HOLD_RING_OFF(x) \
  367. (((uint32_t)(((uint32_t)(x)) << AI_PLLAUDIO_CTRL0_HOLD_RING_OFF_SHIFT)) & AI_PLLAUDIO_CTRL0_HOLD_RING_OFF_MASK)
  368. #define AI_PLLAUDIO_CTRL0_HOLD_RING_OFF_MASK (0x2000UL)
  369. #define AI_PLLAUDIO_CTRL0_HOLD_RING_OFF_SHIFT (13U)
  370. #define AI_PLLAUDIO_CTRL0_POWER_UP(x) \
  371. (((uint32_t)(((uint32_t)(x)) << AI_PLLAUDIO_CTRL0_POWER_UP_SHIFT)) & AI_PLLAUDIO_CTRL0_POWER_UP_MASK)
  372. #define AI_PLLAUDIO_CTRL0_POWER_UP_MASK (0x4000UL)
  373. #define AI_PLLAUDIO_CTRL0_POWER_UP_SHIFT (14U)
  374. #define AI_PLLAUDIO_CTRL0_ENABLE(x) \
  375. (((uint32_t)(((uint32_t)(x)) << AI_PLLAUDIO_CTRL0_ENABLE_SHIFT)) & AI_PLLAUDIO_CTRL0_ENABLE_MASK)
  376. #define AI_PLLAUDIO_CTRL0_ENABLE_MASK (0x8000UL)
  377. #define AI_PLLAUDIO_CTRL0_ENABLE_SHIFT (15U)
  378. #define AI_PLLAUDIO_CTRL0_BYPASS(x) \
  379. (((uint32_t)(((uint32_t)(x)) << AI_PLLAUDIO_CTRL0_BYPASS_SHIFT)) & AI_PLLAUDIO_CTRL0_BYPASS_MASK)
  380. #define AI_PLLAUDIO_CTRL0_BYPASS_MASK (0x10000UL)
  381. #define AI_PLLAUDIO_CTRL0_BYPASS_SHIFT (16U)
  382. #define AI_PLLAUDIO_CTRL0_PLL_REG_EN(x) \
  383. (((uint32_t)(((uint32_t)(x)) << AI_PLLAUDIO_CTRL0_PLL_REG_EN_SHIFT)) & AI_PLLAUDIO_CTRL0_PLL_REG_EN_MASK)
  384. #define AI_PLLAUDIO_CTRL0_PLL_REG_EN_MASK (0x400000UL)
  385. #define AI_PLLAUDIO_CTRL0_PLL_REG_EN_SHIFT (22U)
  386. /*! @} */
  387. /*! @name CTRL0 - CTRL0 Register */
  388. /*! @{ */
  389. #define AI_PLLVIDEO_CTRL0_HOLD_RING_OFF(x) \
  390. (((uint32_t)(((uint32_t)(x)) << AI_PLLVIDEO_CTRL0_HOLD_RING_OFF_SHIFT)) & AI_PLLVIDEO_CTRL0_HOLD_RING_OFF_MASK)
  391. #define AI_PLLVIDEO_CTRL0_HOLD_RING_OFF_MASK (0x2000UL)
  392. #define AI_PLLVIDEO_CTRL0_HOLD_RING_OFF_SHIFT (13U)
  393. #define AI_PLLVIDEO_CTRL0_POWER_UP(x) \
  394. (((uint32_t)(((uint32_t)(x)) << AI_PLLVIDEO_CTRL0_POWER_UP_SHIFT)) & AI_PLLVIDEO_CTRL0_POWER_UP_MASK)
  395. #define AI_PLLVIDEO_CTRL0_POWER_UP_MASK (0x4000UL)
  396. #define AI_PLLVIDEO_CTRL0_POWER_UP_SHIFT (14U)
  397. #define AI_PLLVIDEO_CTRL0_ENABLE(x) \
  398. (((uint32_t)(((uint32_t)(x)) << AI_PLLVIDEO_CTRL0_ENABLE_SHIFT)) & AI_PLLVIDEO_CTRL0_ENABLE_MASK)
  399. #define AI_PLLVIDEO_CTRL0_ENABLE_MASK (0x8000UL)
  400. #define AI_PLLVIDEO_CTRL0_ENABLE_SHIFT (15U)
  401. #define AI_PLLVIDEO_CTRL0_BYPASS(x) \
  402. (((uint32_t)(((uint32_t)(x)) << AI_PLLVIDEO_CTRL0_BYPASS_SHIFT)) & AI_PLLVIDEO_CTRL0_BYPASS_MASK)
  403. #define AI_PLLVIDEO_CTRL0_BYPASS_MASK (0x10000UL)
  404. #define AI_PLLVIDEO_CTRL0_BYPASS_SHIFT (16U)
  405. #define AI_PLLVIDEO_CTRL0_PLL_REG_EN(x) \
  406. (((uint32_t)(((uint32_t)(x)) << AI_PLLVIDEO_CTRL0_PLL_REG_EN_SHIFT)) & AI_PLLVIDEO_CTRL0_PLL_REG_EN_MASK)
  407. #define AI_PLLVIDEO_CTRL0_PLL_REG_EN_MASK (0x400000UL)
  408. #define AI_PLLVIDEO_CTRL0_PLL_REG_EN_SHIFT (22U)
  409. /*! @} */
  410. /*! @} */
  411. /*******************************************************************************
  412. * API
  413. ******************************************************************************/
  414. #if defined(__cplusplus)
  415. extern "C" {
  416. #endif /* __cplusplus */
  417. /*!
  418. * @brief AI interface access
  419. *
  420. * @param itf AI interface name
  421. * @param isWrite write enable
  422. * @param addr address
  423. * @param wdata data to be set
  424. *
  425. */
  426. uint32_t ANATOP_AI_Access(anatop_ai_itf_t itf, bool isWrite, anatop_ai_reg_t addr, uint32_t wdata);
  427. /*!
  428. * @brief AI interface writing
  429. *
  430. * @param itf AI interface name
  431. * @param addr address
  432. * @param wdata data to be set
  433. *
  434. */
  435. void ANATOP_AI_Write(anatop_ai_itf_t itf, anatop_ai_reg_t addr, uint32_t wdata);
  436. /*!
  437. * @brief AI interface reading
  438. *
  439. * @param itf AI interface name
  440. * @param addr address
  441. * @return data read
  442. *
  443. */
  444. uint32_t ANATOP_AI_Read(anatop_ai_itf_t itf, anatop_ai_reg_t addr);
  445. /*!
  446. * @brief AI interface write with mask and shift
  447. *
  448. * @param itf AI interface name
  449. * @param addr address
  450. * @param wdata data to be written
  451. * @param mask bit field mask
  452. * @param shift bit field shift
  453. *
  454. */
  455. void ANATOP_AI_WriteWithMaskShift(
  456. anatop_ai_itf_t itf, anatop_ai_reg_t addr, uint32_t wdata, uint32_t mask, uint32_t shift);
  457. /* @} */
  458. #if defined(__cplusplus)
  459. }
  460. #endif /* __cplusplus */
  461. /*! @} */
  462. #endif /* _FSL_ANATOP_AI_H_ */