hpm_sysctl_regs.h 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_SYSCTL_H
  8. #define HPM_SYSCTL_H
  9. typedef struct {
  10. __RW uint32_t RESOURCE[318]; /* 0x0 - 0x4F4: Resource control register for cpu0_core */
  11. __R uint8_t RESERVED0[776]; /* 0x4F8 - 0x7FF: Reserved */
  12. struct {
  13. __RW uint32_t VALUE; /* 0x800: Group setting */
  14. __RW uint32_t SET; /* 0x804: Group setting */
  15. __RW uint32_t CLEAR; /* 0x808: Group setting */
  16. __RW uint32_t TOGGLE; /* 0x80C: Group setting */
  17. } GROUP0[2];
  18. __R uint8_t RESERVED1[224]; /* 0x820 - 0x8FF: Reserved */
  19. struct {
  20. __RW uint32_t VALUE; /* 0x900: Affiliate of Group */
  21. __RW uint32_t SET; /* 0x904: Affiliate of Group */
  22. __RW uint32_t CLEAR; /* 0x908: Affiliate of Group */
  23. __RW uint32_t TOGGLE; /* 0x90C: Affiliate of Group */
  24. } AFFILIATE[1];
  25. __R uint8_t RESERVED2[16]; /* 0x910 - 0x91F: Reserved */
  26. struct {
  27. __RW uint32_t VALUE; /* 0x920: Retention Contol */
  28. __RW uint32_t SET; /* 0x924: Retention Contol */
  29. __RW uint32_t CLEAR; /* 0x928: Retention Contol */
  30. __RW uint32_t TOGGLE; /* 0x92C: Retention Contol */
  31. } RETENTION[1];
  32. __R uint8_t RESERVED3[1744]; /* 0x930 - 0xFFF: Reserved */
  33. struct {
  34. __RW uint32_t STATUS; /* 0x1000: Power Setting */
  35. __RW uint32_t LF_WAIT; /* 0x1004: Power Setting */
  36. __R uint8_t RESERVED0[4]; /* 0x1008 - 0x100B: Reserved */
  37. __RW uint32_t OFF_WAIT; /* 0x100C: Power Setting */
  38. } POWER[1];
  39. __R uint8_t RESERVED4[1008]; /* 0x1010 - 0x13FF: Reserved */
  40. struct {
  41. __RW uint32_t CONTROL; /* 0x1400: Reset Setting */
  42. __RW uint32_t CONFIG; /* 0x1404: Reset Setting */
  43. __R uint8_t RESERVED0[4]; /* 0x1408 - 0x140B: Reserved */
  44. __RW uint32_t COUNTER; /* 0x140C: Reset Setting */
  45. } RESET[2];
  46. __R uint8_t RESERVED5[992]; /* 0x1420 - 0x17FF: Reserved */
  47. __RW uint32_t CLOCK_CPU[1]; /* 0x1800: Clock setting */
  48. __RW uint32_t CLOCK[39]; /* 0x1804 - 0x189C: Clock setting */
  49. __R uint8_t RESERVED6[864]; /* 0x18A0 - 0x1BFF: Reserved */
  50. __RW uint32_t ADCCLK[3]; /* 0x1C00 - 0x1C08: Clock setting */
  51. __RW uint32_t DACCLK[1]; /* 0x1C0C: Clock setting */
  52. __RW uint32_t I2SCLK[2]; /* 0x1C10 - 0x1C14: Clock setting */
  53. __R uint8_t RESERVED7[1000]; /* 0x1C18 - 0x1FFF: Reserved */
  54. __RW uint32_t GLOBAL00; /* 0x2000: Clock senario */
  55. __R uint8_t RESERVED8[1020]; /* 0x2004 - 0x23FF: Reserved */
  56. struct {
  57. __RW uint32_t CONTROL; /* 0x2400: Clock measure and monitor control */
  58. __R uint32_t CURRENT; /* 0x2404: Clock measure result */
  59. __RW uint32_t LOW_LIMIT; /* 0x2408: Clock lower limit */
  60. __RW uint32_t HIGH_LIMIT; /* 0x240C: Clock upper limit */
  61. __R uint8_t RESERVED0[16]; /* 0x2410 - 0x241F: Reserved */
  62. } MONITOR[4];
  63. __R uint8_t RESERVED9[896]; /* 0x2480 - 0x27FF: Reserved */
  64. struct {
  65. __RW uint32_t LP; /* 0x2800: CPU0 LP control */
  66. __RW uint32_t LOCK; /* 0x2804: CPU0 Lock GPR */
  67. __RW uint32_t GPR[14]; /* 0x2808 - 0x283C: CPU0 GPR0 */
  68. __R uint32_t WAKEUP_STATUS[4]; /* 0x2840 - 0x284C: CPU0 wakeup IRQ status */
  69. __R uint8_t RESERVED0[48]; /* 0x2850 - 0x287F: Reserved */
  70. __RW uint32_t WAKEUP_ENABLE[4]; /* 0x2880 - 0x288C: CPU0 wakeup IRQ enable */
  71. __R uint8_t RESERVED1[880]; /* 0x2890 - 0x2BFF: Reserved */
  72. } CPU[1];
  73. } SYSCTL_Type;
  74. /* Bitfield definition for register array: RESOURCE */
  75. /*
  76. * GLB_BUSY (RO)
  77. *
  78. * global busy
  79. * 0: no changes pending to any nodes
  80. * 1: any of nodes is changing status
  81. */
  82. #define SYSCTL_RESOURCE_GLB_BUSY_MASK (0x80000000UL)
  83. #define SYSCTL_RESOURCE_GLB_BUSY_SHIFT (31U)
  84. #define SYSCTL_RESOURCE_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_RESOURCE_GLB_BUSY_MASK) >> SYSCTL_RESOURCE_GLB_BUSY_SHIFT)
  85. /*
  86. * LOC_BUSY (RO)
  87. *
  88. * local busy
  89. * 0: no change is pending for current node
  90. * 1: current node is changing status
  91. */
  92. #define SYSCTL_RESOURCE_LOC_BUSY_MASK (0x40000000UL)
  93. #define SYSCTL_RESOURCE_LOC_BUSY_SHIFT (30U)
  94. #define SYSCTL_RESOURCE_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_RESOURCE_LOC_BUSY_MASK) >> SYSCTL_RESOURCE_LOC_BUSY_SHIFT)
  95. /*
  96. * MODE (RW)
  97. *
  98. * resource work mode
  99. * 0:auto turn on and off as system required(recommended)
  100. * 1:always on
  101. * 2:always off
  102. * 3:reserved
  103. */
  104. #define SYSCTL_RESOURCE_MODE_MASK (0x3U)
  105. #define SYSCTL_RESOURCE_MODE_SHIFT (0U)
  106. #define SYSCTL_RESOURCE_MODE_SET(x) (((uint32_t)(x) << SYSCTL_RESOURCE_MODE_SHIFT) & SYSCTL_RESOURCE_MODE_MASK)
  107. #define SYSCTL_RESOURCE_MODE_GET(x) (((uint32_t)(x) & SYSCTL_RESOURCE_MODE_MASK) >> SYSCTL_RESOURCE_MODE_SHIFT)
  108. /* Bitfield definition for register of struct array GROUP0: VALUE */
  109. /*
  110. * LINK (RW)
  111. *
  112. * denpendency on peripherals, index count from resource ahbp(0x400), each bit represents a peripheral
  113. * 0: peripheral is not needed
  114. * 1: periphera is needed
  115. */
  116. #define SYSCTL_GROUP0_VALUE_LINK_MASK (0xFFFFFFFFUL)
  117. #define SYSCTL_GROUP0_VALUE_LINK_SHIFT (0U)
  118. #define SYSCTL_GROUP0_VALUE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_GROUP0_VALUE_LINK_SHIFT) & SYSCTL_GROUP0_VALUE_LINK_MASK)
  119. #define SYSCTL_GROUP0_VALUE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_GROUP0_VALUE_LINK_MASK) >> SYSCTL_GROUP0_VALUE_LINK_SHIFT)
  120. /* Bitfield definition for register of struct array GROUP0: SET */
  121. /*
  122. * LINK (RW)
  123. *
  124. * denpendency on peripherals, index count from resource ahbp(0x400), each bit represents a peripheral
  125. * 0: no effect
  126. * 1: add periphera into this group,periphera is needed
  127. */
  128. #define SYSCTL_GROUP0_SET_LINK_MASK (0xFFFFFFFFUL)
  129. #define SYSCTL_GROUP0_SET_LINK_SHIFT (0U)
  130. #define SYSCTL_GROUP0_SET_LINK_SET(x) (((uint32_t)(x) << SYSCTL_GROUP0_SET_LINK_SHIFT) & SYSCTL_GROUP0_SET_LINK_MASK)
  131. #define SYSCTL_GROUP0_SET_LINK_GET(x) (((uint32_t)(x) & SYSCTL_GROUP0_SET_LINK_MASK) >> SYSCTL_GROUP0_SET_LINK_SHIFT)
  132. /* Bitfield definition for register of struct array GROUP0: CLEAR */
  133. /*
  134. * LINK (RW)
  135. *
  136. * denpendency on peripherals, index count from resource ahbp(0x400), each bit represents a peripheral
  137. * 0: no effect
  138. * 1: delete periphera in this group,periphera is not needed
  139. */
  140. #define SYSCTL_GROUP0_CLEAR_LINK_MASK (0xFFFFFFFFUL)
  141. #define SYSCTL_GROUP0_CLEAR_LINK_SHIFT (0U)
  142. #define SYSCTL_GROUP0_CLEAR_LINK_SET(x) (((uint32_t)(x) << SYSCTL_GROUP0_CLEAR_LINK_SHIFT) & SYSCTL_GROUP0_CLEAR_LINK_MASK)
  143. #define SYSCTL_GROUP0_CLEAR_LINK_GET(x) (((uint32_t)(x) & SYSCTL_GROUP0_CLEAR_LINK_MASK) >> SYSCTL_GROUP0_CLEAR_LINK_SHIFT)
  144. /* Bitfield definition for register of struct array GROUP0: TOGGLE */
  145. /*
  146. * LINK (RW)
  147. *
  148. * denpendency on peripherals, index count from resource ahbp(0x400), each bit represents a peripheral
  149. * 0: no effect
  150. * 1: toggle the result that whether periphera is needed before
  151. */
  152. #define SYSCTL_GROUP0_TOGGLE_LINK_MASK (0xFFFFFFFFUL)
  153. #define SYSCTL_GROUP0_TOGGLE_LINK_SHIFT (0U)
  154. #define SYSCTL_GROUP0_TOGGLE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_GROUP0_TOGGLE_LINK_SHIFT) & SYSCTL_GROUP0_TOGGLE_LINK_MASK)
  155. #define SYSCTL_GROUP0_TOGGLE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_GROUP0_TOGGLE_LINK_MASK) >> SYSCTL_GROUP0_TOGGLE_LINK_SHIFT)
  156. /* Bitfield definition for register of struct array AFFILIATE: VALUE */
  157. /*
  158. * LINK (RW)
  159. *
  160. * Affiliate groups of cpu0, each bit represents a group
  161. * bit0: cpu0 depends on group0
  162. * bit1: cpu0 depends on group1
  163. * bit2: cpu0 depends on group2
  164. * bit3: cpu0 depends on group3
  165. */
  166. #define SYSCTL_AFFILIATE_VALUE_LINK_MASK (0xFU)
  167. #define SYSCTL_AFFILIATE_VALUE_LINK_SHIFT (0U)
  168. #define SYSCTL_AFFILIATE_VALUE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_AFFILIATE_VALUE_LINK_SHIFT) & SYSCTL_AFFILIATE_VALUE_LINK_MASK)
  169. #define SYSCTL_AFFILIATE_VALUE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_AFFILIATE_VALUE_LINK_MASK) >> SYSCTL_AFFILIATE_VALUE_LINK_SHIFT)
  170. /* Bitfield definition for register of struct array AFFILIATE: SET */
  171. /*
  172. * LINK (RW)
  173. *
  174. * Affiliate groups of cpu0,each bit represents a group
  175. * 0: no effect
  176. * 1: the group is assigned to CPU0
  177. */
  178. #define SYSCTL_AFFILIATE_SET_LINK_MASK (0xFU)
  179. #define SYSCTL_AFFILIATE_SET_LINK_SHIFT (0U)
  180. #define SYSCTL_AFFILIATE_SET_LINK_SET(x) (((uint32_t)(x) << SYSCTL_AFFILIATE_SET_LINK_SHIFT) & SYSCTL_AFFILIATE_SET_LINK_MASK)
  181. #define SYSCTL_AFFILIATE_SET_LINK_GET(x) (((uint32_t)(x) & SYSCTL_AFFILIATE_SET_LINK_MASK) >> SYSCTL_AFFILIATE_SET_LINK_SHIFT)
  182. /* Bitfield definition for register of struct array AFFILIATE: CLEAR */
  183. /*
  184. * LINK (RW)
  185. *
  186. * Affiliate groups of cpu0, each bit represents a group
  187. * 0: no effect
  188. * 1: the group is not assigned to CPU0
  189. */
  190. #define SYSCTL_AFFILIATE_CLEAR_LINK_MASK (0xFU)
  191. #define SYSCTL_AFFILIATE_CLEAR_LINK_SHIFT (0U)
  192. #define SYSCTL_AFFILIATE_CLEAR_LINK_SET(x) (((uint32_t)(x) << SYSCTL_AFFILIATE_CLEAR_LINK_SHIFT) & SYSCTL_AFFILIATE_CLEAR_LINK_MASK)
  193. #define SYSCTL_AFFILIATE_CLEAR_LINK_GET(x) (((uint32_t)(x) & SYSCTL_AFFILIATE_CLEAR_LINK_MASK) >> SYSCTL_AFFILIATE_CLEAR_LINK_SHIFT)
  194. /* Bitfield definition for register of struct array AFFILIATE: TOGGLE */
  195. /*
  196. * LINK (RW)
  197. *
  198. * Affiliate groups of cpu0, each bit represents a group
  199. * 0: no effect
  200. * 1: toggle the result that whether the group is assigned to CPU0 before
  201. */
  202. #define SYSCTL_AFFILIATE_TOGGLE_LINK_MASK (0xFU)
  203. #define SYSCTL_AFFILIATE_TOGGLE_LINK_SHIFT (0U)
  204. #define SYSCTL_AFFILIATE_TOGGLE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_AFFILIATE_TOGGLE_LINK_SHIFT) & SYSCTL_AFFILIATE_TOGGLE_LINK_MASK)
  205. #define SYSCTL_AFFILIATE_TOGGLE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_AFFILIATE_TOGGLE_LINK_MASK) >> SYSCTL_AFFILIATE_TOGGLE_LINK_SHIFT)
  206. /* Bitfield definition for register of struct array RETENTION: VALUE */
  207. /*
  208. * LINK (RW)
  209. *
  210. * retention setting while CPU0 enter stop mode, each bit represents a resource
  211. * bit00: soc_mem is kept on while cpu stop,
  212. * bit01: soc_ctx is kept on while cpu stop,
  213. * bit02: cpu0_mem is kept on while cpu stop,
  214. * bit03: cpu0_ctx is kept on while cpu stop,
  215. * bit04: xtal_hold is kept on while cpu stop,
  216. * bit05: pll0_hold is kept on while cpu stop,
  217. * bit06: pll1_hold is kept on while cpu stop,
  218. * bit07: pll2_hold is kept on while cpu stop,
  219. */
  220. #define SYSCTL_RETENTION_VALUE_LINK_MASK (0xFFU)
  221. #define SYSCTL_RETENTION_VALUE_LINK_SHIFT (0U)
  222. #define SYSCTL_RETENTION_VALUE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_RETENTION_VALUE_LINK_SHIFT) & SYSCTL_RETENTION_VALUE_LINK_MASK)
  223. #define SYSCTL_RETENTION_VALUE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_RETENTION_VALUE_LINK_MASK) >> SYSCTL_RETENTION_VALUE_LINK_SHIFT)
  224. /* Bitfield definition for register of struct array RETENTION: SET */
  225. /*
  226. * LINK (RW)
  227. *
  228. * retention setting while CPU0 enter stop mode, each bit represents a resource
  229. * 0: no effect
  230. * 1: keep
  231. */
  232. #define SYSCTL_RETENTION_SET_LINK_MASK (0xFFU)
  233. #define SYSCTL_RETENTION_SET_LINK_SHIFT (0U)
  234. #define SYSCTL_RETENTION_SET_LINK_SET(x) (((uint32_t)(x) << SYSCTL_RETENTION_SET_LINK_SHIFT) & SYSCTL_RETENTION_SET_LINK_MASK)
  235. #define SYSCTL_RETENTION_SET_LINK_GET(x) (((uint32_t)(x) & SYSCTL_RETENTION_SET_LINK_MASK) >> SYSCTL_RETENTION_SET_LINK_SHIFT)
  236. /* Bitfield definition for register of struct array RETENTION: CLEAR */
  237. /*
  238. * LINK (RW)
  239. *
  240. * retention setting while CPU0 enter stop mode, each bit represents a resource
  241. * 0: no effect
  242. * 1: no keep
  243. */
  244. #define SYSCTL_RETENTION_CLEAR_LINK_MASK (0xFFU)
  245. #define SYSCTL_RETENTION_CLEAR_LINK_SHIFT (0U)
  246. #define SYSCTL_RETENTION_CLEAR_LINK_SET(x) (((uint32_t)(x) << SYSCTL_RETENTION_CLEAR_LINK_SHIFT) & SYSCTL_RETENTION_CLEAR_LINK_MASK)
  247. #define SYSCTL_RETENTION_CLEAR_LINK_GET(x) (((uint32_t)(x) & SYSCTL_RETENTION_CLEAR_LINK_MASK) >> SYSCTL_RETENTION_CLEAR_LINK_SHIFT)
  248. /* Bitfield definition for register of struct array RETENTION: TOGGLE */
  249. /*
  250. * LINK (RW)
  251. *
  252. * retention setting while CPU0 enter stop mode, each bit represents a resource
  253. * 0: no effect
  254. * 1: toggle the result that whether the resource is kept on while CPU0 stop before
  255. */
  256. #define SYSCTL_RETENTION_TOGGLE_LINK_MASK (0xFFU)
  257. #define SYSCTL_RETENTION_TOGGLE_LINK_SHIFT (0U)
  258. #define SYSCTL_RETENTION_TOGGLE_LINK_SET(x) (((uint32_t)(x) << SYSCTL_RETENTION_TOGGLE_LINK_SHIFT) & SYSCTL_RETENTION_TOGGLE_LINK_MASK)
  259. #define SYSCTL_RETENTION_TOGGLE_LINK_GET(x) (((uint32_t)(x) & SYSCTL_RETENTION_TOGGLE_LINK_MASK) >> SYSCTL_RETENTION_TOGGLE_LINK_SHIFT)
  260. /* Bitfield definition for register of struct array POWER: STATUS */
  261. /*
  262. * FLAG (RW)
  263. *
  264. * flag represents power cycle happened from last clear of this bit
  265. * 0: power domain did not edurance power cycle since last clear of this bit
  266. * 1: power domain enduranced power cycle since last clear of this bit
  267. */
  268. #define SYSCTL_POWER_STATUS_FLAG_MASK (0x80000000UL)
  269. #define SYSCTL_POWER_STATUS_FLAG_SHIFT (31U)
  270. #define SYSCTL_POWER_STATUS_FLAG_SET(x) (((uint32_t)(x) << SYSCTL_POWER_STATUS_FLAG_SHIFT) & SYSCTL_POWER_STATUS_FLAG_MASK)
  271. #define SYSCTL_POWER_STATUS_FLAG_GET(x) (((uint32_t)(x) & SYSCTL_POWER_STATUS_FLAG_MASK) >> SYSCTL_POWER_STATUS_FLAG_SHIFT)
  272. /*
  273. * FLAG_WAKE (RW)
  274. *
  275. * flag represents wakeup power cycle happened from last clear of this bit
  276. * 0: power domain did not edurance wakeup power cycle since last clear of this bit
  277. * 1: power domain enduranced wakeup power cycle since last clear of this bit
  278. */
  279. #define SYSCTL_POWER_STATUS_FLAG_WAKE_MASK (0x40000000UL)
  280. #define SYSCTL_POWER_STATUS_FLAG_WAKE_SHIFT (30U)
  281. #define SYSCTL_POWER_STATUS_FLAG_WAKE_SET(x) (((uint32_t)(x) << SYSCTL_POWER_STATUS_FLAG_WAKE_SHIFT) & SYSCTL_POWER_STATUS_FLAG_WAKE_MASK)
  282. #define SYSCTL_POWER_STATUS_FLAG_WAKE_GET(x) (((uint32_t)(x) & SYSCTL_POWER_STATUS_FLAG_WAKE_MASK) >> SYSCTL_POWER_STATUS_FLAG_WAKE_SHIFT)
  283. /*
  284. * LF_DISABLE (RO)
  285. *
  286. * low fanout power switch disable
  287. * 0: low fanout power switches are turned on
  288. * 1: low fanout power switches are truned off
  289. */
  290. #define SYSCTL_POWER_STATUS_LF_DISABLE_MASK (0x1000U)
  291. #define SYSCTL_POWER_STATUS_LF_DISABLE_SHIFT (12U)
  292. #define SYSCTL_POWER_STATUS_LF_DISABLE_GET(x) (((uint32_t)(x) & SYSCTL_POWER_STATUS_LF_DISABLE_MASK) >> SYSCTL_POWER_STATUS_LF_DISABLE_SHIFT)
  293. /*
  294. * LF_ACK (RO)
  295. *
  296. * low fanout power switch feedback
  297. * 0: low fanout power switches are turned on
  298. * 1: low fanout power switches are truned off
  299. */
  300. #define SYSCTL_POWER_STATUS_LF_ACK_MASK (0x100U)
  301. #define SYSCTL_POWER_STATUS_LF_ACK_SHIFT (8U)
  302. #define SYSCTL_POWER_STATUS_LF_ACK_GET(x) (((uint32_t)(x) & SYSCTL_POWER_STATUS_LF_ACK_MASK) >> SYSCTL_POWER_STATUS_LF_ACK_SHIFT)
  303. /* Bitfield definition for register of struct array POWER: LF_WAIT */
  304. /*
  305. * WAIT (RW)
  306. *
  307. * wait time for low fan out power switch turn on, default value is 255
  308. * 0: 0 clock cycle
  309. * 1: 1 clock cycles
  310. * . . .
  311. * clock cycles count on 24MHz
  312. */
  313. #define SYSCTL_POWER_LF_WAIT_WAIT_MASK (0xFFFFFUL)
  314. #define SYSCTL_POWER_LF_WAIT_WAIT_SHIFT (0U)
  315. #define SYSCTL_POWER_LF_WAIT_WAIT_SET(x) (((uint32_t)(x) << SYSCTL_POWER_LF_WAIT_WAIT_SHIFT) & SYSCTL_POWER_LF_WAIT_WAIT_MASK)
  316. #define SYSCTL_POWER_LF_WAIT_WAIT_GET(x) (((uint32_t)(x) & SYSCTL_POWER_LF_WAIT_WAIT_MASK) >> SYSCTL_POWER_LF_WAIT_WAIT_SHIFT)
  317. /* Bitfield definition for register of struct array POWER: OFF_WAIT */
  318. /*
  319. * WAIT (RW)
  320. *
  321. * wait time for power switch turn off, default value is 15
  322. * 0: 0 clock cycle
  323. * 1: 1 clock cycles
  324. * . . .
  325. * clock cycles count on 24MHz
  326. */
  327. #define SYSCTL_POWER_OFF_WAIT_WAIT_MASK (0xFFFFFUL)
  328. #define SYSCTL_POWER_OFF_WAIT_WAIT_SHIFT (0U)
  329. #define SYSCTL_POWER_OFF_WAIT_WAIT_SET(x) (((uint32_t)(x) << SYSCTL_POWER_OFF_WAIT_WAIT_SHIFT) & SYSCTL_POWER_OFF_WAIT_WAIT_MASK)
  330. #define SYSCTL_POWER_OFF_WAIT_WAIT_GET(x) (((uint32_t)(x) & SYSCTL_POWER_OFF_WAIT_WAIT_MASK) >> SYSCTL_POWER_OFF_WAIT_WAIT_SHIFT)
  331. /* Bitfield definition for register of struct array RESET: CONTROL */
  332. /*
  333. * FLAG (RW)
  334. *
  335. * flag represents reset happened from last clear of this bit
  336. * 0: domain did not edurance reset cycle since last clear of this bit
  337. * 1: domain enduranced reset cycle since last clear of this bit
  338. */
  339. #define SYSCTL_RESET_CONTROL_FLAG_MASK (0x80000000UL)
  340. #define SYSCTL_RESET_CONTROL_FLAG_SHIFT (31U)
  341. #define SYSCTL_RESET_CONTROL_FLAG_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONTROL_FLAG_SHIFT) & SYSCTL_RESET_CONTROL_FLAG_MASK)
  342. #define SYSCTL_RESET_CONTROL_FLAG_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONTROL_FLAG_MASK) >> SYSCTL_RESET_CONTROL_FLAG_SHIFT)
  343. /*
  344. * FLAG_WAKE (RW)
  345. *
  346. * flag represents wakeup reset happened from last clear of this bit
  347. * 0: domain did not edurance wakeup reset cycle since last clear of this bit
  348. * 1: domain enduranced wakeup reset cycle since last clear of this bit
  349. */
  350. #define SYSCTL_RESET_CONTROL_FLAG_WAKE_MASK (0x40000000UL)
  351. #define SYSCTL_RESET_CONTROL_FLAG_WAKE_SHIFT (30U)
  352. #define SYSCTL_RESET_CONTROL_FLAG_WAKE_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONTROL_FLAG_WAKE_SHIFT) & SYSCTL_RESET_CONTROL_FLAG_WAKE_MASK)
  353. #define SYSCTL_RESET_CONTROL_FLAG_WAKE_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONTROL_FLAG_WAKE_MASK) >> SYSCTL_RESET_CONTROL_FLAG_WAKE_SHIFT)
  354. /*
  355. * HOLD (RW)
  356. *
  357. * perform reset and hold in reset, until ths bit cleared by software
  358. * 0: reset is released for function
  359. * 1: reset is assert and hold
  360. */
  361. #define SYSCTL_RESET_CONTROL_HOLD_MASK (0x10U)
  362. #define SYSCTL_RESET_CONTROL_HOLD_SHIFT (4U)
  363. #define SYSCTL_RESET_CONTROL_HOLD_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONTROL_HOLD_SHIFT) & SYSCTL_RESET_CONTROL_HOLD_MASK)
  364. #define SYSCTL_RESET_CONTROL_HOLD_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONTROL_HOLD_MASK) >> SYSCTL_RESET_CONTROL_HOLD_SHIFT)
  365. /*
  366. * RESET (RW)
  367. *
  368. * perform reset and release imediately
  369. * 0: reset is released
  370. * 1 reset is asserted and will release automaticly
  371. */
  372. #define SYSCTL_RESET_CONTROL_RESET_MASK (0x1U)
  373. #define SYSCTL_RESET_CONTROL_RESET_SHIFT (0U)
  374. #define SYSCTL_RESET_CONTROL_RESET_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONTROL_RESET_SHIFT) & SYSCTL_RESET_CONTROL_RESET_MASK)
  375. #define SYSCTL_RESET_CONTROL_RESET_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONTROL_RESET_MASK) >> SYSCTL_RESET_CONTROL_RESET_SHIFT)
  376. /* Bitfield definition for register of struct array RESET: CONFIG */
  377. /*
  378. * PRE_WAIT (RW)
  379. *
  380. * wait cycle numbers before assert reset
  381. * 0: wait 0 cycle
  382. * 1: wait 1 cycles
  383. * . . .
  384. * Note, clock cycle is base on 24M
  385. */
  386. #define SYSCTL_RESET_CONFIG_PRE_WAIT_MASK (0xFF0000UL)
  387. #define SYSCTL_RESET_CONFIG_PRE_WAIT_SHIFT (16U)
  388. #define SYSCTL_RESET_CONFIG_PRE_WAIT_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONFIG_PRE_WAIT_SHIFT) & SYSCTL_RESET_CONFIG_PRE_WAIT_MASK)
  389. #define SYSCTL_RESET_CONFIG_PRE_WAIT_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONFIG_PRE_WAIT_MASK) >> SYSCTL_RESET_CONFIG_PRE_WAIT_SHIFT)
  390. /*
  391. * RSTCLK_NUM (RW)
  392. *
  393. * reset clock number(must be even number)
  394. * 0: 0 cycle
  395. * 1: 0 cycles
  396. * 2: 2 cycles
  397. * 3: 2 cycles
  398. * . . .
  399. * Note, clock cycle is base on 24M
  400. */
  401. #define SYSCTL_RESET_CONFIG_RSTCLK_NUM_MASK (0xFF00U)
  402. #define SYSCTL_RESET_CONFIG_RSTCLK_NUM_SHIFT (8U)
  403. #define SYSCTL_RESET_CONFIG_RSTCLK_NUM_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONFIG_RSTCLK_NUM_SHIFT) & SYSCTL_RESET_CONFIG_RSTCLK_NUM_MASK)
  404. #define SYSCTL_RESET_CONFIG_RSTCLK_NUM_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONFIG_RSTCLK_NUM_MASK) >> SYSCTL_RESET_CONFIG_RSTCLK_NUM_SHIFT)
  405. /*
  406. * POST_WAIT (RW)
  407. *
  408. * time guard band for reset release
  409. * 0: wait 0 cycle
  410. * 1: wait 1 cycles
  411. * . . .
  412. * Note, clock cycle is base on 24M
  413. */
  414. #define SYSCTL_RESET_CONFIG_POST_WAIT_MASK (0xFFU)
  415. #define SYSCTL_RESET_CONFIG_POST_WAIT_SHIFT (0U)
  416. #define SYSCTL_RESET_CONFIG_POST_WAIT_SET(x) (((uint32_t)(x) << SYSCTL_RESET_CONFIG_POST_WAIT_SHIFT) & SYSCTL_RESET_CONFIG_POST_WAIT_MASK)
  417. #define SYSCTL_RESET_CONFIG_POST_WAIT_GET(x) (((uint32_t)(x) & SYSCTL_RESET_CONFIG_POST_WAIT_MASK) >> SYSCTL_RESET_CONFIG_POST_WAIT_SHIFT)
  418. /* Bitfield definition for register of struct array RESET: COUNTER */
  419. /*
  420. * COUNTER (RW)
  421. *
  422. * self clear trigger counter, reset triggered when counter value is 1, write 0 will cancel reset
  423. * 0: wait 0 cycle
  424. * 1: wait 1 cycles
  425. * . . .
  426. * Note, clock cycle is base on 24M
  427. */
  428. #define SYSCTL_RESET_COUNTER_COUNTER_MASK (0xFFFFFUL)
  429. #define SYSCTL_RESET_COUNTER_COUNTER_SHIFT (0U)
  430. #define SYSCTL_RESET_COUNTER_COUNTER_SET(x) (((uint32_t)(x) << SYSCTL_RESET_COUNTER_COUNTER_SHIFT) & SYSCTL_RESET_COUNTER_COUNTER_MASK)
  431. #define SYSCTL_RESET_COUNTER_COUNTER_GET(x) (((uint32_t)(x) & SYSCTL_RESET_COUNTER_COUNTER_MASK) >> SYSCTL_RESET_COUNTER_COUNTER_SHIFT)
  432. /* Bitfield definition for register array: CLOCK_CPU */
  433. /*
  434. * GLB_BUSY (RO)
  435. *
  436. * global busy
  437. * 0: no changes pending to any clock
  438. * 1: any of nodes is changing status
  439. */
  440. #define SYSCTL_CLOCK_CPU_GLB_BUSY_MASK (0x80000000UL)
  441. #define SYSCTL_CLOCK_CPU_GLB_BUSY_SHIFT (31U)
  442. #define SYSCTL_CLOCK_CPU_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_GLB_BUSY_MASK) >> SYSCTL_CLOCK_CPU_GLB_BUSY_SHIFT)
  443. /*
  444. * LOC_BUSY (RO)
  445. *
  446. * local busy
  447. * 0: a change is pending for current node
  448. * 1: current node is changing status
  449. */
  450. #define SYSCTL_CLOCK_CPU_LOC_BUSY_MASK (0x40000000UL)
  451. #define SYSCTL_CLOCK_CPU_LOC_BUSY_SHIFT (30U)
  452. #define SYSCTL_CLOCK_CPU_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_LOC_BUSY_MASK) >> SYSCTL_CLOCK_CPU_LOC_BUSY_SHIFT)
  453. /*
  454. * PRESERVE (RW)
  455. *
  456. * preserve function against global select
  457. * 0: select global clock setting
  458. * 1: not select global clock setting
  459. */
  460. #define SYSCTL_CLOCK_CPU_PRESERVE_MASK (0x10000000UL)
  461. #define SYSCTL_CLOCK_CPU_PRESERVE_SHIFT (28U)
  462. #define SYSCTL_CLOCK_CPU_PRESERVE_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_CPU_PRESERVE_SHIFT) & SYSCTL_CLOCK_CPU_PRESERVE_MASK)
  463. #define SYSCTL_CLOCK_CPU_PRESERVE_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_PRESERVE_MASK) >> SYSCTL_CLOCK_CPU_PRESERVE_SHIFT)
  464. /*
  465. * SUB1_DIV (RW)
  466. *
  467. * ahb bus divider, the bus clock is generated by cpu_clock/div
  468. * 0: divider by 1
  469. * 1: divider by 2
  470. * …
  471. */
  472. #define SYSCTL_CLOCK_CPU_SUB1_DIV_MASK (0xF00000UL)
  473. #define SYSCTL_CLOCK_CPU_SUB1_DIV_SHIFT (20U)
  474. #define SYSCTL_CLOCK_CPU_SUB1_DIV_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_CPU_SUB1_DIV_SHIFT) & SYSCTL_CLOCK_CPU_SUB1_DIV_MASK)
  475. #define SYSCTL_CLOCK_CPU_SUB1_DIV_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_SUB1_DIV_MASK) >> SYSCTL_CLOCK_CPU_SUB1_DIV_SHIFT)
  476. /*
  477. * SUB0_DIV (RW)
  478. *
  479. * axi bus divider, the bus clock is generated by cpu_clock/div
  480. * 0: divider by 1
  481. * 1: divider by 2
  482. * …
  483. */
  484. #define SYSCTL_CLOCK_CPU_SUB0_DIV_MASK (0xF0000UL)
  485. #define SYSCTL_CLOCK_CPU_SUB0_DIV_SHIFT (16U)
  486. #define SYSCTL_CLOCK_CPU_SUB0_DIV_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_CPU_SUB0_DIV_SHIFT) & SYSCTL_CLOCK_CPU_SUB0_DIV_MASK)
  487. #define SYSCTL_CLOCK_CPU_SUB0_DIV_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_SUB0_DIV_MASK) >> SYSCTL_CLOCK_CPU_SUB0_DIV_SHIFT)
  488. /*
  489. * MUX (RW)
  490. *
  491. * current mux in clock component
  492. * 0:osc0_clk0
  493. * 1:pll0_clk0
  494. * 2:pll0_clk1
  495. * 3:pll0_clk2
  496. * 4:pll1_clk0
  497. * 5:pll1_clk1
  498. * 6:pll2_clk0
  499. * 7:pll2_clk1
  500. */
  501. #define SYSCTL_CLOCK_CPU_MUX_MASK (0xF00U)
  502. #define SYSCTL_CLOCK_CPU_MUX_SHIFT (8U)
  503. #define SYSCTL_CLOCK_CPU_MUX_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_CPU_MUX_SHIFT) & SYSCTL_CLOCK_CPU_MUX_MASK)
  504. #define SYSCTL_CLOCK_CPU_MUX_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_MUX_MASK) >> SYSCTL_CLOCK_CPU_MUX_SHIFT)
  505. /*
  506. * DIV (RW)
  507. *
  508. * clock divider
  509. * 0: divider by 1
  510. * 1: divider by 2
  511. * 2: divider by 3
  512. * . . .
  513. * 255: divider by 256
  514. */
  515. #define SYSCTL_CLOCK_CPU_DIV_MASK (0xFFU)
  516. #define SYSCTL_CLOCK_CPU_DIV_SHIFT (0U)
  517. #define SYSCTL_CLOCK_CPU_DIV_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_CPU_DIV_SHIFT) & SYSCTL_CLOCK_CPU_DIV_MASK)
  518. #define SYSCTL_CLOCK_CPU_DIV_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_CPU_DIV_MASK) >> SYSCTL_CLOCK_CPU_DIV_SHIFT)
  519. /* Bitfield definition for register array: CLOCK */
  520. /*
  521. * GLB_BUSY (RO)
  522. *
  523. * global busy
  524. * 0: no changes pending to any clock
  525. * 1: any of nodes is changing status
  526. */
  527. #define SYSCTL_CLOCK_GLB_BUSY_MASK (0x80000000UL)
  528. #define SYSCTL_CLOCK_GLB_BUSY_SHIFT (31U)
  529. #define SYSCTL_CLOCK_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_GLB_BUSY_MASK) >> SYSCTL_CLOCK_GLB_BUSY_SHIFT)
  530. /*
  531. * LOC_BUSY (RO)
  532. *
  533. * local busy
  534. * 0: a change is pending for current node
  535. * 1: current node is changing status
  536. */
  537. #define SYSCTL_CLOCK_LOC_BUSY_MASK (0x40000000UL)
  538. #define SYSCTL_CLOCK_LOC_BUSY_SHIFT (30U)
  539. #define SYSCTL_CLOCK_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_LOC_BUSY_MASK) >> SYSCTL_CLOCK_LOC_BUSY_SHIFT)
  540. /*
  541. * PRESERVE (RW)
  542. *
  543. * preserve function against global select
  544. * 0: select global clock setting
  545. * 1: not select global clock setting
  546. */
  547. #define SYSCTL_CLOCK_PRESERVE_MASK (0x10000000UL)
  548. #define SYSCTL_CLOCK_PRESERVE_SHIFT (28U)
  549. #define SYSCTL_CLOCK_PRESERVE_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_PRESERVE_SHIFT) & SYSCTL_CLOCK_PRESERVE_MASK)
  550. #define SYSCTL_CLOCK_PRESERVE_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_PRESERVE_MASK) >> SYSCTL_CLOCK_PRESERVE_SHIFT)
  551. /*
  552. * MUX (RW)
  553. *
  554. * current mux in clock component
  555. * 0:osc0_clk0
  556. * 1:pll0_clk0
  557. * 2:pll0_clk1
  558. * 3:pll0_clk2
  559. * 4:pll1_clk0
  560. * 5:pll1_clk1
  561. * 6:pll2_clk0
  562. * 7:pll2_clk1
  563. */
  564. #define SYSCTL_CLOCK_MUX_MASK (0xF00U)
  565. #define SYSCTL_CLOCK_MUX_SHIFT (8U)
  566. #define SYSCTL_CLOCK_MUX_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_MUX_SHIFT) & SYSCTL_CLOCK_MUX_MASK)
  567. #define SYSCTL_CLOCK_MUX_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_MUX_MASK) >> SYSCTL_CLOCK_MUX_SHIFT)
  568. /*
  569. * DIV (RW)
  570. *
  571. * clock divider
  572. * 0: divider by 1
  573. * 1: divider by 2
  574. * 2: divider by 3
  575. * . . .
  576. * 255: divider by 256
  577. */
  578. #define SYSCTL_CLOCK_DIV_MASK (0xFFU)
  579. #define SYSCTL_CLOCK_DIV_SHIFT (0U)
  580. #define SYSCTL_CLOCK_DIV_SET(x) (((uint32_t)(x) << SYSCTL_CLOCK_DIV_SHIFT) & SYSCTL_CLOCK_DIV_MASK)
  581. #define SYSCTL_CLOCK_DIV_GET(x) (((uint32_t)(x) & SYSCTL_CLOCK_DIV_MASK) >> SYSCTL_CLOCK_DIV_SHIFT)
  582. /* Bitfield definition for register array: ADCCLK */
  583. /*
  584. * GLB_BUSY (RO)
  585. *
  586. * global busy
  587. * 0: no changes pending to any clock
  588. * 1: any of nodes is changing status
  589. */
  590. #define SYSCTL_ADCCLK_GLB_BUSY_MASK (0x80000000UL)
  591. #define SYSCTL_ADCCLK_GLB_BUSY_SHIFT (31U)
  592. #define SYSCTL_ADCCLK_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_ADCCLK_GLB_BUSY_MASK) >> SYSCTL_ADCCLK_GLB_BUSY_SHIFT)
  593. /*
  594. * LOC_BUSY (RO)
  595. *
  596. * local busy
  597. * 0: a change is pending for current node
  598. * 1: current node is changing status
  599. */
  600. #define SYSCTL_ADCCLK_LOC_BUSY_MASK (0x40000000UL)
  601. #define SYSCTL_ADCCLK_LOC_BUSY_SHIFT (30U)
  602. #define SYSCTL_ADCCLK_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_ADCCLK_LOC_BUSY_MASK) >> SYSCTL_ADCCLK_LOC_BUSY_SHIFT)
  603. /*
  604. * PRESERVE (RW)
  605. *
  606. * preserve function against global select
  607. * 0: select global clock setting
  608. * 1: not select global clock setting
  609. */
  610. #define SYSCTL_ADCCLK_PRESERVE_MASK (0x10000000UL)
  611. #define SYSCTL_ADCCLK_PRESERVE_SHIFT (28U)
  612. #define SYSCTL_ADCCLK_PRESERVE_SET(x) (((uint32_t)(x) << SYSCTL_ADCCLK_PRESERVE_SHIFT) & SYSCTL_ADCCLK_PRESERVE_MASK)
  613. #define SYSCTL_ADCCLK_PRESERVE_GET(x) (((uint32_t)(x) & SYSCTL_ADCCLK_PRESERVE_MASK) >> SYSCTL_ADCCLK_PRESERVE_SHIFT)
  614. /*
  615. * MUX (RW)
  616. *
  617. * current mux
  618. * 0: ana clock
  619. * 1: ahb clock
  620. */
  621. #define SYSCTL_ADCCLK_MUX_MASK (0x100U)
  622. #define SYSCTL_ADCCLK_MUX_SHIFT (8U)
  623. #define SYSCTL_ADCCLK_MUX_SET(x) (((uint32_t)(x) << SYSCTL_ADCCLK_MUX_SHIFT) & SYSCTL_ADCCLK_MUX_MASK)
  624. #define SYSCTL_ADCCLK_MUX_GET(x) (((uint32_t)(x) & SYSCTL_ADCCLK_MUX_MASK) >> SYSCTL_ADCCLK_MUX_SHIFT)
  625. /* Bitfield definition for register array: DACCLK */
  626. /*
  627. * GLB_BUSY (RO)
  628. *
  629. * global busy
  630. * 0: no changes pending to any clock
  631. * 1: any of nodes is changing status
  632. */
  633. #define SYSCTL_DACCLK_GLB_BUSY_MASK (0x80000000UL)
  634. #define SYSCTL_DACCLK_GLB_BUSY_SHIFT (31U)
  635. #define SYSCTL_DACCLK_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_DACCLK_GLB_BUSY_MASK) >> SYSCTL_DACCLK_GLB_BUSY_SHIFT)
  636. /*
  637. * LOC_BUSY (RO)
  638. *
  639. * local busy
  640. * 0: a change is pending for current node
  641. * 1: current node is changing status
  642. */
  643. #define SYSCTL_DACCLK_LOC_BUSY_MASK (0x40000000UL)
  644. #define SYSCTL_DACCLK_LOC_BUSY_SHIFT (30U)
  645. #define SYSCTL_DACCLK_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_DACCLK_LOC_BUSY_MASK) >> SYSCTL_DACCLK_LOC_BUSY_SHIFT)
  646. /*
  647. * PRESERVE (RW)
  648. *
  649. * preserve function against global select
  650. * 0: select global clock setting
  651. * 1: not select global clock setting
  652. */
  653. #define SYSCTL_DACCLK_PRESERVE_MASK (0x10000000UL)
  654. #define SYSCTL_DACCLK_PRESERVE_SHIFT (28U)
  655. #define SYSCTL_DACCLK_PRESERVE_SET(x) (((uint32_t)(x) << SYSCTL_DACCLK_PRESERVE_SHIFT) & SYSCTL_DACCLK_PRESERVE_MASK)
  656. #define SYSCTL_DACCLK_PRESERVE_GET(x) (((uint32_t)(x) & SYSCTL_DACCLK_PRESERVE_MASK) >> SYSCTL_DACCLK_PRESERVE_SHIFT)
  657. /*
  658. * MUX (RW)
  659. *
  660. * current mux
  661. * 0: ana clock
  662. * 1: ahb clock
  663. */
  664. #define SYSCTL_DACCLK_MUX_MASK (0x100U)
  665. #define SYSCTL_DACCLK_MUX_SHIFT (8U)
  666. #define SYSCTL_DACCLK_MUX_SET(x) (((uint32_t)(x) << SYSCTL_DACCLK_MUX_SHIFT) & SYSCTL_DACCLK_MUX_MASK)
  667. #define SYSCTL_DACCLK_MUX_GET(x) (((uint32_t)(x) & SYSCTL_DACCLK_MUX_MASK) >> SYSCTL_DACCLK_MUX_SHIFT)
  668. /* Bitfield definition for register array: I2SCLK */
  669. /*
  670. * GLB_BUSY (RO)
  671. *
  672. * global busy
  673. * 0: no changes pending to any clock
  674. * 1: any of nodes is changing status
  675. */
  676. #define SYSCTL_I2SCLK_GLB_BUSY_MASK (0x80000000UL)
  677. #define SYSCTL_I2SCLK_GLB_BUSY_SHIFT (31U)
  678. #define SYSCTL_I2SCLK_GLB_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_I2SCLK_GLB_BUSY_MASK) >> SYSCTL_I2SCLK_GLB_BUSY_SHIFT)
  679. /*
  680. * LOC_BUSY (RO)
  681. *
  682. * local busy
  683. * 0: a change is pending for current node
  684. * 1: current node is changing status
  685. */
  686. #define SYSCTL_I2SCLK_LOC_BUSY_MASK (0x40000000UL)
  687. #define SYSCTL_I2SCLK_LOC_BUSY_SHIFT (30U)
  688. #define SYSCTL_I2SCLK_LOC_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_I2SCLK_LOC_BUSY_MASK) >> SYSCTL_I2SCLK_LOC_BUSY_SHIFT)
  689. /*
  690. * PRESERVE (RW)
  691. *
  692. * preserve function against global select
  693. * 0: select global clock setting
  694. * 1: not select global clock setting
  695. */
  696. #define SYSCTL_I2SCLK_PRESERVE_MASK (0x10000000UL)
  697. #define SYSCTL_I2SCLK_PRESERVE_SHIFT (28U)
  698. #define SYSCTL_I2SCLK_PRESERVE_SET(x) (((uint32_t)(x) << SYSCTL_I2SCLK_PRESERVE_SHIFT) & SYSCTL_I2SCLK_PRESERVE_MASK)
  699. #define SYSCTL_I2SCLK_PRESERVE_GET(x) (((uint32_t)(x) & SYSCTL_I2SCLK_PRESERVE_MASK) >> SYSCTL_I2SCLK_PRESERVE_SHIFT)
  700. /*
  701. * MUX (RW)
  702. *
  703. * current mux
  704. * 0: aud clock 0
  705. * 1: aud clock 1
  706. */
  707. #define SYSCTL_I2SCLK_MUX_MASK (0x100U)
  708. #define SYSCTL_I2SCLK_MUX_SHIFT (8U)
  709. #define SYSCTL_I2SCLK_MUX_SET(x) (((uint32_t)(x) << SYSCTL_I2SCLK_MUX_SHIFT) & SYSCTL_I2SCLK_MUX_MASK)
  710. #define SYSCTL_I2SCLK_MUX_GET(x) (((uint32_t)(x) & SYSCTL_I2SCLK_MUX_MASK) >> SYSCTL_I2SCLK_MUX_SHIFT)
  711. /* Bitfield definition for register: GLOBAL00 */
  712. /*
  713. * MUX (RW)
  714. *
  715. * global clock override request
  716. * bit0: override to preset0
  717. * bit1: override to preset1
  718. * bit2: override to preset2
  719. * bit3: override to preset3
  720. */
  721. #define SYSCTL_GLOBAL00_MUX_MASK (0xFU)
  722. #define SYSCTL_GLOBAL00_MUX_SHIFT (0U)
  723. #define SYSCTL_GLOBAL00_MUX_SET(x) (((uint32_t)(x) << SYSCTL_GLOBAL00_MUX_SHIFT) & SYSCTL_GLOBAL00_MUX_MASK)
  724. #define SYSCTL_GLOBAL00_MUX_GET(x) (((uint32_t)(x) & SYSCTL_GLOBAL00_MUX_MASK) >> SYSCTL_GLOBAL00_MUX_SHIFT)
  725. /* Bitfield definition for register of struct array MONITOR: CONTROL */
  726. /*
  727. * VALID (RW)
  728. *
  729. * result is ready for read
  730. * 0: not ready
  731. * 1: result is ready
  732. */
  733. #define SYSCTL_MONITOR_CONTROL_VALID_MASK (0x80000000UL)
  734. #define SYSCTL_MONITOR_CONTROL_VALID_SHIFT (31U)
  735. #define SYSCTL_MONITOR_CONTROL_VALID_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_VALID_SHIFT) & SYSCTL_MONITOR_CONTROL_VALID_MASK)
  736. #define SYSCTL_MONITOR_CONTROL_VALID_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_VALID_MASK) >> SYSCTL_MONITOR_CONTROL_VALID_SHIFT)
  737. /*
  738. * DIV_BUSY (RO)
  739. *
  740. * divider is applying new setting
  741. */
  742. #define SYSCTL_MONITOR_CONTROL_DIV_BUSY_MASK (0x8000000UL)
  743. #define SYSCTL_MONITOR_CONTROL_DIV_BUSY_SHIFT (27U)
  744. #define SYSCTL_MONITOR_CONTROL_DIV_BUSY_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_DIV_BUSY_MASK) >> SYSCTL_MONITOR_CONTROL_DIV_BUSY_SHIFT)
  745. /*
  746. * OUTEN (RW)
  747. *
  748. * enable clock output
  749. */
  750. #define SYSCTL_MONITOR_CONTROL_OUTEN_MASK (0x1000000UL)
  751. #define SYSCTL_MONITOR_CONTROL_OUTEN_SHIFT (24U)
  752. #define SYSCTL_MONITOR_CONTROL_OUTEN_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_OUTEN_SHIFT) & SYSCTL_MONITOR_CONTROL_OUTEN_MASK)
  753. #define SYSCTL_MONITOR_CONTROL_OUTEN_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_OUTEN_MASK) >> SYSCTL_MONITOR_CONTROL_OUTEN_SHIFT)
  754. /*
  755. * DIV (RW)
  756. *
  757. * output divider
  758. */
  759. #define SYSCTL_MONITOR_CONTROL_DIV_MASK (0xFF0000UL)
  760. #define SYSCTL_MONITOR_CONTROL_DIV_SHIFT (16U)
  761. #define SYSCTL_MONITOR_CONTROL_DIV_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_DIV_SHIFT) & SYSCTL_MONITOR_CONTROL_DIV_MASK)
  762. #define SYSCTL_MONITOR_CONTROL_DIV_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_DIV_MASK) >> SYSCTL_MONITOR_CONTROL_DIV_SHIFT)
  763. /*
  764. * HIGH (RW)
  765. *
  766. * clock frequency higher than upper limit
  767. */
  768. #define SYSCTL_MONITOR_CONTROL_HIGH_MASK (0x8000U)
  769. #define SYSCTL_MONITOR_CONTROL_HIGH_SHIFT (15U)
  770. #define SYSCTL_MONITOR_CONTROL_HIGH_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_HIGH_SHIFT) & SYSCTL_MONITOR_CONTROL_HIGH_MASK)
  771. #define SYSCTL_MONITOR_CONTROL_HIGH_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_HIGH_MASK) >> SYSCTL_MONITOR_CONTROL_HIGH_SHIFT)
  772. /*
  773. * LOW (RW)
  774. *
  775. * clock frequency lower than lower limit
  776. */
  777. #define SYSCTL_MONITOR_CONTROL_LOW_MASK (0x4000U)
  778. #define SYSCTL_MONITOR_CONTROL_LOW_SHIFT (14U)
  779. #define SYSCTL_MONITOR_CONTROL_LOW_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_LOW_SHIFT) & SYSCTL_MONITOR_CONTROL_LOW_MASK)
  780. #define SYSCTL_MONITOR_CONTROL_LOW_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_LOW_MASK) >> SYSCTL_MONITOR_CONTROL_LOW_SHIFT)
  781. /*
  782. * START (RW)
  783. *
  784. * start measurement
  785. */
  786. #define SYSCTL_MONITOR_CONTROL_START_MASK (0x1000U)
  787. #define SYSCTL_MONITOR_CONTROL_START_SHIFT (12U)
  788. #define SYSCTL_MONITOR_CONTROL_START_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_START_SHIFT) & SYSCTL_MONITOR_CONTROL_START_MASK)
  789. #define SYSCTL_MONITOR_CONTROL_START_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_START_MASK) >> SYSCTL_MONITOR_CONTROL_START_SHIFT)
  790. /*
  791. * MODE (RW)
  792. *
  793. * work mode,
  794. * 0: register value will be compared to measurement
  795. * 1: upper and lower value will be recordered in register
  796. */
  797. #define SYSCTL_MONITOR_CONTROL_MODE_MASK (0x400U)
  798. #define SYSCTL_MONITOR_CONTROL_MODE_SHIFT (10U)
  799. #define SYSCTL_MONITOR_CONTROL_MODE_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_MODE_SHIFT) & SYSCTL_MONITOR_CONTROL_MODE_MASK)
  800. #define SYSCTL_MONITOR_CONTROL_MODE_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_MODE_MASK) >> SYSCTL_MONITOR_CONTROL_MODE_SHIFT)
  801. /*
  802. * ACCURACY (RW)
  803. *
  804. * measurement accuracy,
  805. * 0: resolution is 1kHz
  806. * 1: resolution is 1Hz
  807. */
  808. #define SYSCTL_MONITOR_CONTROL_ACCURACY_MASK (0x200U)
  809. #define SYSCTL_MONITOR_CONTROL_ACCURACY_SHIFT (9U)
  810. #define SYSCTL_MONITOR_CONTROL_ACCURACY_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_ACCURACY_SHIFT) & SYSCTL_MONITOR_CONTROL_ACCURACY_MASK)
  811. #define SYSCTL_MONITOR_CONTROL_ACCURACY_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_ACCURACY_MASK) >> SYSCTL_MONITOR_CONTROL_ACCURACY_SHIFT)
  812. /*
  813. * REFERENCE (RW)
  814. *
  815. * refrence clock selection,
  816. * 0: 32k
  817. * 1: 24M
  818. */
  819. #define SYSCTL_MONITOR_CONTROL_REFERENCE_MASK (0x100U)
  820. #define SYSCTL_MONITOR_CONTROL_REFERENCE_SHIFT (8U)
  821. #define SYSCTL_MONITOR_CONTROL_REFERENCE_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_REFERENCE_SHIFT) & SYSCTL_MONITOR_CONTROL_REFERENCE_MASK)
  822. #define SYSCTL_MONITOR_CONTROL_REFERENCE_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_REFERENCE_MASK) >> SYSCTL_MONITOR_CONTROL_REFERENCE_SHIFT)
  823. /*
  824. * SELECTION (RW)
  825. *
  826. * clock measurement selection
  827. */
  828. #define SYSCTL_MONITOR_CONTROL_SELECTION_MASK (0xFFU)
  829. #define SYSCTL_MONITOR_CONTROL_SELECTION_SHIFT (0U)
  830. #define SYSCTL_MONITOR_CONTROL_SELECTION_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_CONTROL_SELECTION_SHIFT) & SYSCTL_MONITOR_CONTROL_SELECTION_MASK)
  831. #define SYSCTL_MONITOR_CONTROL_SELECTION_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CONTROL_SELECTION_MASK) >> SYSCTL_MONITOR_CONTROL_SELECTION_SHIFT)
  832. /* Bitfield definition for register of struct array MONITOR: CURRENT */
  833. /*
  834. * FREQUENCY (RO)
  835. *
  836. * self updating measure result
  837. */
  838. #define SYSCTL_MONITOR_CURRENT_FREQUENCY_MASK (0xFFFFFFFFUL)
  839. #define SYSCTL_MONITOR_CURRENT_FREQUENCY_SHIFT (0U)
  840. #define SYSCTL_MONITOR_CURRENT_FREQUENCY_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_CURRENT_FREQUENCY_MASK) >> SYSCTL_MONITOR_CURRENT_FREQUENCY_SHIFT)
  841. /* Bitfield definition for register of struct array MONITOR: LOW_LIMIT */
  842. /*
  843. * FREQUENCY (RW)
  844. *
  845. * lower frequency
  846. */
  847. #define SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_MASK (0xFFFFFFFFUL)
  848. #define SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_SHIFT (0U)
  849. #define SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_SHIFT) & SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_MASK)
  850. #define SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_MASK) >> SYSCTL_MONITOR_LOW_LIMIT_FREQUENCY_SHIFT)
  851. /* Bitfield definition for register of struct array MONITOR: HIGH_LIMIT */
  852. /*
  853. * FREQUENCY (RW)
  854. *
  855. * upper frequency
  856. */
  857. #define SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_MASK (0xFFFFFFFFUL)
  858. #define SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_SHIFT (0U)
  859. #define SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_SET(x) (((uint32_t)(x) << SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_SHIFT) & SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_MASK)
  860. #define SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_GET(x) (((uint32_t)(x) & SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_MASK) >> SYSCTL_MONITOR_HIGH_LIMIT_FREQUENCY_SHIFT)
  861. /* Bitfield definition for register of struct array CPU: LP */
  862. /*
  863. * WAKE_CNT (RW)
  864. *
  865. * CPU0 wake up counter, counter satuated at 255, write 0x00 to clear
  866. */
  867. #define SYSCTL_CPU_LP_WAKE_CNT_MASK (0xFF000000UL)
  868. #define SYSCTL_CPU_LP_WAKE_CNT_SHIFT (24U)
  869. #define SYSCTL_CPU_LP_WAKE_CNT_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_WAKE_CNT_SHIFT) & SYSCTL_CPU_LP_WAKE_CNT_MASK)
  870. #define SYSCTL_CPU_LP_WAKE_CNT_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_WAKE_CNT_MASK) >> SYSCTL_CPU_LP_WAKE_CNT_SHIFT)
  871. /*
  872. * HALT (RW)
  873. *
  874. * halt request for CPU0,
  875. * 0: CPU0 will start to execute after reset or receive wakeup request
  876. * 1: CPU0 will not start after reset, or wakeup after WFI
  877. */
  878. #define SYSCTL_CPU_LP_HALT_MASK (0x10000UL)
  879. #define SYSCTL_CPU_LP_HALT_SHIFT (16U)
  880. #define SYSCTL_CPU_LP_HALT_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_HALT_SHIFT) & SYSCTL_CPU_LP_HALT_MASK)
  881. #define SYSCTL_CPU_LP_HALT_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_HALT_MASK) >> SYSCTL_CPU_LP_HALT_SHIFT)
  882. /*
  883. * WAKE (RO)
  884. *
  885. * CPU0 is waking up
  886. * 0: CPU0 wake up not asserted
  887. * 1: CPU0 wake up asserted
  888. */
  889. #define SYSCTL_CPU_LP_WAKE_MASK (0x2000U)
  890. #define SYSCTL_CPU_LP_WAKE_SHIFT (13U)
  891. #define SYSCTL_CPU_LP_WAKE_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_WAKE_MASK) >> SYSCTL_CPU_LP_WAKE_SHIFT)
  892. /*
  893. * EXEC (RO)
  894. *
  895. * CPU0 is executing
  896. * 0: CPU0 is not executing
  897. * 1: CPU0 is executing
  898. */
  899. #define SYSCTL_CPU_LP_EXEC_MASK (0x1000U)
  900. #define SYSCTL_CPU_LP_EXEC_SHIFT (12U)
  901. #define SYSCTL_CPU_LP_EXEC_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_EXEC_MASK) >> SYSCTL_CPU_LP_EXEC_SHIFT)
  902. /*
  903. * WAKE_FLAG (RW)
  904. *
  905. * CPU0 wakeup flag, indicate a wakeup event got active, write 1 to clear this bit
  906. * 0: CPU0 wakeup not happened
  907. * 1: CPU0 wake up happened
  908. */
  909. #define SYSCTL_CPU_LP_WAKE_FLAG_MASK (0x400U)
  910. #define SYSCTL_CPU_LP_WAKE_FLAG_SHIFT (10U)
  911. #define SYSCTL_CPU_LP_WAKE_FLAG_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_WAKE_FLAG_SHIFT) & SYSCTL_CPU_LP_WAKE_FLAG_MASK)
  912. #define SYSCTL_CPU_LP_WAKE_FLAG_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_WAKE_FLAG_MASK) >> SYSCTL_CPU_LP_WAKE_FLAG_SHIFT)
  913. /*
  914. * SLEEP_FLAG (RW)
  915. *
  916. * CPU0 sleep flag, indicate a sleep event got active, write 1 to clear this bit
  917. * 0: CPU0 sleep not happened
  918. * 1: CPU0 sleep happened
  919. */
  920. #define SYSCTL_CPU_LP_SLEEP_FLAG_MASK (0x200U)
  921. #define SYSCTL_CPU_LP_SLEEP_FLAG_SHIFT (9U)
  922. #define SYSCTL_CPU_LP_SLEEP_FLAG_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_SLEEP_FLAG_SHIFT) & SYSCTL_CPU_LP_SLEEP_FLAG_MASK)
  923. #define SYSCTL_CPU_LP_SLEEP_FLAG_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_SLEEP_FLAG_MASK) >> SYSCTL_CPU_LP_SLEEP_FLAG_SHIFT)
  924. /*
  925. * RESET_FLAG (RW)
  926. *
  927. * CPU0 reset flag, indicate a reset event got active, write 1 to clear this bit
  928. * 0: CPU0 reset not happened
  929. * 1: CPU0 reset happened
  930. */
  931. #define SYSCTL_CPU_LP_RESET_FLAG_MASK (0x100U)
  932. #define SYSCTL_CPU_LP_RESET_FLAG_SHIFT (8U)
  933. #define SYSCTL_CPU_LP_RESET_FLAG_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_RESET_FLAG_SHIFT) & SYSCTL_CPU_LP_RESET_FLAG_MASK)
  934. #define SYSCTL_CPU_LP_RESET_FLAG_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_RESET_FLAG_MASK) >> SYSCTL_CPU_LP_RESET_FLAG_SHIFT)
  935. /*
  936. * MODE (RW)
  937. *
  938. * Low power mode, system behavior after WFI
  939. * 00: CPU clock stop after WFI
  940. * 01: System enter low power mode after WFI
  941. * 10: Keep running after WFI
  942. * 11: reserved
  943. */
  944. #define SYSCTL_CPU_LP_MODE_MASK (0x3U)
  945. #define SYSCTL_CPU_LP_MODE_SHIFT (0U)
  946. #define SYSCTL_CPU_LP_MODE_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LP_MODE_SHIFT) & SYSCTL_CPU_LP_MODE_MASK)
  947. #define SYSCTL_CPU_LP_MODE_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LP_MODE_MASK) >> SYSCTL_CPU_LP_MODE_SHIFT)
  948. /* Bitfield definition for register of struct array CPU: LOCK */
  949. /*
  950. * GPR (RW)
  951. *
  952. * Lock bit for CPU_DATA0 to CPU_DATA13, once set, this bit will not clear untile next reset
  953. */
  954. #define SYSCTL_CPU_LOCK_GPR_MASK (0xFFFCU)
  955. #define SYSCTL_CPU_LOCK_GPR_SHIFT (2U)
  956. #define SYSCTL_CPU_LOCK_GPR_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LOCK_GPR_SHIFT) & SYSCTL_CPU_LOCK_GPR_MASK)
  957. #define SYSCTL_CPU_LOCK_GPR_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LOCK_GPR_MASK) >> SYSCTL_CPU_LOCK_GPR_SHIFT)
  958. /*
  959. * LOCK (RW)
  960. *
  961. * Lock bit for CPU_LOCK
  962. */
  963. #define SYSCTL_CPU_LOCK_LOCK_MASK (0x2U)
  964. #define SYSCTL_CPU_LOCK_LOCK_SHIFT (1U)
  965. #define SYSCTL_CPU_LOCK_LOCK_SET(x) (((uint32_t)(x) << SYSCTL_CPU_LOCK_LOCK_SHIFT) & SYSCTL_CPU_LOCK_LOCK_MASK)
  966. #define SYSCTL_CPU_LOCK_LOCK_GET(x) (((uint32_t)(x) & SYSCTL_CPU_LOCK_LOCK_MASK) >> SYSCTL_CPU_LOCK_LOCK_SHIFT)
  967. /* Bitfield definition for register of struct array CPU: GPR0 */
  968. /*
  969. * GPR (RW)
  970. *
  971. * register for software to handle resume, can save resume address or status
  972. */
  973. #define SYSCTL_CPU_GPR_GPR_MASK (0xFFFFFFFFUL)
  974. #define SYSCTL_CPU_GPR_GPR_SHIFT (0U)
  975. #define SYSCTL_CPU_GPR_GPR_SET(x) (((uint32_t)(x) << SYSCTL_CPU_GPR_GPR_SHIFT) & SYSCTL_CPU_GPR_GPR_MASK)
  976. #define SYSCTL_CPU_GPR_GPR_GET(x) (((uint32_t)(x) & SYSCTL_CPU_GPR_GPR_MASK) >> SYSCTL_CPU_GPR_GPR_SHIFT)
  977. /* Bitfield definition for register of struct array CPU: STATUS0 */
  978. /*
  979. * STATUS (RO)
  980. *
  981. * IRQ values
  982. */
  983. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS_MASK (0xFFFFFFFFUL)
  984. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS_SHIFT (0U)
  985. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS_GET(x) (((uint32_t)(x) & SYSCTL_CPU_WAKEUP_STATUS_STATUS_MASK) >> SYSCTL_CPU_WAKEUP_STATUS_STATUS_SHIFT)
  986. /* Bitfield definition for register of struct array CPU: ENABLE0 */
  987. /*
  988. * ENABLE (RW)
  989. *
  990. * IRQ wakeup enable
  991. */
  992. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_MASK (0xFFFFFFFFUL)
  993. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_SHIFT (0U)
  994. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_SET(x) (((uint32_t)(x) << SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_SHIFT) & SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_MASK)
  995. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_GET(x) (((uint32_t)(x) & SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_MASK) >> SYSCTL_CPU_WAKEUP_ENABLE_ENABLE_SHIFT)
  996. /* RESOURCE register group index macro definition */
  997. #define SYSCTL_RESOURCE_CPU0 (0UL)
  998. #define SYSCTL_RESOURCE_CPX0 (1UL)
  999. #define SYSCTL_RESOURCE_POW_CPU0 (21UL)
  1000. #define SYSCTL_RESOURCE_RST_SOC (22UL)
  1001. #define SYSCTL_RESOURCE_RST_CPU0 (23UL)
  1002. #define SYSCTL_RESOURCE_CLK_SRC_XTAL (32UL)
  1003. #define SYSCTL_RESOURCE_CLK_SRC_PLL0 (33UL)
  1004. #define SYSCTL_RESOURCE_CLK_SRC_CLK0_PLL0 (34UL)
  1005. #define SYSCTL_RESOURCE_CLK_SRC_CLK1_PLL0 (35UL)
  1006. #define SYSCTL_RESOURCE_CLK_SRC_CLK2_PLL0 (36UL)
  1007. #define SYSCTL_RESOURCE_CLK_SRC_PLL1 (37UL)
  1008. #define SYSCTL_RESOURCE_CLK_SRC_CLK0_PLL1 (38UL)
  1009. #define SYSCTL_RESOURCE_CLK_SRC_CLK1_PLL1 (39UL)
  1010. #define SYSCTL_RESOURCE_CLK_SRC_PLL2 (40UL)
  1011. #define SYSCTL_RESOURCE_CLK_SRC_CLK0_PLL2 (41UL)
  1012. #define SYSCTL_RESOURCE_CLK_SRC_CLK1_PLL2 (42UL)
  1013. #define SYSCTL_RESOURCE_CLK_SRC_PLL0_REF (43UL)
  1014. #define SYSCTL_RESOURCE_CLK_SRC_PLL1_REF (44UL)
  1015. #define SYSCTL_RESOURCE_CLK_SRC_PLL2_REF (45UL)
  1016. #define SYSCTL_RESOURCE_CLK_TOP_CPU0 (64UL)
  1017. #define SYSCTL_RESOURCE_CLK_TOP_MCT0 (65UL)
  1018. #define SYSCTL_RESOURCE_CLK_TOP_FEMC (66UL)
  1019. #define SYSCTL_RESOURCE_CLK_TOP_XPI0 (67UL)
  1020. #define SYSCTL_RESOURCE_CLK_TOP_XPI1 (68UL)
  1021. #define SYSCTL_RESOURCE_CLK_TOP_TMR0 (69UL)
  1022. #define SYSCTL_RESOURCE_CLK_TOP_TMR1 (70UL)
  1023. #define SYSCTL_RESOURCE_CLK_TOP_TMR2 (71UL)
  1024. #define SYSCTL_RESOURCE_CLK_TOP_TMR3 (72UL)
  1025. #define SYSCTL_RESOURCE_CLK_TOP_URT0 (73UL)
  1026. #define SYSCTL_RESOURCE_CLK_TOP_URT1 (74UL)
  1027. #define SYSCTL_RESOURCE_CLK_TOP_URT2 (75UL)
  1028. #define SYSCTL_RESOURCE_CLK_TOP_URT3 (76UL)
  1029. #define SYSCTL_RESOURCE_CLK_TOP_URT4 (77UL)
  1030. #define SYSCTL_RESOURCE_CLK_TOP_URT5 (78UL)
  1031. #define SYSCTL_RESOURCE_CLK_TOP_URT6 (79UL)
  1032. #define SYSCTL_RESOURCE_CLK_TOP_URT7 (80UL)
  1033. #define SYSCTL_RESOURCE_CLK_TOP_I2C0 (81UL)
  1034. #define SYSCTL_RESOURCE_CLK_TOP_I2C1 (82UL)
  1035. #define SYSCTL_RESOURCE_CLK_TOP_I2C2 (83UL)
  1036. #define SYSCTL_RESOURCE_CLK_TOP_I2C3 (84UL)
  1037. #define SYSCTL_RESOURCE_CLK_TOP_SPI0 (85UL)
  1038. #define SYSCTL_RESOURCE_CLK_TOP_SPI1 (86UL)
  1039. #define SYSCTL_RESOURCE_CLK_TOP_SPI2 (87UL)
  1040. #define SYSCTL_RESOURCE_CLK_TOP_SPI3 (88UL)
  1041. #define SYSCTL_RESOURCE_CLK_TOP_CAN0 (89UL)
  1042. #define SYSCTL_RESOURCE_CLK_TOP_CAN1 (90UL)
  1043. #define SYSCTL_RESOURCE_CLK_TOP_PTPC (91UL)
  1044. #define SYSCTL_RESOURCE_CLK_TOP_ANA0 (92UL)
  1045. #define SYSCTL_RESOURCE_CLK_TOP_ANA1 (93UL)
  1046. #define SYSCTL_RESOURCE_CLK_TOP_ANA2 (94UL)
  1047. #define SYSCTL_RESOURCE_CLK_TOP_ANA3 (95UL)
  1048. #define SYSCTL_RESOURCE_CLK_TOP_AUD0 (96UL)
  1049. #define SYSCTL_RESOURCE_CLK_TOP_AUD1 (97UL)
  1050. #define SYSCTL_RESOURCE_CLK_TOP_ETH0 (98UL)
  1051. #define SYSCTL_RESOURCE_CLK_TOP_PTP0 (99UL)
  1052. #define SYSCTL_RESOURCE_CLK_TOP_REF0 (100UL)
  1053. #define SYSCTL_RESOURCE_CLK_TOP_REF1 (101UL)
  1054. #define SYSCTL_RESOURCE_CLK_TOP_NTM0 (102UL)
  1055. #define SYSCTL_RESOURCE_CLK_TOP_SDC0 (103UL)
  1056. #define SYSCTL_RESOURCE_CLK_TOP_ADC0 (128UL)
  1057. #define SYSCTL_RESOURCE_CLK_TOP_ADC1 (129UL)
  1058. #define SYSCTL_RESOURCE_CLK_TOP_ADC2 (130UL)
  1059. #define SYSCTL_RESOURCE_CLK_TOP_DAC0 (131UL)
  1060. #define SYSCTL_RESOURCE_CLK_TOP_I2S0 (132UL)
  1061. #define SYSCTL_RESOURCE_CLK_TOP_I2S1 (133UL)
  1062. #define SYSCTL_RESOURCE_AHBP (256UL)
  1063. #define SYSCTL_RESOURCE_AXIS (257UL)
  1064. #define SYSCTL_RESOURCE_AXIC (258UL)
  1065. #define SYSCTL_RESOURCE_FEMC (259UL)
  1066. #define SYSCTL_RESOURCE_ROM0 (260UL)
  1067. #define SYSCTL_RESOURCE_LMM0 (261UL)
  1068. #define SYSCTL_RESOURCE_RAM0 (262UL)
  1069. #define SYSCTL_RESOURCE_MCT0 (263UL)
  1070. #define SYSCTL_RESOURCE_XPI0 (264UL)
  1071. #define SYSCTL_RESOURCE_XPI1 (265UL)
  1072. #define SYSCTL_RESOURCE_SDP0 (266UL)
  1073. #define SYSCTL_RESOURCE_RNG0 (267UL)
  1074. #define SYSCTL_RESOURCE_KMAN (268UL)
  1075. #define SYSCTL_RESOURCE_DMA0 (269UL)
  1076. #define SYSCTL_RESOURCE_DMA1 (270UL)
  1077. #define SYSCTL_RESOURCE_FFA0 (271UL)
  1078. #define SYSCTL_RESOURCE_GPIO (272UL)
  1079. #define SYSCTL_RESOURCE_MBX0 (273UL)
  1080. #define SYSCTL_RESOURCE_WDG0 (274UL)
  1081. #define SYSCTL_RESOURCE_WDG1 (275UL)
  1082. #define SYSCTL_RESOURCE_TSNS (276UL)
  1083. #define SYSCTL_RESOURCE_TMR0 (277UL)
  1084. #define SYSCTL_RESOURCE_TMR1 (278UL)
  1085. #define SYSCTL_RESOURCE_TMR2 (279UL)
  1086. #define SYSCTL_RESOURCE_TMR3 (280UL)
  1087. #define SYSCTL_RESOURCE_URT0 (281UL)
  1088. #define SYSCTL_RESOURCE_URT1 (282UL)
  1089. #define SYSCTL_RESOURCE_URT2 (283UL)
  1090. #define SYSCTL_RESOURCE_URT3 (284UL)
  1091. #define SYSCTL_RESOURCE_URT4 (285UL)
  1092. #define SYSCTL_RESOURCE_URT5 (286UL)
  1093. #define SYSCTL_RESOURCE_URT6 (287UL)
  1094. #define SYSCTL_RESOURCE_URT7 (288UL)
  1095. #define SYSCTL_RESOURCE_I2C0 (289UL)
  1096. #define SYSCTL_RESOURCE_I2C1 (290UL)
  1097. #define SYSCTL_RESOURCE_I2C2 (291UL)
  1098. #define SYSCTL_RESOURCE_I2C3 (292UL)
  1099. #define SYSCTL_RESOURCE_SPI0 (293UL)
  1100. #define SYSCTL_RESOURCE_SPI1 (294UL)
  1101. #define SYSCTL_RESOURCE_SPI2 (295UL)
  1102. #define SYSCTL_RESOURCE_SPI3 (296UL)
  1103. #define SYSCTL_RESOURCE_CAN0 (297UL)
  1104. #define SYSCTL_RESOURCE_CAN1 (298UL)
  1105. #define SYSCTL_RESOURCE_PTPC (299UL)
  1106. #define SYSCTL_RESOURCE_ADC0 (300UL)
  1107. #define SYSCTL_RESOURCE_ADC1 (301UL)
  1108. #define SYSCTL_RESOURCE_ADC2 (302UL)
  1109. #define SYSCTL_RESOURCE_DAC0 (303UL)
  1110. #define SYSCTL_RESOURCE_ACMP (304UL)
  1111. #define SYSCTL_RESOURCE_I2S0 (305UL)
  1112. #define SYSCTL_RESOURCE_I2S1 (306UL)
  1113. #define SYSCTL_RESOURCE_PDM0 (307UL)
  1114. #define SYSCTL_RESOURCE_DAO (308UL)
  1115. #define SYSCTL_RESOURCE_MSYN (309UL)
  1116. #define SYSCTL_RESOURCE_MOT0 (310UL)
  1117. #define SYSCTL_RESOURCE_MOT1 (311UL)
  1118. #define SYSCTL_RESOURCE_ETH0 (312UL)
  1119. #define SYSCTL_RESOURCE_NTM0 (313UL)
  1120. #define SYSCTL_RESOURCE_SDC0 (314UL)
  1121. #define SYSCTL_RESOURCE_USB0 (315UL)
  1122. #define SYSCTL_RESOURCE_REF0 (316UL)
  1123. #define SYSCTL_RESOURCE_REF1 (317UL)
  1124. /* GROUP0 register group index macro definition */
  1125. #define SYSCTL_GROUP0_LINK0 (0UL)
  1126. #define SYSCTL_GROUP0_LINK1 (1UL)
  1127. /* AFFILIATE register group index macro definition */
  1128. #define SYSCTL_AFFILIATE_CPU0 (0UL)
  1129. /* RETENTION register group index macro definition */
  1130. #define SYSCTL_RETENTION_CPU0 (0UL)
  1131. /* POWER register group index macro definition */
  1132. #define SYSCTL_POWER_CPU0 (0UL)
  1133. /* RESET register group index macro definition */
  1134. #define SYSCTL_RESET_SOC (0UL)
  1135. #define SYSCTL_RESET_CPU0 (1UL)
  1136. /* CLOCK_CPU register group index macro definition */
  1137. #define SYSCTL_CLOCK_CPU_CLK_TOP_CPU0 (0UL)
  1138. /* CLOCK register group index macro definition */
  1139. #define SYSCTL_CLOCK_CLK_TOP_MCT0 (0UL)
  1140. #define SYSCTL_CLOCK_CLK_TOP_FEMC (1UL)
  1141. #define SYSCTL_CLOCK_CLK_TOP_XPI0 (2UL)
  1142. #define SYSCTL_CLOCK_CLK_TOP_XPI1 (3UL)
  1143. #define SYSCTL_CLOCK_CLK_TOP_TMR0 (4UL)
  1144. #define SYSCTL_CLOCK_CLK_TOP_TMR1 (5UL)
  1145. #define SYSCTL_CLOCK_CLK_TOP_TMR2 (6UL)
  1146. #define SYSCTL_CLOCK_CLK_TOP_TMR3 (7UL)
  1147. #define SYSCTL_CLOCK_CLK_TOP_URT0 (8UL)
  1148. #define SYSCTL_CLOCK_CLK_TOP_URT1 (9UL)
  1149. #define SYSCTL_CLOCK_CLK_TOP_URT2 (10UL)
  1150. #define SYSCTL_CLOCK_CLK_TOP_URT3 (11UL)
  1151. #define SYSCTL_CLOCK_CLK_TOP_URT4 (12UL)
  1152. #define SYSCTL_CLOCK_CLK_TOP_URT5 (13UL)
  1153. #define SYSCTL_CLOCK_CLK_TOP_URT6 (14UL)
  1154. #define SYSCTL_CLOCK_CLK_TOP_URT7 (15UL)
  1155. #define SYSCTL_CLOCK_CLK_TOP_I2C0 (16UL)
  1156. #define SYSCTL_CLOCK_CLK_TOP_I2C1 (17UL)
  1157. #define SYSCTL_CLOCK_CLK_TOP_I2C2 (18UL)
  1158. #define SYSCTL_CLOCK_CLK_TOP_I2C3 (19UL)
  1159. #define SYSCTL_CLOCK_CLK_TOP_SPI0 (20UL)
  1160. #define SYSCTL_CLOCK_CLK_TOP_SPI1 (21UL)
  1161. #define SYSCTL_CLOCK_CLK_TOP_SPI2 (22UL)
  1162. #define SYSCTL_CLOCK_CLK_TOP_SPI3 (23UL)
  1163. #define SYSCTL_CLOCK_CLK_TOP_CAN0 (24UL)
  1164. #define SYSCTL_CLOCK_CLK_TOP_CAN1 (25UL)
  1165. #define SYSCTL_CLOCK_CLK_TOP_PTPC (26UL)
  1166. #define SYSCTL_CLOCK_CLK_TOP_ANA0 (27UL)
  1167. #define SYSCTL_CLOCK_CLK_TOP_ANA1 (28UL)
  1168. #define SYSCTL_CLOCK_CLK_TOP_ANA2 (29UL)
  1169. #define SYSCTL_CLOCK_CLK_TOP_ANA3 (30UL)
  1170. #define SYSCTL_CLOCK_CLK_TOP_AUD0 (31UL)
  1171. #define SYSCTL_CLOCK_CLK_TOP_AUD1 (32UL)
  1172. #define SYSCTL_CLOCK_CLK_TOP_ETH0 (33UL)
  1173. #define SYSCTL_CLOCK_CLK_TOP_PTP0 (34UL)
  1174. #define SYSCTL_CLOCK_CLK_TOP_REF0 (35UL)
  1175. #define SYSCTL_CLOCK_CLK_TOP_REF1 (36UL)
  1176. #define SYSCTL_CLOCK_CLK_TOP_NTM0 (37UL)
  1177. #define SYSCTL_CLOCK_CLK_TOP_SDC0 (38UL)
  1178. /* ADCCLK register group index macro definition */
  1179. #define SYSCTL_ADCCLK_CLK_TOP_ADC0 (0UL)
  1180. #define SYSCTL_ADCCLK_CLK_TOP_ADC1 (1UL)
  1181. #define SYSCTL_ADCCLK_CLK_TOP_ADC2 (2UL)
  1182. /* DACCLK register group index macro definition */
  1183. #define SYSCTL_DACCLK_CLK_TOP_DAC0 (0UL)
  1184. /* I2SCLK register group index macro definition */
  1185. #define SYSCTL_I2SCLK_CLK_TOP_I2S0 (0UL)
  1186. #define SYSCTL_I2SCLK_CLK_TOP_I2S1 (1UL)
  1187. /* MONITOR register group index macro definition */
  1188. #define SYSCTL_MONITOR_SLICE0 (0UL)
  1189. #define SYSCTL_MONITOR_SLICE1 (1UL)
  1190. #define SYSCTL_MONITOR_SLICE2 (2UL)
  1191. #define SYSCTL_MONITOR_SLICE3 (3UL)
  1192. /* GPR register group index macro definition */
  1193. #define SYSCTL_CPU_GPR_GPR0 (0UL)
  1194. #define SYSCTL_CPU_GPR_GPR1 (1UL)
  1195. #define SYSCTL_CPU_GPR_GPR2 (2UL)
  1196. #define SYSCTL_CPU_GPR_GPR3 (3UL)
  1197. #define SYSCTL_CPU_GPR_GPR4 (4UL)
  1198. #define SYSCTL_CPU_GPR_GPR5 (5UL)
  1199. #define SYSCTL_CPU_GPR_GPR6 (6UL)
  1200. #define SYSCTL_CPU_GPR_GPR7 (7UL)
  1201. #define SYSCTL_CPU_GPR_GPR8 (8UL)
  1202. #define SYSCTL_CPU_GPR_GPR9 (9UL)
  1203. #define SYSCTL_CPU_GPR_GPR10 (10UL)
  1204. #define SYSCTL_CPU_GPR_GPR11 (11UL)
  1205. #define SYSCTL_CPU_GPR_GPR12 (12UL)
  1206. #define SYSCTL_CPU_GPR_GPR13 (13UL)
  1207. /* WAKEUP_STATUS register group index macro definition */
  1208. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS0 (0UL)
  1209. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS1 (1UL)
  1210. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS2 (2UL)
  1211. #define SYSCTL_CPU_WAKEUP_STATUS_STATUS3 (3UL)
  1212. /* WAKEUP_ENABLE register group index macro definition */
  1213. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE0 (0UL)
  1214. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE1 (1UL)
  1215. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE2 (2UL)
  1216. #define SYSCTL_CPU_WAKEUP_ENABLE_ENABLE3 (3UL)
  1217. /* CPU register group index macro definition */
  1218. #define SYSCTL_CPU_CPU0 (0UL)
  1219. #endif /* HPM_SYSCTL_H */