upmu.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. /*
  2. * Copyright 2021-2024 NXP
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #ifndef MU_H
  7. #define MU_H
  8. #include <stdint.h>
  9. typedef volatile unsigned int vuint32_t;
  10. /****************************************************************************/
  11. /* MODULE: Message Unit */
  12. /****************************************************************************/
  13. /* VER Register */
  14. typedef union {
  15. vuint32_t R;
  16. struct {
  17. vuint32_t FEATURE : 16;
  18. vuint32_t MINOR : 8;
  19. vuint32_t MAJOR : 8;
  20. } B;
  21. } MU_VER_t;
  22. /* PAR Register */
  23. typedef union {
  24. vuint32_t R;
  25. struct {
  26. vuint32_t TR_NUM : 8;
  27. vuint32_t RR_NUM : 8;
  28. vuint32_t GIR_NUM : 8;
  29. vuint32_t FLAG_WIDTH : 8;
  30. } B;
  31. } MU_PAR_t;
  32. /* CR Register */
  33. typedef union {
  34. vuint32_t R;
  35. struct {
  36. vuint32_t MUR : 1;
  37. vuint32_t MURIE : 1;
  38. vuint32_t rsrv_1 : 30;
  39. } B;
  40. } MU_CR_t;
  41. /* SR Register */
  42. typedef union {
  43. vuint32_t R;
  44. struct {
  45. vuint32_t MURS : 1;
  46. vuint32_t MURIP : 1;
  47. vuint32_t EP : 1;
  48. vuint32_t FUP : 1;
  49. vuint32_t GIRP : 1;
  50. vuint32_t TEP : 1;
  51. vuint32_t RFP : 1;
  52. vuint32_t CEP : 1;
  53. vuint32_t rsrv_1 : 24;
  54. } B;
  55. } MU_SR_t;
  56. /* CCR0 Register */
  57. typedef union {
  58. vuint32_t R;
  59. struct {
  60. vuint32_t NMI : 1;
  61. vuint32_t HR : 1;
  62. vuint32_t HRM : 1;
  63. vuint32_t CLKE : 1;
  64. vuint32_t RSTH : 1;
  65. vuint32_t BOOT : 2;
  66. vuint32_t rsrv_1 : 25;
  67. } B;
  68. } MU_CCR0_t;
  69. /* CIER0 Register */
  70. typedef union {
  71. vuint32_t R;
  72. struct {
  73. vuint32_t rsrv_1 : 1;
  74. vuint32_t HRIE : 1;
  75. vuint32_t RUNIE : 1;
  76. vuint32_t RAIE : 1;
  77. vuint32_t HALTIE : 1;
  78. vuint32_t WAITIE : 1;
  79. vuint32_t STOPIE : 1;
  80. vuint32_t PDIE : 1;
  81. vuint32_t rsrv_2 : 24;
  82. } B;
  83. } MU_CIER0_t;
  84. /* CSSR0 Register */
  85. typedef union {
  86. vuint32_t R;
  87. struct {
  88. vuint32_t NMIC : 1;
  89. vuint32_t HRIP : 1;
  90. vuint32_t RUN : 1;
  91. vuint32_t RAIP : 1;
  92. vuint32_t HALT : 1;
  93. vuint32_t WAIT : 1;
  94. vuint32_t STOP : 1;
  95. vuint32_t PD : 1;
  96. vuint32_t rsrv_1 : 24;
  97. } B;
  98. } MU_CSSR0_t;
  99. /* CSR0 Register */
  100. typedef union {
  101. vuint32_t R;
  102. struct {
  103. vuint32_t rsrv_1 : 1;
  104. vuint32_t HRIP : 1;
  105. vuint32_t RUN : 1;
  106. vuint32_t RAIP : 1;
  107. vuint32_t HALT : 1;
  108. vuint32_t WAIT : 1;
  109. vuint32_t STOP : 1;
  110. vuint32_t PD : 1;
  111. vuint32_t rsrv_2 : 24;
  112. } B;
  113. } MU_CSR0_t;
  114. /* FCR Register */
  115. typedef union {
  116. vuint32_t R;
  117. struct {
  118. vuint32_t F0 : 1;
  119. vuint32_t F1 : 1;
  120. vuint32_t F2 : 1;
  121. vuint32_t rsrv_1 : 29;
  122. } B;
  123. } MU_FCR_t;
  124. /* FSR Register */
  125. typedef union {
  126. vuint32_t R;
  127. struct {
  128. vuint32_t F0 : 1;
  129. vuint32_t F1 : 1;
  130. vuint32_t F2 : 1;
  131. vuint32_t rsrv_1 : 29;
  132. } B;
  133. } MU_FSR_t;
  134. /* GIER Register */
  135. typedef union {
  136. vuint32_t R;
  137. struct {
  138. vuint32_t GIE0 : 1;
  139. vuint32_t GIE1 : 1;
  140. vuint32_t rsrv_1 : 30;
  141. } B;
  142. } MU_GIER_t;
  143. /* GCR Register */
  144. typedef union {
  145. vuint32_t R;
  146. struct {
  147. vuint32_t GIR0 : 1;
  148. vuint32_t GIR1 : 1;
  149. vuint32_t rsrv_1 : 30;
  150. } B;
  151. } MU_GCR_t;
  152. /* GSR Register */
  153. typedef union {
  154. vuint32_t R;
  155. struct {
  156. vuint32_t GIP0 : 1;
  157. vuint32_t GIP1 : 1;
  158. vuint32_t rsrv_1 : 30;
  159. } B;
  160. } MU_GSR_t;
  161. /* TCR Register */
  162. typedef union{
  163. vuint32_t R;
  164. struct {
  165. vuint32_t TIE0 : 1;
  166. vuint32_t TIE1 : 1;
  167. vuint32_t rsrv_1 : 30;
  168. } B;
  169. } MU_TCR_t;
  170. /* TSR Register */
  171. typedef union {
  172. vuint32_t R;
  173. struct {
  174. vuint32_t TE0 : 1;
  175. vuint32_t TE1 : 1;
  176. vuint32_t rsrv_1 : 30;
  177. } B;
  178. } MU_TSR_t;
  179. /* RCR Register */
  180. typedef union {
  181. vuint32_t R;
  182. struct {
  183. vuint32_t RIE0 : 1;
  184. vuint32_t RIE1 : 1;
  185. vuint32_t rsrv_1 : 30;
  186. } B;
  187. } MU_RCR_t;
  188. /* RSR Register */
  189. typedef union {
  190. vuint32_t R;
  191. struct {
  192. vuint32_t RF0 : 1;
  193. vuint32_t RF1 : 1;
  194. vuint32_t rsrv_1 : 30;
  195. } B;
  196. } MU_RSR_t;
  197. /* TR0 Register */
  198. typedef union {
  199. vuint32_t R;
  200. struct {
  201. vuint32_t TR_DATA : 32;
  202. } B;
  203. } MU_TR0_t;
  204. /* TR1 Register */
  205. typedef union {
  206. vuint32_t R;
  207. struct {
  208. vuint32_t TR_DATA : 32;
  209. } B;
  210. } MU_TR1_t;
  211. /* RR0 Register */
  212. typedef union {
  213. vuint32_t R;
  214. struct {
  215. vuint32_t RR_DATA : 32;
  216. } B;
  217. } MU_RR0_t;
  218. /* RR1 Register */
  219. typedef union {
  220. vuint32_t R;
  221. struct {
  222. vuint32_t RR_DATA : 32;
  223. } B;
  224. } MU_RR1_t;
  225. struct MU_t {
  226. MU_VER_t VER;
  227. MU_PAR_t PAR;
  228. MU_CR_t CR;
  229. MU_SR_t SR;
  230. MU_CCR0_t CCR0;
  231. MU_CIER0_t CIER0;
  232. MU_CSSR0_t CSSR0;
  233. MU_CSR0_t CSR0;
  234. uint8_t MU_reserved0[224];
  235. MU_FCR_t FCR;
  236. MU_FSR_t FSR;
  237. uint8_t MU_reserved1[8];
  238. MU_GIER_t GIER;
  239. MU_GCR_t GCR;
  240. MU_GSR_t GSR;
  241. uint8_t MU_reserved2[4];
  242. MU_TCR_t TCR;
  243. MU_TSR_t TSR;
  244. MU_RCR_t RCR;
  245. MU_RSR_t RSR;
  246. uint8_t MU_reserved3[208];
  247. MU_TR0_t TR[2];
  248. uint8_t MU_reserved4[120];
  249. MU_RR0_t RR[2];
  250. };
  251. #endif /* MU_H */