dsu.h 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785
  1. /**
  2. * \file
  3. *
  4. * \brief Component description for DSU
  5. *
  6. * Copyright (c) 2018 Microchip Technology Inc.
  7. *
  8. * \license_start
  9. *
  10. * \page License
  11. *
  12. * SPDX-License-Identifier: Apache-2.0
  13. *
  14. * Licensed under the Apache License, Version 2.0 (the "License");
  15. * you may not use this file except in compliance with the License.
  16. * You may obtain a copy of the License at
  17. *
  18. * http://www.apache.org/licenses/LICENSE-2.0
  19. *
  20. * Unless required by applicable law or agreed to in writing, software
  21. * distributed under the License is distributed on an "AS IS" BASIS,
  22. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  23. * See the License for the specific language governing permissions and
  24. * limitations under the License.
  25. *
  26. * \license_stop
  27. *
  28. */
  29. /* file generated from device description version 2018-05-30T11:07:17Z */
  30. #ifndef _SAML11_DSU_COMPONENT_H_
  31. #define _SAML11_DSU_COMPONENT_H_
  32. #define _SAML11_DSU_COMPONENT_ /**< \deprecated Backward compatibility for ASF */
  33. /** \addtogroup SAML_SAML11 Device Service Unit
  34. * @{
  35. */
  36. /* ========================================================================== */
  37. /** SOFTWARE API DEFINITION FOR DSU */
  38. /* ========================================================================== */
  39. #define DSU_U2810 /**< (DSU) Module ID */
  40. #define REV_DSU 0x100 /**< (DSU) Module revision */
  41. /* -------- DSU_CTRL : (DSU Offset: 0x00) (/W 8) Control -------- */
  42. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  43. typedef union {
  44. struct {
  45. uint8_t SWRST:1; /**< bit: 0 Software Reset */
  46. uint8_t :1; /**< bit: 1 Reserved */
  47. uint8_t CRC:1; /**< bit: 2 32-bit Cyclic Redundancy Code */
  48. uint8_t MBIST:1; /**< bit: 3 Memory built-in self-test */
  49. uint8_t :4; /**< bit: 4..7 Reserved */
  50. } bit; /**< Structure used for bit access */
  51. uint8_t reg; /**< Type used for register access */
  52. } DSU_CTRL_Type;
  53. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  54. #define DSU_CTRL_OFFSET (0x00) /**< (DSU_CTRL) Control Offset */
  55. #define DSU_CTRL_RESETVALUE _U_(0x00) /**< (DSU_CTRL) Control Reset Value */
  56. #define DSU_CTRL_SWRST_Pos 0 /**< (DSU_CTRL) Software Reset Position */
  57. #define DSU_CTRL_SWRST_Msk (_U_(0x1) << DSU_CTRL_SWRST_Pos) /**< (DSU_CTRL) Software Reset Mask */
  58. #define DSU_CTRL_SWRST DSU_CTRL_SWRST_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_CTRL_SWRST_Msk instead */
  59. #define DSU_CTRL_CRC_Pos 2 /**< (DSU_CTRL) 32-bit Cyclic Redundancy Code Position */
  60. #define DSU_CTRL_CRC_Msk (_U_(0x1) << DSU_CTRL_CRC_Pos) /**< (DSU_CTRL) 32-bit Cyclic Redundancy Code Mask */
  61. #define DSU_CTRL_CRC DSU_CTRL_CRC_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_CTRL_CRC_Msk instead */
  62. #define DSU_CTRL_MBIST_Pos 3 /**< (DSU_CTRL) Memory built-in self-test Position */
  63. #define DSU_CTRL_MBIST_Msk (_U_(0x1) << DSU_CTRL_MBIST_Pos) /**< (DSU_CTRL) Memory built-in self-test Mask */
  64. #define DSU_CTRL_MBIST DSU_CTRL_MBIST_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_CTRL_MBIST_Msk instead */
  65. #define DSU_CTRL_MASK _U_(0x0D) /**< \deprecated (DSU_CTRL) Register MASK (Use DSU_CTRL_Msk instead) */
  66. #define DSU_CTRL_Msk _U_(0x0D) /**< (DSU_CTRL) Register Mask */
  67. /* -------- DSU_STATUSA : (DSU Offset: 0x01) (R/W 8) Status A -------- */
  68. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  69. typedef union {
  70. struct {
  71. uint8_t DONE:1; /**< bit: 0 Done */
  72. uint8_t CRSTEXT:1; /**< bit: 1 CPU Reset Phase Extension */
  73. uint8_t BERR:1; /**< bit: 2 Bus Error */
  74. uint8_t FAIL:1; /**< bit: 3 Failure */
  75. uint8_t PERR:1; /**< bit: 4 Protection Error Detected by the State Machine */
  76. uint8_t BREXT:1; /**< bit: 5 BootRom Phase Extension */
  77. uint8_t :2; /**< bit: 6..7 Reserved */
  78. } bit; /**< Structure used for bit access */
  79. uint8_t reg; /**< Type used for register access */
  80. } DSU_STATUSA_Type;
  81. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  82. #define DSU_STATUSA_OFFSET (0x01) /**< (DSU_STATUSA) Status A Offset */
  83. #define DSU_STATUSA_RESETVALUE _U_(0x00) /**< (DSU_STATUSA) Status A Reset Value */
  84. #define DSU_STATUSA_DONE_Pos 0 /**< (DSU_STATUSA) Done Position */
  85. #define DSU_STATUSA_DONE_Msk (_U_(0x1) << DSU_STATUSA_DONE_Pos) /**< (DSU_STATUSA) Done Mask */
  86. #define DSU_STATUSA_DONE DSU_STATUSA_DONE_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_DONE_Msk instead */
  87. #define DSU_STATUSA_CRSTEXT_Pos 1 /**< (DSU_STATUSA) CPU Reset Phase Extension Position */
  88. #define DSU_STATUSA_CRSTEXT_Msk (_U_(0x1) << DSU_STATUSA_CRSTEXT_Pos) /**< (DSU_STATUSA) CPU Reset Phase Extension Mask */
  89. #define DSU_STATUSA_CRSTEXT DSU_STATUSA_CRSTEXT_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_CRSTEXT_Msk instead */
  90. #define DSU_STATUSA_BERR_Pos 2 /**< (DSU_STATUSA) Bus Error Position */
  91. #define DSU_STATUSA_BERR_Msk (_U_(0x1) << DSU_STATUSA_BERR_Pos) /**< (DSU_STATUSA) Bus Error Mask */
  92. #define DSU_STATUSA_BERR DSU_STATUSA_BERR_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_BERR_Msk instead */
  93. #define DSU_STATUSA_FAIL_Pos 3 /**< (DSU_STATUSA) Failure Position */
  94. #define DSU_STATUSA_FAIL_Msk (_U_(0x1) << DSU_STATUSA_FAIL_Pos) /**< (DSU_STATUSA) Failure Mask */
  95. #define DSU_STATUSA_FAIL DSU_STATUSA_FAIL_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_FAIL_Msk instead */
  96. #define DSU_STATUSA_PERR_Pos 4 /**< (DSU_STATUSA) Protection Error Detected by the State Machine Position */
  97. #define DSU_STATUSA_PERR_Msk (_U_(0x1) << DSU_STATUSA_PERR_Pos) /**< (DSU_STATUSA) Protection Error Detected by the State Machine Mask */
  98. #define DSU_STATUSA_PERR DSU_STATUSA_PERR_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_PERR_Msk instead */
  99. #define DSU_STATUSA_BREXT_Pos 5 /**< (DSU_STATUSA) BootRom Phase Extension Position */
  100. #define DSU_STATUSA_BREXT_Msk (_U_(0x1) << DSU_STATUSA_BREXT_Pos) /**< (DSU_STATUSA) BootRom Phase Extension Mask */
  101. #define DSU_STATUSA_BREXT DSU_STATUSA_BREXT_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSA_BREXT_Msk instead */
  102. #define DSU_STATUSA_MASK _U_(0x3F) /**< \deprecated (DSU_STATUSA) Register MASK (Use DSU_STATUSA_Msk instead) */
  103. #define DSU_STATUSA_Msk _U_(0x3F) /**< (DSU_STATUSA) Register Mask */
  104. /* -------- DSU_STATUSB : (DSU Offset: 0x02) (R/ 8) Status B -------- */
  105. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  106. typedef union {
  107. struct {
  108. uint8_t DAL:2; /**< bit: 0..1 Debugger Access Level */
  109. uint8_t DBGPRES:1; /**< bit: 2 Debugger Present */
  110. uint8_t HPE:1; /**< bit: 3 Hot-Plugging Enable */
  111. uint8_t DCCD0:1; /**< bit: 4 Debug Communication Channel 0 Dirty */
  112. uint8_t DCCD1:1; /**< bit: 5 Debug Communication Channel 1 Dirty */
  113. uint8_t BCCD0:1; /**< bit: 6 Boot ROM Communication Channel 0 Dirty */
  114. uint8_t BCCD1:1; /**< bit: 7 Boot ROM Communication Channel 1 Dirty */
  115. } bit; /**< Structure used for bit access */
  116. struct {
  117. uint8_t :4; /**< bit: 0..3 Reserved */
  118. uint8_t DCCD:2; /**< bit: 4..5 Debug Communication Channel x Dirty */
  119. uint8_t BCCD:2; /**< bit: 6..7 Boot ROM Communication Channel x Dirty */
  120. } vec; /**< Structure used for vec access */
  121. uint8_t reg; /**< Type used for register access */
  122. } DSU_STATUSB_Type;
  123. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  124. #define DSU_STATUSB_OFFSET (0x02) /**< (DSU_STATUSB) Status B Offset */
  125. #define DSU_STATUSB_RESETVALUE _U_(0x00) /**< (DSU_STATUSB) Status B Reset Value */
  126. #define DSU_STATUSB_DAL_Pos 0 /**< (DSU_STATUSB) Debugger Access Level Position */
  127. #define DSU_STATUSB_DAL_Msk (_U_(0x3) << DSU_STATUSB_DAL_Pos) /**< (DSU_STATUSB) Debugger Access Level Mask */
  128. #define DSU_STATUSB_DAL(value) (DSU_STATUSB_DAL_Msk & ((value) << DSU_STATUSB_DAL_Pos))
  129. #define DSU_STATUSB_DAL_SECURED_Val _U_(0x0) /**< (DSU_STATUSB) */
  130. #define DSU_STATUSB_DAL_NS_DEBUG_Val _U_(0x1) /**< (DSU_STATUSB) */
  131. #define DSU_STATUSB_DAL_FULL_DEBUG_Val _U_(0x2) /**< (DSU_STATUSB) */
  132. #define DSU_STATUSB_DAL_SECURED (DSU_STATUSB_DAL_SECURED_Val << DSU_STATUSB_DAL_Pos) /**< (DSU_STATUSB) Position */
  133. #define DSU_STATUSB_DAL_NS_DEBUG (DSU_STATUSB_DAL_NS_DEBUG_Val << DSU_STATUSB_DAL_Pos) /**< (DSU_STATUSB) Position */
  134. #define DSU_STATUSB_DAL_FULL_DEBUG (DSU_STATUSB_DAL_FULL_DEBUG_Val << DSU_STATUSB_DAL_Pos) /**< (DSU_STATUSB) Position */
  135. #define DSU_STATUSB_DBGPRES_Pos 2 /**< (DSU_STATUSB) Debugger Present Position */
  136. #define DSU_STATUSB_DBGPRES_Msk (_U_(0x1) << DSU_STATUSB_DBGPRES_Pos) /**< (DSU_STATUSB) Debugger Present Mask */
  137. #define DSU_STATUSB_DBGPRES DSU_STATUSB_DBGPRES_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_DBGPRES_Msk instead */
  138. #define DSU_STATUSB_HPE_Pos 3 /**< (DSU_STATUSB) Hot-Plugging Enable Position */
  139. #define DSU_STATUSB_HPE_Msk (_U_(0x1) << DSU_STATUSB_HPE_Pos) /**< (DSU_STATUSB) Hot-Plugging Enable Mask */
  140. #define DSU_STATUSB_HPE DSU_STATUSB_HPE_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_HPE_Msk instead */
  141. #define DSU_STATUSB_DCCD0_Pos 4 /**< (DSU_STATUSB) Debug Communication Channel 0 Dirty Position */
  142. #define DSU_STATUSB_DCCD0_Msk (_U_(0x1) << DSU_STATUSB_DCCD0_Pos) /**< (DSU_STATUSB) Debug Communication Channel 0 Dirty Mask */
  143. #define DSU_STATUSB_DCCD0 DSU_STATUSB_DCCD0_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_DCCD0_Msk instead */
  144. #define DSU_STATUSB_DCCD1_Pos 5 /**< (DSU_STATUSB) Debug Communication Channel 1 Dirty Position */
  145. #define DSU_STATUSB_DCCD1_Msk (_U_(0x1) << DSU_STATUSB_DCCD1_Pos) /**< (DSU_STATUSB) Debug Communication Channel 1 Dirty Mask */
  146. #define DSU_STATUSB_DCCD1 DSU_STATUSB_DCCD1_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_DCCD1_Msk instead */
  147. #define DSU_STATUSB_BCCD0_Pos 6 /**< (DSU_STATUSB) Boot ROM Communication Channel 0 Dirty Position */
  148. #define DSU_STATUSB_BCCD0_Msk (_U_(0x1) << DSU_STATUSB_BCCD0_Pos) /**< (DSU_STATUSB) Boot ROM Communication Channel 0 Dirty Mask */
  149. #define DSU_STATUSB_BCCD0 DSU_STATUSB_BCCD0_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_BCCD0_Msk instead */
  150. #define DSU_STATUSB_BCCD1_Pos 7 /**< (DSU_STATUSB) Boot ROM Communication Channel 1 Dirty Position */
  151. #define DSU_STATUSB_BCCD1_Msk (_U_(0x1) << DSU_STATUSB_BCCD1_Pos) /**< (DSU_STATUSB) Boot ROM Communication Channel 1 Dirty Mask */
  152. #define DSU_STATUSB_BCCD1 DSU_STATUSB_BCCD1_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_STATUSB_BCCD1_Msk instead */
  153. #define DSU_STATUSB_MASK _U_(0xFF) /**< \deprecated (DSU_STATUSB) Register MASK (Use DSU_STATUSB_Msk instead) */
  154. #define DSU_STATUSB_Msk _U_(0xFF) /**< (DSU_STATUSB) Register Mask */
  155. #define DSU_STATUSB_DCCD_Pos 4 /**< (DSU_STATUSB Position) Debug Communication Channel x Dirty */
  156. #define DSU_STATUSB_DCCD_Msk (_U_(0x3) << DSU_STATUSB_DCCD_Pos) /**< (DSU_STATUSB Mask) DCCD */
  157. #define DSU_STATUSB_DCCD(value) (DSU_STATUSB_DCCD_Msk & ((value) << DSU_STATUSB_DCCD_Pos))
  158. #define DSU_STATUSB_BCCD_Pos 6 /**< (DSU_STATUSB Position) Boot ROM Communication Channel x Dirty */
  159. #define DSU_STATUSB_BCCD_Msk (_U_(0x3) << DSU_STATUSB_BCCD_Pos) /**< (DSU_STATUSB Mask) BCCD */
  160. #define DSU_STATUSB_BCCD(value) (DSU_STATUSB_BCCD_Msk & ((value) << DSU_STATUSB_BCCD_Pos))
  161. /* -------- DSU_STATUSC : (DSU Offset: 0x03) (R/ 8) Status C -------- */
  162. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  163. typedef union {
  164. uint8_t reg; /**< Type used for register access */
  165. } DSU_STATUSC_Type;
  166. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  167. #define DSU_STATUSC_OFFSET (0x03) /**< (DSU_STATUSC) Status C Offset */
  168. #define DSU_STATUSC_RESETVALUE _U_(0x00) /**< (DSU_STATUSC) Status C Reset Value */
  169. #define DSU_STATUSC_MASK _U_(0x00) /**< \deprecated (DSU_STATUSC) Register MASK (Use DSU_STATUSC_Msk instead) */
  170. #define DSU_STATUSC_Msk _U_(0x00) /**< (DSU_STATUSC) Register Mask */
  171. /* -------- DSU_ADDR : (DSU Offset: 0x04) (R/W 32) Address -------- */
  172. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  173. typedef union {
  174. struct {
  175. uint32_t AMOD:2; /**< bit: 0..1 Access Mode */
  176. uint32_t ADDR:30; /**< bit: 2..31 Address */
  177. } bit; /**< Structure used for bit access */
  178. uint32_t reg; /**< Type used for register access */
  179. } DSU_ADDR_Type;
  180. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  181. #define DSU_ADDR_OFFSET (0x04) /**< (DSU_ADDR) Address Offset */
  182. #define DSU_ADDR_RESETVALUE _U_(0x00) /**< (DSU_ADDR) Address Reset Value */
  183. #define DSU_ADDR_AMOD_Pos 0 /**< (DSU_ADDR) Access Mode Position */
  184. #define DSU_ADDR_AMOD_Msk (_U_(0x3) << DSU_ADDR_AMOD_Pos) /**< (DSU_ADDR) Access Mode Mask */
  185. #define DSU_ADDR_AMOD(value) (DSU_ADDR_AMOD_Msk & ((value) << DSU_ADDR_AMOD_Pos))
  186. #define DSU_ADDR_ADDR_Pos 2 /**< (DSU_ADDR) Address Position */
  187. #define DSU_ADDR_ADDR_Msk (_U_(0x3FFFFFFF) << DSU_ADDR_ADDR_Pos) /**< (DSU_ADDR) Address Mask */
  188. #define DSU_ADDR_ADDR(value) (DSU_ADDR_ADDR_Msk & ((value) << DSU_ADDR_ADDR_Pos))
  189. #define DSU_ADDR_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_ADDR) Register MASK (Use DSU_ADDR_Msk instead) */
  190. #define DSU_ADDR_Msk _U_(0xFFFFFFFF) /**< (DSU_ADDR) Register Mask */
  191. /* -------- DSU_LENGTH : (DSU Offset: 0x08) (R/W 32) Length -------- */
  192. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  193. typedef union {
  194. struct {
  195. uint32_t :2; /**< bit: 0..1 Reserved */
  196. uint32_t LENGTH:30; /**< bit: 2..31 Length */
  197. } bit; /**< Structure used for bit access */
  198. uint32_t reg; /**< Type used for register access */
  199. } DSU_LENGTH_Type;
  200. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  201. #define DSU_LENGTH_OFFSET (0x08) /**< (DSU_LENGTH) Length Offset */
  202. #define DSU_LENGTH_RESETVALUE _U_(0x00) /**< (DSU_LENGTH) Length Reset Value */
  203. #define DSU_LENGTH_LENGTH_Pos 2 /**< (DSU_LENGTH) Length Position */
  204. #define DSU_LENGTH_LENGTH_Msk (_U_(0x3FFFFFFF) << DSU_LENGTH_LENGTH_Pos) /**< (DSU_LENGTH) Length Mask */
  205. #define DSU_LENGTH_LENGTH(value) (DSU_LENGTH_LENGTH_Msk & ((value) << DSU_LENGTH_LENGTH_Pos))
  206. #define DSU_LENGTH_MASK _U_(0xFFFFFFFC) /**< \deprecated (DSU_LENGTH) Register MASK (Use DSU_LENGTH_Msk instead) */
  207. #define DSU_LENGTH_Msk _U_(0xFFFFFFFC) /**< (DSU_LENGTH) Register Mask */
  208. /* -------- DSU_DATA : (DSU Offset: 0x0c) (R/W 32) Data -------- */
  209. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  210. typedef union {
  211. struct {
  212. uint32_t DATA:32; /**< bit: 0..31 Data */
  213. } bit; /**< Structure used for bit access */
  214. uint32_t reg; /**< Type used for register access */
  215. } DSU_DATA_Type;
  216. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  217. #define DSU_DATA_OFFSET (0x0C) /**< (DSU_DATA) Data Offset */
  218. #define DSU_DATA_RESETVALUE _U_(0x00) /**< (DSU_DATA) Data Reset Value */
  219. #define DSU_DATA_DATA_Pos 0 /**< (DSU_DATA) Data Position */
  220. #define DSU_DATA_DATA_Msk (_U_(0xFFFFFFFF) << DSU_DATA_DATA_Pos) /**< (DSU_DATA) Data Mask */
  221. #define DSU_DATA_DATA(value) (DSU_DATA_DATA_Msk & ((value) << DSU_DATA_DATA_Pos))
  222. #define DSU_DATA_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_DATA) Register MASK (Use DSU_DATA_Msk instead) */
  223. #define DSU_DATA_Msk _U_(0xFFFFFFFF) /**< (DSU_DATA) Register Mask */
  224. /* -------- DSU_DCC : (DSU Offset: 0x10) (R/W 32) Debug Communication Channel n -------- */
  225. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  226. typedef union {
  227. struct {
  228. uint32_t DATA:32; /**< bit: 0..31 Data */
  229. } bit; /**< Structure used for bit access */
  230. uint32_t reg; /**< Type used for register access */
  231. } DSU_DCC_Type;
  232. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  233. #define DSU_DCC_OFFSET (0x10) /**< (DSU_DCC) Debug Communication Channel n Offset */
  234. #define DSU_DCC_RESETVALUE _U_(0x00) /**< (DSU_DCC) Debug Communication Channel n Reset Value */
  235. #define DSU_DCC_DATA_Pos 0 /**< (DSU_DCC) Data Position */
  236. #define DSU_DCC_DATA_Msk (_U_(0xFFFFFFFF) << DSU_DCC_DATA_Pos) /**< (DSU_DCC) Data Mask */
  237. #define DSU_DCC_DATA(value) (DSU_DCC_DATA_Msk & ((value) << DSU_DCC_DATA_Pos))
  238. #define DSU_DCC_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_DCC) Register MASK (Use DSU_DCC_Msk instead) */
  239. #define DSU_DCC_Msk _U_(0xFFFFFFFF) /**< (DSU_DCC) Register Mask */
  240. /* -------- DSU_DID : (DSU Offset: 0x18) (R/ 32) Device Identification -------- */
  241. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  242. typedef union {
  243. struct {
  244. uint32_t DEVSEL:8; /**< bit: 0..7 Device Select */
  245. uint32_t REVISION:4; /**< bit: 8..11 Revision Number */
  246. uint32_t DIE:4; /**< bit: 12..15 Die Number */
  247. uint32_t SERIES:6; /**< bit: 16..21 Series */
  248. uint32_t :1; /**< bit: 22 Reserved */
  249. uint32_t FAMILY:5; /**< bit: 23..27 Family */
  250. uint32_t PROCESSOR:4; /**< bit: 28..31 Processor */
  251. } bit; /**< Structure used for bit access */
  252. uint32_t reg; /**< Type used for register access */
  253. } DSU_DID_Type;
  254. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  255. #define DSU_DID_OFFSET (0x18) /**< (DSU_DID) Device Identification Offset */
  256. #define DSU_DID_RESETVALUE _U_(0x20830000) /**< (DSU_DID) Device Identification Reset Value */
  257. #define DSU_DID_DEVSEL_Pos 0 /**< (DSU_DID) Device Select Position */
  258. #define DSU_DID_DEVSEL_Msk (_U_(0xFF) << DSU_DID_DEVSEL_Pos) /**< (DSU_DID) Device Select Mask */
  259. #define DSU_DID_DEVSEL(value) (DSU_DID_DEVSEL_Msk & ((value) << DSU_DID_DEVSEL_Pos))
  260. #define DSU_DID_REVISION_Pos 8 /**< (DSU_DID) Revision Number Position */
  261. #define DSU_DID_REVISION_Msk (_U_(0xF) << DSU_DID_REVISION_Pos) /**< (DSU_DID) Revision Number Mask */
  262. #define DSU_DID_REVISION(value) (DSU_DID_REVISION_Msk & ((value) << DSU_DID_REVISION_Pos))
  263. #define DSU_DID_DIE_Pos 12 /**< (DSU_DID) Die Number Position */
  264. #define DSU_DID_DIE_Msk (_U_(0xF) << DSU_DID_DIE_Pos) /**< (DSU_DID) Die Number Mask */
  265. #define DSU_DID_DIE(value) (DSU_DID_DIE_Msk & ((value) << DSU_DID_DIE_Pos))
  266. #define DSU_DID_SERIES_Pos 16 /**< (DSU_DID) Series Position */
  267. #define DSU_DID_SERIES_Msk (_U_(0x3F) << DSU_DID_SERIES_Pos) /**< (DSU_DID) Series Mask */
  268. #define DSU_DID_SERIES(value) (DSU_DID_SERIES_Msk & ((value) << DSU_DID_SERIES_Pos))
  269. #define DSU_DID_SERIES_0_Val _U_(0x0) /**< (DSU_DID) Cortex-M0+ processor, basic feature set */
  270. #define DSU_DID_SERIES_1_Val _U_(0x1) /**< (DSU_DID) Cortex-M0+ processor, USB */
  271. #define DSU_DID_SERIES_0 (DSU_DID_SERIES_0_Val << DSU_DID_SERIES_Pos) /**< (DSU_DID) Cortex-M0+ processor, basic feature set Position */
  272. #define DSU_DID_SERIES_1 (DSU_DID_SERIES_1_Val << DSU_DID_SERIES_Pos) /**< (DSU_DID) Cortex-M0+ processor, USB Position */
  273. #define DSU_DID_FAMILY_Pos 23 /**< (DSU_DID) Family Position */
  274. #define DSU_DID_FAMILY_Msk (_U_(0x1F) << DSU_DID_FAMILY_Pos) /**< (DSU_DID) Family Mask */
  275. #define DSU_DID_FAMILY(value) (DSU_DID_FAMILY_Msk & ((value) << DSU_DID_FAMILY_Pos))
  276. #define DSU_DID_FAMILY_0_Val _U_(0x0) /**< (DSU_DID) General purpose microcontroller */
  277. #define DSU_DID_FAMILY_1_Val _U_(0x1) /**< (DSU_DID) PicoPower */
  278. #define DSU_DID_FAMILY_0 (DSU_DID_FAMILY_0_Val << DSU_DID_FAMILY_Pos) /**< (DSU_DID) General purpose microcontroller Position */
  279. #define DSU_DID_FAMILY_1 (DSU_DID_FAMILY_1_Val << DSU_DID_FAMILY_Pos) /**< (DSU_DID) PicoPower Position */
  280. #define DSU_DID_PROCESSOR_Pos 28 /**< (DSU_DID) Processor Position */
  281. #define DSU_DID_PROCESSOR_Msk (_U_(0xF) << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Processor Mask */
  282. #define DSU_DID_PROCESSOR(value) (DSU_DID_PROCESSOR_Msk & ((value) << DSU_DID_PROCESSOR_Pos))
  283. #define DSU_DID_PROCESSOR_CM0P_Val _U_(0x1) /**< (DSU_DID) Cortex-M0+ */
  284. #define DSU_DID_PROCESSOR_CM23_Val _U_(0x2) /**< (DSU_DID) Cortex-M23 */
  285. #define DSU_DID_PROCESSOR_CM3_Val _U_(0x3) /**< (DSU_DID) Cortex-M3 */
  286. #define DSU_DID_PROCESSOR_CM4_Val _U_(0x5) /**< (DSU_DID) Cortex-M4 */
  287. #define DSU_DID_PROCESSOR_CM4F_Val _U_(0x6) /**< (DSU_DID) Cortex-M4 with FPU */
  288. #define DSU_DID_PROCESSOR_CM33_Val _U_(0x7) /**< (DSU_DID) Cortex-M33 */
  289. #define DSU_DID_PROCESSOR_CM0P (DSU_DID_PROCESSOR_CM0P_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M0+ Position */
  290. #define DSU_DID_PROCESSOR_CM23 (DSU_DID_PROCESSOR_CM23_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M23 Position */
  291. #define DSU_DID_PROCESSOR_CM3 (DSU_DID_PROCESSOR_CM3_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M3 Position */
  292. #define DSU_DID_PROCESSOR_CM4 (DSU_DID_PROCESSOR_CM4_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M4 Position */
  293. #define DSU_DID_PROCESSOR_CM4F (DSU_DID_PROCESSOR_CM4F_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M4 with FPU Position */
  294. #define DSU_DID_PROCESSOR_CM33 (DSU_DID_PROCESSOR_CM33_Val << DSU_DID_PROCESSOR_Pos) /**< (DSU_DID) Cortex-M33 Position */
  295. #define DSU_DID_MASK _U_(0xFFBFFFFF) /**< \deprecated (DSU_DID) Register MASK (Use DSU_DID_Msk instead) */
  296. #define DSU_DID_Msk _U_(0xFFBFFFFF) /**< (DSU_DID) Register Mask */
  297. /* -------- DSU_CFG : (DSU Offset: 0x1c) (R/W 32) Configuration -------- */
  298. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  299. typedef union {
  300. struct {
  301. uint32_t LQOS:2; /**< bit: 0..1 Latency Quality Of Service */
  302. uint32_t DCCDMALEVEL:2; /**< bit: 2..3 DMA Trigger Level */
  303. uint32_t :28; /**< bit: 4..31 Reserved */
  304. } bit; /**< Structure used for bit access */
  305. uint32_t reg; /**< Type used for register access */
  306. } DSU_CFG_Type;
  307. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  308. #define DSU_CFG_OFFSET (0x1C) /**< (DSU_CFG) Configuration Offset */
  309. #define DSU_CFG_RESETVALUE _U_(0x02) /**< (DSU_CFG) Configuration Reset Value */
  310. #define DSU_CFG_LQOS_Pos 0 /**< (DSU_CFG) Latency Quality Of Service Position */
  311. #define DSU_CFG_LQOS_Msk (_U_(0x3) << DSU_CFG_LQOS_Pos) /**< (DSU_CFG) Latency Quality Of Service Mask */
  312. #define DSU_CFG_LQOS(value) (DSU_CFG_LQOS_Msk & ((value) << DSU_CFG_LQOS_Pos))
  313. #define DSU_CFG_DCCDMALEVEL_Pos 2 /**< (DSU_CFG) DMA Trigger Level Position */
  314. #define DSU_CFG_DCCDMALEVEL_Msk (_U_(0x3) << DSU_CFG_DCCDMALEVEL_Pos) /**< (DSU_CFG) DMA Trigger Level Mask */
  315. #define DSU_CFG_DCCDMALEVEL(value) (DSU_CFG_DCCDMALEVEL_Msk & ((value) << DSU_CFG_DCCDMALEVEL_Pos))
  316. #define DSU_CFG_DCCDMALEVEL_EMPTY_Val _U_(0x0) /**< (DSU_CFG) Trigger rises when DCC is empty */
  317. #define DSU_CFG_DCCDMALEVEL_FULL_Val _U_(0x1) /**< (DSU_CFG) Trigger rises when DCC is full */
  318. #define DSU_CFG_DCCDMALEVEL_EMPTY (DSU_CFG_DCCDMALEVEL_EMPTY_Val << DSU_CFG_DCCDMALEVEL_Pos) /**< (DSU_CFG) Trigger rises when DCC is empty Position */
  319. #define DSU_CFG_DCCDMALEVEL_FULL (DSU_CFG_DCCDMALEVEL_FULL_Val << DSU_CFG_DCCDMALEVEL_Pos) /**< (DSU_CFG) Trigger rises when DCC is full Position */
  320. #define DSU_CFG_MASK _U_(0x0F) /**< \deprecated (DSU_CFG) Register MASK (Use DSU_CFG_Msk instead) */
  321. #define DSU_CFG_Msk _U_(0x0F) /**< (DSU_CFG) Register Mask */
  322. /* -------- DSU_BCC : (DSU Offset: 0x20) (R/W 32) Boot ROM Communication Channel n -------- */
  323. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  324. typedef union {
  325. struct {
  326. uint32_t DATA:32; /**< bit: 0..31 Data */
  327. } bit; /**< Structure used for bit access */
  328. uint32_t reg; /**< Type used for register access */
  329. } DSU_BCC_Type;
  330. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  331. #define DSU_BCC_OFFSET (0x20) /**< (DSU_BCC) Boot ROM Communication Channel n Offset */
  332. #define DSU_BCC_RESETVALUE _U_(0x00) /**< (DSU_BCC) Boot ROM Communication Channel n Reset Value */
  333. #define DSU_BCC_DATA_Pos 0 /**< (DSU_BCC) Data Position */
  334. #define DSU_BCC_DATA_Msk (_U_(0xFFFFFFFF) << DSU_BCC_DATA_Pos) /**< (DSU_BCC) Data Mask */
  335. #define DSU_BCC_DATA(value) (DSU_BCC_DATA_Msk & ((value) << DSU_BCC_DATA_Pos))
  336. #define DSU_BCC_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_BCC) Register MASK (Use DSU_BCC_Msk instead) */
  337. #define DSU_BCC_Msk _U_(0xFFFFFFFF) /**< (DSU_BCC) Register Mask */
  338. /* -------- DSU_DCFG : (DSU Offset: 0xf0) (R/W 32) Device Configuration -------- */
  339. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  340. typedef union {
  341. struct {
  342. uint32_t DCFG:32; /**< bit: 0..31 Device Configuration */
  343. } bit; /**< Structure used for bit access */
  344. uint32_t reg; /**< Type used for register access */
  345. } DSU_DCFG_Type;
  346. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  347. #define DSU_DCFG_OFFSET (0xF0) /**< (DSU_DCFG) Device Configuration Offset */
  348. #define DSU_DCFG_RESETVALUE _U_(0x00) /**< (DSU_DCFG) Device Configuration Reset Value */
  349. #define DSU_DCFG_DCFG_Pos 0 /**< (DSU_DCFG) Device Configuration Position */
  350. #define DSU_DCFG_DCFG_Msk (_U_(0xFFFFFFFF) << DSU_DCFG_DCFG_Pos) /**< (DSU_DCFG) Device Configuration Mask */
  351. #define DSU_DCFG_DCFG(value) (DSU_DCFG_DCFG_Msk & ((value) << DSU_DCFG_DCFG_Pos))
  352. #define DSU_DCFG_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_DCFG) Register MASK (Use DSU_DCFG_Msk instead) */
  353. #define DSU_DCFG_Msk _U_(0xFFFFFFFF) /**< (DSU_DCFG) Register Mask */
  354. /* -------- DSU_ENTRY0 : (DSU Offset: 0x1000) (R/ 32) CoreSight ROM Table Entry 0 -------- */
  355. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  356. typedef union {
  357. struct {
  358. uint32_t EPRES:1; /**< bit: 0 Entry Present */
  359. uint32_t FMT:1; /**< bit: 1 Format */
  360. uint32_t :10; /**< bit: 2..11 Reserved */
  361. uint32_t ADDOFF:20; /**< bit: 12..31 Address Offset */
  362. } bit; /**< Structure used for bit access */
  363. uint32_t reg; /**< Type used for register access */
  364. } DSU_ENTRY0_Type;
  365. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  366. #define DSU_ENTRY0_OFFSET (0x1000) /**< (DSU_ENTRY0) CoreSight ROM Table Entry 0 Offset */
  367. #define DSU_ENTRY0_RESETVALUE _U_(0x9F0FC002) /**< (DSU_ENTRY0) CoreSight ROM Table Entry 0 Reset Value */
  368. #define DSU_ENTRY0_EPRES_Pos 0 /**< (DSU_ENTRY0) Entry Present Position */
  369. #define DSU_ENTRY0_EPRES_Msk (_U_(0x1) << DSU_ENTRY0_EPRES_Pos) /**< (DSU_ENTRY0) Entry Present Mask */
  370. #define DSU_ENTRY0_EPRES DSU_ENTRY0_EPRES_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_ENTRY0_EPRES_Msk instead */
  371. #define DSU_ENTRY0_FMT_Pos 1 /**< (DSU_ENTRY0) Format Position */
  372. #define DSU_ENTRY0_FMT_Msk (_U_(0x1) << DSU_ENTRY0_FMT_Pos) /**< (DSU_ENTRY0) Format Mask */
  373. #define DSU_ENTRY0_FMT DSU_ENTRY0_FMT_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_ENTRY0_FMT_Msk instead */
  374. #define DSU_ENTRY0_ADDOFF_Pos 12 /**< (DSU_ENTRY0) Address Offset Position */
  375. #define DSU_ENTRY0_ADDOFF_Msk (_U_(0xFFFFF) << DSU_ENTRY0_ADDOFF_Pos) /**< (DSU_ENTRY0) Address Offset Mask */
  376. #define DSU_ENTRY0_ADDOFF(value) (DSU_ENTRY0_ADDOFF_Msk & ((value) << DSU_ENTRY0_ADDOFF_Pos))
  377. #define DSU_ENTRY0_MASK _U_(0xFFFFF003) /**< \deprecated (DSU_ENTRY0) Register MASK (Use DSU_ENTRY0_Msk instead) */
  378. #define DSU_ENTRY0_Msk _U_(0xFFFFF003) /**< (DSU_ENTRY0) Register Mask */
  379. /* -------- DSU_ENTRY1 : (DSU Offset: 0x1004) (R/ 32) CoreSight ROM Table Entry 1 -------- */
  380. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  381. typedef union {
  382. uint32_t reg; /**< Type used for register access */
  383. } DSU_ENTRY1_Type;
  384. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  385. #define DSU_ENTRY1_OFFSET (0x1004) /**< (DSU_ENTRY1) CoreSight ROM Table Entry 1 Offset */
  386. #define DSU_ENTRY1_RESETVALUE _U_(0x00) /**< (DSU_ENTRY1) CoreSight ROM Table Entry 1 Reset Value */
  387. #define DSU_ENTRY1_MASK _U_(0x00) /**< \deprecated (DSU_ENTRY1) Register MASK (Use DSU_ENTRY1_Msk instead) */
  388. #define DSU_ENTRY1_Msk _U_(0x00) /**< (DSU_ENTRY1) Register Mask */
  389. /* -------- DSU_END : (DSU Offset: 0x1008) (R/ 32) CoreSight ROM Table End -------- */
  390. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  391. typedef union {
  392. struct {
  393. uint32_t END:32; /**< bit: 0..31 End Marker */
  394. } bit; /**< Structure used for bit access */
  395. uint32_t reg; /**< Type used for register access */
  396. } DSU_END_Type;
  397. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  398. #define DSU_END_OFFSET (0x1008) /**< (DSU_END) CoreSight ROM Table End Offset */
  399. #define DSU_END_RESETVALUE _U_(0x00) /**< (DSU_END) CoreSight ROM Table End Reset Value */
  400. #define DSU_END_END_Pos 0 /**< (DSU_END) End Marker Position */
  401. #define DSU_END_END_Msk (_U_(0xFFFFFFFF) << DSU_END_END_Pos) /**< (DSU_END) End Marker Mask */
  402. #define DSU_END_END(value) (DSU_END_END_Msk & ((value) << DSU_END_END_Pos))
  403. #define DSU_END_MASK _U_(0xFFFFFFFF) /**< \deprecated (DSU_END) Register MASK (Use DSU_END_Msk instead) */
  404. #define DSU_END_Msk _U_(0xFFFFFFFF) /**< (DSU_END) Register Mask */
  405. /* -------- DSU_MEMTYPE : (DSU Offset: 0x1fcc) (R/ 32) CoreSight ROM Table Memory Type -------- */
  406. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  407. typedef union {
  408. struct {
  409. uint32_t SMEMP:1; /**< bit: 0 System Memory Present */
  410. uint32_t :31; /**< bit: 1..31 Reserved */
  411. } bit; /**< Structure used for bit access */
  412. uint32_t reg; /**< Type used for register access */
  413. } DSU_MEMTYPE_Type;
  414. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  415. #define DSU_MEMTYPE_OFFSET (0x1FCC) /**< (DSU_MEMTYPE) CoreSight ROM Table Memory Type Offset */
  416. #define DSU_MEMTYPE_RESETVALUE _U_(0x00) /**< (DSU_MEMTYPE) CoreSight ROM Table Memory Type Reset Value */
  417. #define DSU_MEMTYPE_SMEMP_Pos 0 /**< (DSU_MEMTYPE) System Memory Present Position */
  418. #define DSU_MEMTYPE_SMEMP_Msk (_U_(0x1) << DSU_MEMTYPE_SMEMP_Pos) /**< (DSU_MEMTYPE) System Memory Present Mask */
  419. #define DSU_MEMTYPE_SMEMP DSU_MEMTYPE_SMEMP_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_MEMTYPE_SMEMP_Msk instead */
  420. #define DSU_MEMTYPE_MASK _U_(0x01) /**< \deprecated (DSU_MEMTYPE) Register MASK (Use DSU_MEMTYPE_Msk instead) */
  421. #define DSU_MEMTYPE_Msk _U_(0x01) /**< (DSU_MEMTYPE) Register Mask */
  422. /* -------- DSU_PID4 : (DSU Offset: 0x1fd0) (R/ 32) Peripheral Identification 4 -------- */
  423. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  424. typedef union {
  425. struct {
  426. uint32_t JEPCC:4; /**< bit: 0..3 JEP-106 Continuation Code */
  427. uint32_t FKBC:4; /**< bit: 4..7 4KB count */
  428. uint32_t :24; /**< bit: 8..31 Reserved */
  429. } bit; /**< Structure used for bit access */
  430. uint32_t reg; /**< Type used for register access */
  431. } DSU_PID4_Type;
  432. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  433. #define DSU_PID4_OFFSET (0x1FD0) /**< (DSU_PID4) Peripheral Identification 4 Offset */
  434. #define DSU_PID4_RESETVALUE _U_(0x00) /**< (DSU_PID4) Peripheral Identification 4 Reset Value */
  435. #define DSU_PID4_JEPCC_Pos 0 /**< (DSU_PID4) JEP-106 Continuation Code Position */
  436. #define DSU_PID4_JEPCC_Msk (_U_(0xF) << DSU_PID4_JEPCC_Pos) /**< (DSU_PID4) JEP-106 Continuation Code Mask */
  437. #define DSU_PID4_JEPCC(value) (DSU_PID4_JEPCC_Msk & ((value) << DSU_PID4_JEPCC_Pos))
  438. #define DSU_PID4_FKBC_Pos 4 /**< (DSU_PID4) 4KB count Position */
  439. #define DSU_PID4_FKBC_Msk (_U_(0xF) << DSU_PID4_FKBC_Pos) /**< (DSU_PID4) 4KB count Mask */
  440. #define DSU_PID4_FKBC(value) (DSU_PID4_FKBC_Msk & ((value) << DSU_PID4_FKBC_Pos))
  441. #define DSU_PID4_MASK _U_(0xFF) /**< \deprecated (DSU_PID4) Register MASK (Use DSU_PID4_Msk instead) */
  442. #define DSU_PID4_Msk _U_(0xFF) /**< (DSU_PID4) Register Mask */
  443. /* -------- DSU_PID5 : (DSU Offset: 0x1fd4) (R/ 32) Peripheral Identification 5 -------- */
  444. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  445. typedef union {
  446. uint32_t reg; /**< Type used for register access */
  447. } DSU_PID5_Type;
  448. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  449. #define DSU_PID5_OFFSET (0x1FD4) /**< (DSU_PID5) Peripheral Identification 5 Offset */
  450. #define DSU_PID5_RESETVALUE _U_(0x00) /**< (DSU_PID5) Peripheral Identification 5 Reset Value */
  451. #define DSU_PID5_MASK _U_(0x00) /**< \deprecated (DSU_PID5) Register MASK (Use DSU_PID5_Msk instead) */
  452. #define DSU_PID5_Msk _U_(0x00) /**< (DSU_PID5) Register Mask */
  453. /* -------- DSU_PID6 : (DSU Offset: 0x1fd8) (R/ 32) Peripheral Identification 6 -------- */
  454. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  455. typedef union {
  456. uint32_t reg; /**< Type used for register access */
  457. } DSU_PID6_Type;
  458. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  459. #define DSU_PID6_OFFSET (0x1FD8) /**< (DSU_PID6) Peripheral Identification 6 Offset */
  460. #define DSU_PID6_RESETVALUE _U_(0x00) /**< (DSU_PID6) Peripheral Identification 6 Reset Value */
  461. #define DSU_PID6_MASK _U_(0x00) /**< \deprecated (DSU_PID6) Register MASK (Use DSU_PID6_Msk instead) */
  462. #define DSU_PID6_Msk _U_(0x00) /**< (DSU_PID6) Register Mask */
  463. /* -------- DSU_PID7 : (DSU Offset: 0x1fdc) (R/ 32) Peripheral Identification 7 -------- */
  464. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  465. typedef union {
  466. uint32_t reg; /**< Type used for register access */
  467. } DSU_PID7_Type;
  468. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  469. #define DSU_PID7_OFFSET (0x1FDC) /**< (DSU_PID7) Peripheral Identification 7 Offset */
  470. #define DSU_PID7_RESETVALUE _U_(0x00) /**< (DSU_PID7) Peripheral Identification 7 Reset Value */
  471. #define DSU_PID7_MASK _U_(0x00) /**< \deprecated (DSU_PID7) Register MASK (Use DSU_PID7_Msk instead) */
  472. #define DSU_PID7_Msk _U_(0x00) /**< (DSU_PID7) Register Mask */
  473. /* -------- DSU_PID0 : (DSU Offset: 0x1fe0) (R/ 32) Peripheral Identification 0 -------- */
  474. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  475. typedef union {
  476. struct {
  477. uint32_t PARTNBL:8; /**< bit: 0..7 Part Number Low */
  478. uint32_t :24; /**< bit: 8..31 Reserved */
  479. } bit; /**< Structure used for bit access */
  480. uint32_t reg; /**< Type used for register access */
  481. } DSU_PID0_Type;
  482. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  483. #define DSU_PID0_OFFSET (0x1FE0) /**< (DSU_PID0) Peripheral Identification 0 Offset */
  484. #define DSU_PID0_RESETVALUE _U_(0xD0) /**< (DSU_PID0) Peripheral Identification 0 Reset Value */
  485. #define DSU_PID0_PARTNBL_Pos 0 /**< (DSU_PID0) Part Number Low Position */
  486. #define DSU_PID0_PARTNBL_Msk (_U_(0xFF) << DSU_PID0_PARTNBL_Pos) /**< (DSU_PID0) Part Number Low Mask */
  487. #define DSU_PID0_PARTNBL(value) (DSU_PID0_PARTNBL_Msk & ((value) << DSU_PID0_PARTNBL_Pos))
  488. #define DSU_PID0_MASK _U_(0xFF) /**< \deprecated (DSU_PID0) Register MASK (Use DSU_PID0_Msk instead) */
  489. #define DSU_PID0_Msk _U_(0xFF) /**< (DSU_PID0) Register Mask */
  490. /* -------- DSU_PID1 : (DSU Offset: 0x1fe4) (R/ 32) Peripheral Identification 1 -------- */
  491. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  492. typedef union {
  493. struct {
  494. uint32_t PARTNBH:4; /**< bit: 0..3 Part Number High */
  495. uint32_t JEPIDCL:4; /**< bit: 4..7 Low part of the JEP-106 Identity Code */
  496. uint32_t :24; /**< bit: 8..31 Reserved */
  497. } bit; /**< Structure used for bit access */
  498. uint32_t reg; /**< Type used for register access */
  499. } DSU_PID1_Type;
  500. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  501. #define DSU_PID1_OFFSET (0x1FE4) /**< (DSU_PID1) Peripheral Identification 1 Offset */
  502. #define DSU_PID1_RESETVALUE _U_(0xFC) /**< (DSU_PID1) Peripheral Identification 1 Reset Value */
  503. #define DSU_PID1_PARTNBH_Pos 0 /**< (DSU_PID1) Part Number High Position */
  504. #define DSU_PID1_PARTNBH_Msk (_U_(0xF) << DSU_PID1_PARTNBH_Pos) /**< (DSU_PID1) Part Number High Mask */
  505. #define DSU_PID1_PARTNBH(value) (DSU_PID1_PARTNBH_Msk & ((value) << DSU_PID1_PARTNBH_Pos))
  506. #define DSU_PID1_JEPIDCL_Pos 4 /**< (DSU_PID1) Low part of the JEP-106 Identity Code Position */
  507. #define DSU_PID1_JEPIDCL_Msk (_U_(0xF) << DSU_PID1_JEPIDCL_Pos) /**< (DSU_PID1) Low part of the JEP-106 Identity Code Mask */
  508. #define DSU_PID1_JEPIDCL(value) (DSU_PID1_JEPIDCL_Msk & ((value) << DSU_PID1_JEPIDCL_Pos))
  509. #define DSU_PID1_MASK _U_(0xFF) /**< \deprecated (DSU_PID1) Register MASK (Use DSU_PID1_Msk instead) */
  510. #define DSU_PID1_Msk _U_(0xFF) /**< (DSU_PID1) Register Mask */
  511. /* -------- DSU_PID2 : (DSU Offset: 0x1fe8) (R/ 32) Peripheral Identification 2 -------- */
  512. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  513. typedef union {
  514. struct {
  515. uint32_t JEPIDCH:3; /**< bit: 0..2 JEP-106 Identity Code High */
  516. uint32_t JEPU:1; /**< bit: 3 JEP-106 Identity Code is used */
  517. uint32_t REVISION:4; /**< bit: 4..7 Revision Number */
  518. uint32_t :24; /**< bit: 8..31 Reserved */
  519. } bit; /**< Structure used for bit access */
  520. uint32_t reg; /**< Type used for register access */
  521. } DSU_PID2_Type;
  522. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  523. #define DSU_PID2_OFFSET (0x1FE8) /**< (DSU_PID2) Peripheral Identification 2 Offset */
  524. #define DSU_PID2_RESETVALUE _U_(0x09) /**< (DSU_PID2) Peripheral Identification 2 Reset Value */
  525. #define DSU_PID2_JEPIDCH_Pos 0 /**< (DSU_PID2) JEP-106 Identity Code High Position */
  526. #define DSU_PID2_JEPIDCH_Msk (_U_(0x7) << DSU_PID2_JEPIDCH_Pos) /**< (DSU_PID2) JEP-106 Identity Code High Mask */
  527. #define DSU_PID2_JEPIDCH(value) (DSU_PID2_JEPIDCH_Msk & ((value) << DSU_PID2_JEPIDCH_Pos))
  528. #define DSU_PID2_JEPU_Pos 3 /**< (DSU_PID2) JEP-106 Identity Code is used Position */
  529. #define DSU_PID2_JEPU_Msk (_U_(0x1) << DSU_PID2_JEPU_Pos) /**< (DSU_PID2) JEP-106 Identity Code is used Mask */
  530. #define DSU_PID2_JEPU DSU_PID2_JEPU_Msk /**< \deprecated Old style mask definition for 1 bit bitfield. Use DSU_PID2_JEPU_Msk instead */
  531. #define DSU_PID2_REVISION_Pos 4 /**< (DSU_PID2) Revision Number Position */
  532. #define DSU_PID2_REVISION_Msk (_U_(0xF) << DSU_PID2_REVISION_Pos) /**< (DSU_PID2) Revision Number Mask */
  533. #define DSU_PID2_REVISION(value) (DSU_PID2_REVISION_Msk & ((value) << DSU_PID2_REVISION_Pos))
  534. #define DSU_PID2_MASK _U_(0xFF) /**< \deprecated (DSU_PID2) Register MASK (Use DSU_PID2_Msk instead) */
  535. #define DSU_PID2_Msk _U_(0xFF) /**< (DSU_PID2) Register Mask */
  536. /* -------- DSU_PID3 : (DSU Offset: 0x1fec) (R/ 32) Peripheral Identification 3 -------- */
  537. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  538. typedef union {
  539. struct {
  540. uint32_t CUSMOD:4; /**< bit: 0..3 ARM CUSMOD */
  541. uint32_t REVAND:4; /**< bit: 4..7 Revision Number */
  542. uint32_t :24; /**< bit: 8..31 Reserved */
  543. } bit; /**< Structure used for bit access */
  544. uint32_t reg; /**< Type used for register access */
  545. } DSU_PID3_Type;
  546. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  547. #define DSU_PID3_OFFSET (0x1FEC) /**< (DSU_PID3) Peripheral Identification 3 Offset */
  548. #define DSU_PID3_RESETVALUE _U_(0x00) /**< (DSU_PID3) Peripheral Identification 3 Reset Value */
  549. #define DSU_PID3_CUSMOD_Pos 0 /**< (DSU_PID3) ARM CUSMOD Position */
  550. #define DSU_PID3_CUSMOD_Msk (_U_(0xF) << DSU_PID3_CUSMOD_Pos) /**< (DSU_PID3) ARM CUSMOD Mask */
  551. #define DSU_PID3_CUSMOD(value) (DSU_PID3_CUSMOD_Msk & ((value) << DSU_PID3_CUSMOD_Pos))
  552. #define DSU_PID3_REVAND_Pos 4 /**< (DSU_PID3) Revision Number Position */
  553. #define DSU_PID3_REVAND_Msk (_U_(0xF) << DSU_PID3_REVAND_Pos) /**< (DSU_PID3) Revision Number Mask */
  554. #define DSU_PID3_REVAND(value) (DSU_PID3_REVAND_Msk & ((value) << DSU_PID3_REVAND_Pos))
  555. #define DSU_PID3_MASK _U_(0xFF) /**< \deprecated (DSU_PID3) Register MASK (Use DSU_PID3_Msk instead) */
  556. #define DSU_PID3_Msk _U_(0xFF) /**< (DSU_PID3) Register Mask */
  557. /* -------- DSU_CID0 : (DSU Offset: 0x1ff0) (R/ 32) Component Identification 0 -------- */
  558. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  559. typedef union {
  560. struct {
  561. uint32_t PREAMBLEB0:8; /**< bit: 0..7 Preamble Byte 0 */
  562. uint32_t :24; /**< bit: 8..31 Reserved */
  563. } bit; /**< Structure used for bit access */
  564. uint32_t reg; /**< Type used for register access */
  565. } DSU_CID0_Type;
  566. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  567. #define DSU_CID0_OFFSET (0x1FF0) /**< (DSU_CID0) Component Identification 0 Offset */
  568. #define DSU_CID0_RESETVALUE _U_(0x0D) /**< (DSU_CID0) Component Identification 0 Reset Value */
  569. #define DSU_CID0_PREAMBLEB0_Pos 0 /**< (DSU_CID0) Preamble Byte 0 Position */
  570. #define DSU_CID0_PREAMBLEB0_Msk (_U_(0xFF) << DSU_CID0_PREAMBLEB0_Pos) /**< (DSU_CID0) Preamble Byte 0 Mask */
  571. #define DSU_CID0_PREAMBLEB0(value) (DSU_CID0_PREAMBLEB0_Msk & ((value) << DSU_CID0_PREAMBLEB0_Pos))
  572. #define DSU_CID0_MASK _U_(0xFF) /**< \deprecated (DSU_CID0) Register MASK (Use DSU_CID0_Msk instead) */
  573. #define DSU_CID0_Msk _U_(0xFF) /**< (DSU_CID0) Register Mask */
  574. /* -------- DSU_CID1 : (DSU Offset: 0x1ff4) (R/ 32) Component Identification 1 -------- */
  575. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  576. typedef union {
  577. struct {
  578. uint32_t PREAMBLE:4; /**< bit: 0..3 Preamble */
  579. uint32_t CCLASS:4; /**< bit: 4..7 Component Class */
  580. uint32_t :24; /**< bit: 8..31 Reserved */
  581. } bit; /**< Structure used for bit access */
  582. uint32_t reg; /**< Type used for register access */
  583. } DSU_CID1_Type;
  584. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  585. #define DSU_CID1_OFFSET (0x1FF4) /**< (DSU_CID1) Component Identification 1 Offset */
  586. #define DSU_CID1_RESETVALUE _U_(0x10) /**< (DSU_CID1) Component Identification 1 Reset Value */
  587. #define DSU_CID1_PREAMBLE_Pos 0 /**< (DSU_CID1) Preamble Position */
  588. #define DSU_CID1_PREAMBLE_Msk (_U_(0xF) << DSU_CID1_PREAMBLE_Pos) /**< (DSU_CID1) Preamble Mask */
  589. #define DSU_CID1_PREAMBLE(value) (DSU_CID1_PREAMBLE_Msk & ((value) << DSU_CID1_PREAMBLE_Pos))
  590. #define DSU_CID1_CCLASS_Pos 4 /**< (DSU_CID1) Component Class Position */
  591. #define DSU_CID1_CCLASS_Msk (_U_(0xF) << DSU_CID1_CCLASS_Pos) /**< (DSU_CID1) Component Class Mask */
  592. #define DSU_CID1_CCLASS(value) (DSU_CID1_CCLASS_Msk & ((value) << DSU_CID1_CCLASS_Pos))
  593. #define DSU_CID1_MASK _U_(0xFF) /**< \deprecated (DSU_CID1) Register MASK (Use DSU_CID1_Msk instead) */
  594. #define DSU_CID1_Msk _U_(0xFF) /**< (DSU_CID1) Register Mask */
  595. /* -------- DSU_CID2 : (DSU Offset: 0x1ff8) (R/ 32) Component Identification 2 -------- */
  596. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  597. typedef union {
  598. struct {
  599. uint32_t PREAMBLEB2:8; /**< bit: 0..7 Preamble Byte 2 */
  600. uint32_t :24; /**< bit: 8..31 Reserved */
  601. } bit; /**< Structure used for bit access */
  602. uint32_t reg; /**< Type used for register access */
  603. } DSU_CID2_Type;
  604. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  605. #define DSU_CID2_OFFSET (0x1FF8) /**< (DSU_CID2) Component Identification 2 Offset */
  606. #define DSU_CID2_RESETVALUE _U_(0x05) /**< (DSU_CID2) Component Identification 2 Reset Value */
  607. #define DSU_CID2_PREAMBLEB2_Pos 0 /**< (DSU_CID2) Preamble Byte 2 Position */
  608. #define DSU_CID2_PREAMBLEB2_Msk (_U_(0xFF) << DSU_CID2_PREAMBLEB2_Pos) /**< (DSU_CID2) Preamble Byte 2 Mask */
  609. #define DSU_CID2_PREAMBLEB2(value) (DSU_CID2_PREAMBLEB2_Msk & ((value) << DSU_CID2_PREAMBLEB2_Pos))
  610. #define DSU_CID2_MASK _U_(0xFF) /**< \deprecated (DSU_CID2) Register MASK (Use DSU_CID2_Msk instead) */
  611. #define DSU_CID2_Msk _U_(0xFF) /**< (DSU_CID2) Register Mask */
  612. /* -------- DSU_CID3 : (DSU Offset: 0x1ffc) (R/ 32) Component Identification 3 -------- */
  613. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  614. typedef union {
  615. struct {
  616. uint32_t PREAMBLEB3:8; /**< bit: 0..7 Preamble Byte 3 */
  617. uint32_t :24; /**< bit: 8..31 Reserved */
  618. } bit; /**< Structure used for bit access */
  619. uint32_t reg; /**< Type used for register access */
  620. } DSU_CID3_Type;
  621. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  622. #define DSU_CID3_OFFSET (0x1FFC) /**< (DSU_CID3) Component Identification 3 Offset */
  623. #define DSU_CID3_RESETVALUE _U_(0xB1) /**< (DSU_CID3) Component Identification 3 Reset Value */
  624. #define DSU_CID3_PREAMBLEB3_Pos 0 /**< (DSU_CID3) Preamble Byte 3 Position */
  625. #define DSU_CID3_PREAMBLEB3_Msk (_U_(0xFF) << DSU_CID3_PREAMBLEB3_Pos) /**< (DSU_CID3) Preamble Byte 3 Mask */
  626. #define DSU_CID3_PREAMBLEB3(value) (DSU_CID3_PREAMBLEB3_Msk & ((value) << DSU_CID3_PREAMBLEB3_Pos))
  627. #define DSU_CID3_MASK _U_(0xFF) /**< \deprecated (DSU_CID3) Register MASK (Use DSU_CID3_Msk instead) */
  628. #define DSU_CID3_Msk _U_(0xFF) /**< (DSU_CID3) Register Mask */
  629. #if !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__))
  630. /** \brief DSU hardware registers */
  631. typedef struct { /* Device Service Unit */
  632. __O DSU_CTRL_Type CTRL; /**< Offset: 0x00 ( /W 8) Control */
  633. __IO DSU_STATUSA_Type STATUSA; /**< Offset: 0x01 (R/W 8) Status A */
  634. __I DSU_STATUSB_Type STATUSB; /**< Offset: 0x02 (R/ 8) Status B */
  635. __I DSU_STATUSC_Type STATUSC; /**< Offset: 0x03 (R/ 8) Status C */
  636. __IO DSU_ADDR_Type ADDR; /**< Offset: 0x04 (R/W 32) Address */
  637. __IO DSU_LENGTH_Type LENGTH; /**< Offset: 0x08 (R/W 32) Length */
  638. __IO DSU_DATA_Type DATA; /**< Offset: 0x0C (R/W 32) Data */
  639. __IO DSU_DCC_Type DCC[2]; /**< Offset: 0x10 (R/W 32) Debug Communication Channel n */
  640. __I DSU_DID_Type DID; /**< Offset: 0x18 (R/ 32) Device Identification */
  641. __IO DSU_CFG_Type CFG; /**< Offset: 0x1C (R/W 32) Configuration */
  642. __IO DSU_BCC_Type BCC[2]; /**< Offset: 0x20 (R/W 32) Boot ROM Communication Channel n */
  643. __I uint8_t Reserved1[200];
  644. __IO DSU_DCFG_Type DCFG[2]; /**< Offset: 0xF0 (R/W 32) Device Configuration */
  645. __I uint8_t Reserved2[3848];
  646. __I DSU_ENTRY0_Type ENTRY0; /**< Offset: 0x1000 (R/ 32) CoreSight ROM Table Entry 0 */
  647. __I DSU_ENTRY1_Type ENTRY1; /**< Offset: 0x1004 (R/ 32) CoreSight ROM Table Entry 1 */
  648. __I DSU_END_Type END; /**< Offset: 0x1008 (R/ 32) CoreSight ROM Table End */
  649. __I uint8_t Reserved3[4032];
  650. __I DSU_MEMTYPE_Type MEMTYPE; /**< Offset: 0x1FCC (R/ 32) CoreSight ROM Table Memory Type */
  651. __I DSU_PID4_Type PID4; /**< Offset: 0x1FD0 (R/ 32) Peripheral Identification 4 */
  652. __I DSU_PID5_Type PID5; /**< Offset: 0x1FD4 (R/ 32) Peripheral Identification 5 */
  653. __I DSU_PID6_Type PID6; /**< Offset: 0x1FD8 (R/ 32) Peripheral Identification 6 */
  654. __I DSU_PID7_Type PID7; /**< Offset: 0x1FDC (R/ 32) Peripheral Identification 7 */
  655. __I DSU_PID0_Type PID0; /**< Offset: 0x1FE0 (R/ 32) Peripheral Identification 0 */
  656. __I DSU_PID1_Type PID1; /**< Offset: 0x1FE4 (R/ 32) Peripheral Identification 1 */
  657. __I DSU_PID2_Type PID2; /**< Offset: 0x1FE8 (R/ 32) Peripheral Identification 2 */
  658. __I DSU_PID3_Type PID3; /**< Offset: 0x1FEC (R/ 32) Peripheral Identification 3 */
  659. __I DSU_CID0_Type CID0; /**< Offset: 0x1FF0 (R/ 32) Component Identification 0 */
  660. __I DSU_CID1_Type CID1; /**< Offset: 0x1FF4 (R/ 32) Component Identification 1 */
  661. __I DSU_CID2_Type CID2; /**< Offset: 0x1FF8 (R/ 32) Component Identification 2 */
  662. __I DSU_CID3_Type CID3; /**< Offset: 0x1FFC (R/ 32) Component Identification 3 */
  663. } Dsu;
  664. #endif /* !(defined(__ASSEMBLER__) || defined(__IAR_SYSTEMS_ASM__)) */
  665. /** @} end of Device Service Unit */
  666. #endif /* _SAML11_DSU_COMPONENT_H_ */