hpm_hall_regs.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_HALL_H
  8. #define HPM_HALL_H
  9. typedef struct {
  10. __RW uint32_t CR; /* 0x0: Control Register */
  11. __RW uint32_t PHCFG; /* 0x4: Phase configure register */
  12. __RW uint32_t WDGCFG; /* 0x8: Watchdog configure register */
  13. __RW uint32_t UVWCFG; /* 0xC: U,V,W configure register */
  14. __RW uint32_t TRGOEN; /* 0x10: Trigger output enable register */
  15. __RW uint32_t READEN; /* 0x14: Read event enable register */
  16. __R uint8_t RESERVED0[12]; /* 0x18 - 0x23: Reserved */
  17. __RW uint32_t DMAEN; /* 0x24: DMA enable register */
  18. __RW uint32_t SR; /* 0x28: Status register */
  19. __RW uint32_t IRQEN; /* 0x2C: Interrupt request enable register */
  20. struct {
  21. __R uint32_t W; /* 0x30: W counter */
  22. __R uint32_t V; /* 0x34: V counter */
  23. __R uint32_t U; /* 0x38: U counter */
  24. __R uint32_t TMR; /* 0x3C: Timer counter */
  25. } COUNT[4];
  26. struct {
  27. __R uint32_t HIS0; /* 0x70: history register 0 */
  28. __R uint32_t HIS1; /* 0x74: history register 1 */
  29. } HIS[3];
  30. } HALL_Type;
  31. /* Bitfield definition for register: CR */
  32. /*
  33. * READ (WO)
  34. *
  35. * 1- load ucnt, vcnt, wcnt and tmrcnt into their read registers. Hardware auto-clear; read as 0
  36. */
  37. #define HALL_CR_READ_MASK (0x80000000UL)
  38. #define HALL_CR_READ_SHIFT (31U)
  39. #define HALL_CR_READ_SET(x) (((uint32_t)(x) << HALL_CR_READ_SHIFT) & HALL_CR_READ_MASK)
  40. #define HALL_CR_READ_GET(x) (((uint32_t)(x) & HALL_CR_READ_MASK) >> HALL_CR_READ_SHIFT)
  41. /*
  42. * SNAPEN (RW)
  43. *
  44. * 1- load ucnt, vcnt, wcnt and tmrcnt into their snap registers when snapi input assert
  45. */
  46. #define HALL_CR_SNAPEN_MASK (0x800U)
  47. #define HALL_CR_SNAPEN_SHIFT (11U)
  48. #define HALL_CR_SNAPEN_SET(x) (((uint32_t)(x) << HALL_CR_SNAPEN_SHIFT) & HALL_CR_SNAPEN_MASK)
  49. #define HALL_CR_SNAPEN_GET(x) (((uint32_t)(x) & HALL_CR_SNAPEN_MASK) >> HALL_CR_SNAPEN_SHIFT)
  50. /*
  51. * RSTCNT (RW)
  52. *
  53. * set to reset all counter and related snapshots
  54. */
  55. #define HALL_CR_RSTCNT_MASK (0x10U)
  56. #define HALL_CR_RSTCNT_SHIFT (4U)
  57. #define HALL_CR_RSTCNT_SET(x) (((uint32_t)(x) << HALL_CR_RSTCNT_SHIFT) & HALL_CR_RSTCNT_MASK)
  58. #define HALL_CR_RSTCNT_GET(x) (((uint32_t)(x) & HALL_CR_RSTCNT_MASK) >> HALL_CR_RSTCNT_SHIFT)
  59. /* Bitfield definition for register: PHCFG */
  60. /*
  61. * DLYSEL (RW)
  62. *
  63. * This bit select delay start time:
  64. * 1- start counting delay after pre-trigger
  65. * 0- start counting delay after u,v,w toggle
  66. */
  67. #define HALL_PHCFG_DLYSEL_MASK (0x80000000UL)
  68. #define HALL_PHCFG_DLYSEL_SHIFT (31U)
  69. #define HALL_PHCFG_DLYSEL_SET(x) (((uint32_t)(x) << HALL_PHCFG_DLYSEL_SHIFT) & HALL_PHCFG_DLYSEL_MASK)
  70. #define HALL_PHCFG_DLYSEL_GET(x) (((uint32_t)(x) & HALL_PHCFG_DLYSEL_MASK) >> HALL_PHCFG_DLYSEL_SHIFT)
  71. /*
  72. * DLYCNT (RW)
  73. *
  74. * delay clock cycles number
  75. */
  76. #define HALL_PHCFG_DLYCNT_MASK (0xFFFFFFUL)
  77. #define HALL_PHCFG_DLYCNT_SHIFT (0U)
  78. #define HALL_PHCFG_DLYCNT_SET(x) (((uint32_t)(x) << HALL_PHCFG_DLYCNT_SHIFT) & HALL_PHCFG_DLYCNT_MASK)
  79. #define HALL_PHCFG_DLYCNT_GET(x) (((uint32_t)(x) & HALL_PHCFG_DLYCNT_MASK) >> HALL_PHCFG_DLYCNT_SHIFT)
  80. /* Bitfield definition for register: WDGCFG */
  81. /*
  82. * WDGEN (RW)
  83. *
  84. * 1- enable wdog counter
  85. */
  86. #define HALL_WDGCFG_WDGEN_MASK (0x80000000UL)
  87. #define HALL_WDGCFG_WDGEN_SHIFT (31U)
  88. #define HALL_WDGCFG_WDGEN_SET(x) (((uint32_t)(x) << HALL_WDGCFG_WDGEN_SHIFT) & HALL_WDGCFG_WDGEN_MASK)
  89. #define HALL_WDGCFG_WDGEN_GET(x) (((uint32_t)(x) & HALL_WDGCFG_WDGEN_MASK) >> HALL_WDGCFG_WDGEN_SHIFT)
  90. /*
  91. * WDGTO (RW)
  92. *
  93. * watch dog timeout value
  94. */
  95. #define HALL_WDGCFG_WDGTO_MASK (0x7FFFFFFFUL)
  96. #define HALL_WDGCFG_WDGTO_SHIFT (0U)
  97. #define HALL_WDGCFG_WDGTO_SET(x) (((uint32_t)(x) << HALL_WDGCFG_WDGTO_SHIFT) & HALL_WDGCFG_WDGTO_MASK)
  98. #define HALL_WDGCFG_WDGTO_GET(x) (((uint32_t)(x) & HALL_WDGCFG_WDGTO_MASK) >> HALL_WDGCFG_WDGTO_SHIFT)
  99. /* Bitfield definition for register: UVWCFG */
  100. /*
  101. * PRECNT (RW)
  102. *
  103. * the clock cycle number which the pre flag will set before the next uvw transition
  104. */
  105. #define HALL_UVWCFG_PRECNT_MASK (0xFFFFFFUL)
  106. #define HALL_UVWCFG_PRECNT_SHIFT (0U)
  107. #define HALL_UVWCFG_PRECNT_SET(x) (((uint32_t)(x) << HALL_UVWCFG_PRECNT_SHIFT) & HALL_UVWCFG_PRECNT_MASK)
  108. #define HALL_UVWCFG_PRECNT_GET(x) (((uint32_t)(x) & HALL_UVWCFG_PRECNT_MASK) >> HALL_UVWCFG_PRECNT_SHIFT)
  109. /* Bitfield definition for register: TRGOEN */
  110. /*
  111. * WDGEN (RW)
  112. *
  113. * 1- enable trigger output when wdg flag set
  114. */
  115. #define HALL_TRGOEN_WDGEN_MASK (0x80000000UL)
  116. #define HALL_TRGOEN_WDGEN_SHIFT (31U)
  117. #define HALL_TRGOEN_WDGEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_WDGEN_SHIFT) & HALL_TRGOEN_WDGEN_MASK)
  118. #define HALL_TRGOEN_WDGEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_WDGEN_MASK) >> HALL_TRGOEN_WDGEN_SHIFT)
  119. /*
  120. * PHUPTEN (RW)
  121. *
  122. * 1- enable trigger output when phupt flag set
  123. */
  124. #define HALL_TRGOEN_PHUPTEN_MASK (0x40000000UL)
  125. #define HALL_TRGOEN_PHUPTEN_SHIFT (30U)
  126. #define HALL_TRGOEN_PHUPTEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_PHUPTEN_SHIFT) & HALL_TRGOEN_PHUPTEN_MASK)
  127. #define HALL_TRGOEN_PHUPTEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_PHUPTEN_MASK) >> HALL_TRGOEN_PHUPTEN_SHIFT)
  128. /*
  129. * PHPREEN (RW)
  130. *
  131. * 1- enable trigger output when phpre flag set
  132. */
  133. #define HALL_TRGOEN_PHPREEN_MASK (0x20000000UL)
  134. #define HALL_TRGOEN_PHPREEN_SHIFT (29U)
  135. #define HALL_TRGOEN_PHPREEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_PHPREEN_SHIFT) & HALL_TRGOEN_PHPREEN_MASK)
  136. #define HALL_TRGOEN_PHPREEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_PHPREEN_MASK) >> HALL_TRGOEN_PHPREEN_SHIFT)
  137. /*
  138. * PHDLYEN (RW)
  139. *
  140. * 1- enable trigger output when phdly flag set
  141. */
  142. #define HALL_TRGOEN_PHDLYEN_MASK (0x10000000UL)
  143. #define HALL_TRGOEN_PHDLYEN_SHIFT (28U)
  144. #define HALL_TRGOEN_PHDLYEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_PHDLYEN_SHIFT) & HALL_TRGOEN_PHDLYEN_MASK)
  145. #define HALL_TRGOEN_PHDLYEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_PHDLYEN_MASK) >> HALL_TRGOEN_PHDLYEN_SHIFT)
  146. /*
  147. * UFEN (RW)
  148. *
  149. * 1- enable trigger output when u flag set
  150. */
  151. #define HALL_TRGOEN_UFEN_MASK (0x800000UL)
  152. #define HALL_TRGOEN_UFEN_SHIFT (23U)
  153. #define HALL_TRGOEN_UFEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_UFEN_SHIFT) & HALL_TRGOEN_UFEN_MASK)
  154. #define HALL_TRGOEN_UFEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_UFEN_MASK) >> HALL_TRGOEN_UFEN_SHIFT)
  155. /*
  156. * VFEN (RW)
  157. *
  158. * 1- enable trigger output when v flag set
  159. */
  160. #define HALL_TRGOEN_VFEN_MASK (0x400000UL)
  161. #define HALL_TRGOEN_VFEN_SHIFT (22U)
  162. #define HALL_TRGOEN_VFEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_VFEN_SHIFT) & HALL_TRGOEN_VFEN_MASK)
  163. #define HALL_TRGOEN_VFEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_VFEN_MASK) >> HALL_TRGOEN_VFEN_SHIFT)
  164. /*
  165. * WFEN (RW)
  166. *
  167. * 1- enable trigger output when w flag set
  168. */
  169. #define HALL_TRGOEN_WFEN_MASK (0x200000UL)
  170. #define HALL_TRGOEN_WFEN_SHIFT (21U)
  171. #define HALL_TRGOEN_WFEN_SET(x) (((uint32_t)(x) << HALL_TRGOEN_WFEN_SHIFT) & HALL_TRGOEN_WFEN_MASK)
  172. #define HALL_TRGOEN_WFEN_GET(x) (((uint32_t)(x) & HALL_TRGOEN_WFEN_MASK) >> HALL_TRGOEN_WFEN_SHIFT)
  173. /* Bitfield definition for register: READEN */
  174. /*
  175. * WDGEN (RW)
  176. *
  177. * 1- load counters to their read registers when wdg flag set
  178. */
  179. #define HALL_READEN_WDGEN_MASK (0x80000000UL)
  180. #define HALL_READEN_WDGEN_SHIFT (31U)
  181. #define HALL_READEN_WDGEN_SET(x) (((uint32_t)(x) << HALL_READEN_WDGEN_SHIFT) & HALL_READEN_WDGEN_MASK)
  182. #define HALL_READEN_WDGEN_GET(x) (((uint32_t)(x) & HALL_READEN_WDGEN_MASK) >> HALL_READEN_WDGEN_SHIFT)
  183. /*
  184. * PHUPTEN (RW)
  185. *
  186. * 1- load counters to their read registers when phupt flag set
  187. */
  188. #define HALL_READEN_PHUPTEN_MASK (0x40000000UL)
  189. #define HALL_READEN_PHUPTEN_SHIFT (30U)
  190. #define HALL_READEN_PHUPTEN_SET(x) (((uint32_t)(x) << HALL_READEN_PHUPTEN_SHIFT) & HALL_READEN_PHUPTEN_MASK)
  191. #define HALL_READEN_PHUPTEN_GET(x) (((uint32_t)(x) & HALL_READEN_PHUPTEN_MASK) >> HALL_READEN_PHUPTEN_SHIFT)
  192. /*
  193. * PHPREEN (RW)
  194. *
  195. * 1- load counters to their read registers when phpre flag set
  196. */
  197. #define HALL_READEN_PHPREEN_MASK (0x20000000UL)
  198. #define HALL_READEN_PHPREEN_SHIFT (29U)
  199. #define HALL_READEN_PHPREEN_SET(x) (((uint32_t)(x) << HALL_READEN_PHPREEN_SHIFT) & HALL_READEN_PHPREEN_MASK)
  200. #define HALL_READEN_PHPREEN_GET(x) (((uint32_t)(x) & HALL_READEN_PHPREEN_MASK) >> HALL_READEN_PHPREEN_SHIFT)
  201. /*
  202. * PHDLYEN (RW)
  203. *
  204. * 1- load counters to their read registers when phdly flag set
  205. */
  206. #define HALL_READEN_PHDLYEN_MASK (0x10000000UL)
  207. #define HALL_READEN_PHDLYEN_SHIFT (28U)
  208. #define HALL_READEN_PHDLYEN_SET(x) (((uint32_t)(x) << HALL_READEN_PHDLYEN_SHIFT) & HALL_READEN_PHDLYEN_MASK)
  209. #define HALL_READEN_PHDLYEN_GET(x) (((uint32_t)(x) & HALL_READEN_PHDLYEN_MASK) >> HALL_READEN_PHDLYEN_SHIFT)
  210. /*
  211. * UFEN (RW)
  212. *
  213. * 1- load counters to their read registers when u flag set
  214. */
  215. #define HALL_READEN_UFEN_MASK (0x800000UL)
  216. #define HALL_READEN_UFEN_SHIFT (23U)
  217. #define HALL_READEN_UFEN_SET(x) (((uint32_t)(x) << HALL_READEN_UFEN_SHIFT) & HALL_READEN_UFEN_MASK)
  218. #define HALL_READEN_UFEN_GET(x) (((uint32_t)(x) & HALL_READEN_UFEN_MASK) >> HALL_READEN_UFEN_SHIFT)
  219. /*
  220. * VFEN (RW)
  221. *
  222. * 1- load counters to their read registers when v flag set
  223. */
  224. #define HALL_READEN_VFEN_MASK (0x400000UL)
  225. #define HALL_READEN_VFEN_SHIFT (22U)
  226. #define HALL_READEN_VFEN_SET(x) (((uint32_t)(x) << HALL_READEN_VFEN_SHIFT) & HALL_READEN_VFEN_MASK)
  227. #define HALL_READEN_VFEN_GET(x) (((uint32_t)(x) & HALL_READEN_VFEN_MASK) >> HALL_READEN_VFEN_SHIFT)
  228. /*
  229. * WFEN (RW)
  230. *
  231. * 1- load counters to their read registers when w flag set
  232. */
  233. #define HALL_READEN_WFEN_MASK (0x200000UL)
  234. #define HALL_READEN_WFEN_SHIFT (21U)
  235. #define HALL_READEN_WFEN_SET(x) (((uint32_t)(x) << HALL_READEN_WFEN_SHIFT) & HALL_READEN_WFEN_MASK)
  236. #define HALL_READEN_WFEN_GET(x) (((uint32_t)(x) & HALL_READEN_WFEN_MASK) >> HALL_READEN_WFEN_SHIFT)
  237. /* Bitfield definition for register: DMAEN */
  238. /*
  239. * WDGEN (RW)
  240. *
  241. * 1- generate dma request when wdg flag set
  242. */
  243. #define HALL_DMAEN_WDGEN_MASK (0x80000000UL)
  244. #define HALL_DMAEN_WDGEN_SHIFT (31U)
  245. #define HALL_DMAEN_WDGEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_WDGEN_SHIFT) & HALL_DMAEN_WDGEN_MASK)
  246. #define HALL_DMAEN_WDGEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_WDGEN_MASK) >> HALL_DMAEN_WDGEN_SHIFT)
  247. /*
  248. * PHUPTEN (RW)
  249. *
  250. * 1- generate dma request when phupt flag set
  251. */
  252. #define HALL_DMAEN_PHUPTEN_MASK (0x40000000UL)
  253. #define HALL_DMAEN_PHUPTEN_SHIFT (30U)
  254. #define HALL_DMAEN_PHUPTEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_PHUPTEN_SHIFT) & HALL_DMAEN_PHUPTEN_MASK)
  255. #define HALL_DMAEN_PHUPTEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_PHUPTEN_MASK) >> HALL_DMAEN_PHUPTEN_SHIFT)
  256. /*
  257. * PHPREEN (RW)
  258. *
  259. * 1- generate dma request when phpre flag set
  260. */
  261. #define HALL_DMAEN_PHPREEN_MASK (0x20000000UL)
  262. #define HALL_DMAEN_PHPREEN_SHIFT (29U)
  263. #define HALL_DMAEN_PHPREEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_PHPREEN_SHIFT) & HALL_DMAEN_PHPREEN_MASK)
  264. #define HALL_DMAEN_PHPREEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_PHPREEN_MASK) >> HALL_DMAEN_PHPREEN_SHIFT)
  265. /*
  266. * PHDLYEN (RW)
  267. *
  268. * 1- generate dma request when phdly flag set
  269. */
  270. #define HALL_DMAEN_PHDLYEN_MASK (0x10000000UL)
  271. #define HALL_DMAEN_PHDLYEN_SHIFT (28U)
  272. #define HALL_DMAEN_PHDLYEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_PHDLYEN_SHIFT) & HALL_DMAEN_PHDLYEN_MASK)
  273. #define HALL_DMAEN_PHDLYEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_PHDLYEN_MASK) >> HALL_DMAEN_PHDLYEN_SHIFT)
  274. /*
  275. * UFEN (RW)
  276. *
  277. * 1- generate dma request when u flag set
  278. */
  279. #define HALL_DMAEN_UFEN_MASK (0x800000UL)
  280. #define HALL_DMAEN_UFEN_SHIFT (23U)
  281. #define HALL_DMAEN_UFEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_UFEN_SHIFT) & HALL_DMAEN_UFEN_MASK)
  282. #define HALL_DMAEN_UFEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_UFEN_MASK) >> HALL_DMAEN_UFEN_SHIFT)
  283. /*
  284. * VFEN (RW)
  285. *
  286. * 1- generate dma request when v flag set
  287. */
  288. #define HALL_DMAEN_VFEN_MASK (0x400000UL)
  289. #define HALL_DMAEN_VFEN_SHIFT (22U)
  290. #define HALL_DMAEN_VFEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_VFEN_SHIFT) & HALL_DMAEN_VFEN_MASK)
  291. #define HALL_DMAEN_VFEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_VFEN_MASK) >> HALL_DMAEN_VFEN_SHIFT)
  292. /*
  293. * WFEN (RW)
  294. *
  295. * 1- generate dma request when w flag set
  296. */
  297. #define HALL_DMAEN_WFEN_MASK (0x200000UL)
  298. #define HALL_DMAEN_WFEN_SHIFT (21U)
  299. #define HALL_DMAEN_WFEN_SET(x) (((uint32_t)(x) << HALL_DMAEN_WFEN_SHIFT) & HALL_DMAEN_WFEN_MASK)
  300. #define HALL_DMAEN_WFEN_GET(x) (((uint32_t)(x) & HALL_DMAEN_WFEN_MASK) >> HALL_DMAEN_WFEN_SHIFT)
  301. /* Bitfield definition for register: SR */
  302. /*
  303. * WDGF (RW)
  304. *
  305. * watchdog count timeout flag
  306. */
  307. #define HALL_SR_WDGF_MASK (0x80000000UL)
  308. #define HALL_SR_WDGF_SHIFT (31U)
  309. #define HALL_SR_WDGF_SET(x) (((uint32_t)(x) << HALL_SR_WDGF_SHIFT) & HALL_SR_WDGF_MASK)
  310. #define HALL_SR_WDGF_GET(x) (((uint32_t)(x) & HALL_SR_WDGF_MASK) >> HALL_SR_WDGF_SHIFT)
  311. /*
  312. * PHUPTF (RW)
  313. *
  314. * phase update flag, will set when any of u, v, w signal toggle
  315. */
  316. #define HALL_SR_PHUPTF_MASK (0x40000000UL)
  317. #define HALL_SR_PHUPTF_SHIFT (30U)
  318. #define HALL_SR_PHUPTF_SET(x) (((uint32_t)(x) << HALL_SR_PHUPTF_SHIFT) & HALL_SR_PHUPTF_MASK)
  319. #define HALL_SR_PHUPTF_GET(x) (((uint32_t)(x) & HALL_SR_PHUPTF_MASK) >> HALL_SR_PHUPTF_SHIFT)
  320. /*
  321. * PHPREF (RW)
  322. *
  323. * phase update pre flag, will set PRECNT cycles before any of u, v, w signal toggle
  324. */
  325. #define HALL_SR_PHPREF_MASK (0x20000000UL)
  326. #define HALL_SR_PHPREF_SHIFT (29U)
  327. #define HALL_SR_PHPREF_SET(x) (((uint32_t)(x) << HALL_SR_PHPREF_SHIFT) & HALL_SR_PHPREF_MASK)
  328. #define HALL_SR_PHPREF_GET(x) (((uint32_t)(x) & HALL_SR_PHPREF_MASK) >> HALL_SR_PHPREF_SHIFT)
  329. /*
  330. * PHDLYF (RW)
  331. *
  332. * phase update delay flag, will set DLYCNT cycles after any of u, v, w signal toggle or after the phpre flag depands on DLYSEL setting
  333. */
  334. #define HALL_SR_PHDLYF_MASK (0x10000000UL)
  335. #define HALL_SR_PHDLYF_SHIFT (28U)
  336. #define HALL_SR_PHDLYF_SET(x) (((uint32_t)(x) << HALL_SR_PHDLYF_SHIFT) & HALL_SR_PHDLYF_MASK)
  337. #define HALL_SR_PHDLYF_GET(x) (((uint32_t)(x) & HALL_SR_PHDLYF_MASK) >> HALL_SR_PHDLYF_SHIFT)
  338. /*
  339. * UF (RW)
  340. *
  341. * u flag, will set when u signal toggle
  342. */
  343. #define HALL_SR_UF_MASK (0x800000UL)
  344. #define HALL_SR_UF_SHIFT (23U)
  345. #define HALL_SR_UF_SET(x) (((uint32_t)(x) << HALL_SR_UF_SHIFT) & HALL_SR_UF_MASK)
  346. #define HALL_SR_UF_GET(x) (((uint32_t)(x) & HALL_SR_UF_MASK) >> HALL_SR_UF_SHIFT)
  347. /*
  348. * VF (RW)
  349. *
  350. * v flag, will set when v signal toggle
  351. */
  352. #define HALL_SR_VF_MASK (0x400000UL)
  353. #define HALL_SR_VF_SHIFT (22U)
  354. #define HALL_SR_VF_SET(x) (((uint32_t)(x) << HALL_SR_VF_SHIFT) & HALL_SR_VF_MASK)
  355. #define HALL_SR_VF_GET(x) (((uint32_t)(x) & HALL_SR_VF_MASK) >> HALL_SR_VF_SHIFT)
  356. /*
  357. * WF (RW)
  358. *
  359. * w flag, will set when w signal toggle
  360. */
  361. #define HALL_SR_WF_MASK (0x200000UL)
  362. #define HALL_SR_WF_SHIFT (21U)
  363. #define HALL_SR_WF_SET(x) (((uint32_t)(x) << HALL_SR_WF_SHIFT) & HALL_SR_WF_MASK)
  364. #define HALL_SR_WF_GET(x) (((uint32_t)(x) & HALL_SR_WF_MASK) >> HALL_SR_WF_SHIFT)
  365. /* Bitfield definition for register: IRQEN */
  366. /*
  367. * WDGIE (RW)
  368. *
  369. * 1- generate interrupt request when wdg flag set
  370. */
  371. #define HALL_IRQEN_WDGIE_MASK (0x80000000UL)
  372. #define HALL_IRQEN_WDGIE_SHIFT (31U)
  373. #define HALL_IRQEN_WDGIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_WDGIE_SHIFT) & HALL_IRQEN_WDGIE_MASK)
  374. #define HALL_IRQEN_WDGIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_WDGIE_MASK) >> HALL_IRQEN_WDGIE_SHIFT)
  375. /*
  376. * PHUPTIE (RW)
  377. *
  378. * 1- generate interrupt request when phupt flag set
  379. */
  380. #define HALL_IRQEN_PHUPTIE_MASK (0x40000000UL)
  381. #define HALL_IRQEN_PHUPTIE_SHIFT (30U)
  382. #define HALL_IRQEN_PHUPTIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_PHUPTIE_SHIFT) & HALL_IRQEN_PHUPTIE_MASK)
  383. #define HALL_IRQEN_PHUPTIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_PHUPTIE_MASK) >> HALL_IRQEN_PHUPTIE_SHIFT)
  384. /*
  385. * PHPREIE (RW)
  386. *
  387. * 1- generate interrupt request when phpre flag set
  388. */
  389. #define HALL_IRQEN_PHPREIE_MASK (0x20000000UL)
  390. #define HALL_IRQEN_PHPREIE_SHIFT (29U)
  391. #define HALL_IRQEN_PHPREIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_PHPREIE_SHIFT) & HALL_IRQEN_PHPREIE_MASK)
  392. #define HALL_IRQEN_PHPREIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_PHPREIE_MASK) >> HALL_IRQEN_PHPREIE_SHIFT)
  393. /*
  394. * PHDLYIE (RW)
  395. *
  396. * 1- generate interrupt request when phdly flag set
  397. */
  398. #define HALL_IRQEN_PHDLYIE_MASK (0x10000000UL)
  399. #define HALL_IRQEN_PHDLYIE_SHIFT (28U)
  400. #define HALL_IRQEN_PHDLYIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_PHDLYIE_SHIFT) & HALL_IRQEN_PHDLYIE_MASK)
  401. #define HALL_IRQEN_PHDLYIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_PHDLYIE_MASK) >> HALL_IRQEN_PHDLYIE_SHIFT)
  402. /*
  403. * UFIE (RW)
  404. *
  405. * 1- generate interrupt request when u flag set
  406. */
  407. #define HALL_IRQEN_UFIE_MASK (0x800000UL)
  408. #define HALL_IRQEN_UFIE_SHIFT (23U)
  409. #define HALL_IRQEN_UFIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_UFIE_SHIFT) & HALL_IRQEN_UFIE_MASK)
  410. #define HALL_IRQEN_UFIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_UFIE_MASK) >> HALL_IRQEN_UFIE_SHIFT)
  411. /*
  412. * VFIE (RW)
  413. *
  414. * 1- generate interrupt request when v flag set
  415. */
  416. #define HALL_IRQEN_VFIE_MASK (0x400000UL)
  417. #define HALL_IRQEN_VFIE_SHIFT (22U)
  418. #define HALL_IRQEN_VFIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_VFIE_SHIFT) & HALL_IRQEN_VFIE_MASK)
  419. #define HALL_IRQEN_VFIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_VFIE_MASK) >> HALL_IRQEN_VFIE_SHIFT)
  420. /*
  421. * WFIE (RW)
  422. *
  423. * 1- generate interrupt request when w flag set
  424. */
  425. #define HALL_IRQEN_WFIE_MASK (0x200000UL)
  426. #define HALL_IRQEN_WFIE_SHIFT (21U)
  427. #define HALL_IRQEN_WFIE_SET(x) (((uint32_t)(x) << HALL_IRQEN_WFIE_SHIFT) & HALL_IRQEN_WFIE_MASK)
  428. #define HALL_IRQEN_WFIE_GET(x) (((uint32_t)(x) & HALL_IRQEN_WFIE_MASK) >> HALL_IRQEN_WFIE_SHIFT)
  429. /* Bitfield definition for register of struct array COUNT: W */
  430. /*
  431. * WCNT (RO)
  432. *
  433. * wcnt counter
  434. */
  435. #define HALL_COUNT_W_WCNT_MASK (0xFFFFFFFUL)
  436. #define HALL_COUNT_W_WCNT_SHIFT (0U)
  437. #define HALL_COUNT_W_WCNT_GET(x) (((uint32_t)(x) & HALL_COUNT_W_WCNT_MASK) >> HALL_COUNT_W_WCNT_SHIFT)
  438. /* Bitfield definition for register of struct array COUNT: V */
  439. /*
  440. * VCNT (RO)
  441. *
  442. * vcnt counter
  443. */
  444. #define HALL_COUNT_V_VCNT_MASK (0xFFFFFFFUL)
  445. #define HALL_COUNT_V_VCNT_SHIFT (0U)
  446. #define HALL_COUNT_V_VCNT_GET(x) (((uint32_t)(x) & HALL_COUNT_V_VCNT_MASK) >> HALL_COUNT_V_VCNT_SHIFT)
  447. /* Bitfield definition for register of struct array COUNT: U */
  448. /*
  449. * DIR (RO)
  450. *
  451. * 1- reverse rotation
  452. * 0- forward rotation
  453. */
  454. #define HALL_COUNT_U_DIR_MASK (0x80000000UL)
  455. #define HALL_COUNT_U_DIR_SHIFT (31U)
  456. #define HALL_COUNT_U_DIR_GET(x) (((uint32_t)(x) & HALL_COUNT_U_DIR_MASK) >> HALL_COUNT_U_DIR_SHIFT)
  457. /*
  458. * USTAT (RO)
  459. *
  460. * this bit indicate U state
  461. */
  462. #define HALL_COUNT_U_USTAT_MASK (0x40000000UL)
  463. #define HALL_COUNT_U_USTAT_SHIFT (30U)
  464. #define HALL_COUNT_U_USTAT_GET(x) (((uint32_t)(x) & HALL_COUNT_U_USTAT_MASK) >> HALL_COUNT_U_USTAT_SHIFT)
  465. /*
  466. * VSTAT (RO)
  467. *
  468. * this bit indicate V state
  469. */
  470. #define HALL_COUNT_U_VSTAT_MASK (0x20000000UL)
  471. #define HALL_COUNT_U_VSTAT_SHIFT (29U)
  472. #define HALL_COUNT_U_VSTAT_GET(x) (((uint32_t)(x) & HALL_COUNT_U_VSTAT_MASK) >> HALL_COUNT_U_VSTAT_SHIFT)
  473. /*
  474. * WSTAT (RO)
  475. *
  476. * this bit indicate W state
  477. */
  478. #define HALL_COUNT_U_WSTAT_MASK (0x10000000UL)
  479. #define HALL_COUNT_U_WSTAT_SHIFT (28U)
  480. #define HALL_COUNT_U_WSTAT_GET(x) (((uint32_t)(x) & HALL_COUNT_U_WSTAT_MASK) >> HALL_COUNT_U_WSTAT_SHIFT)
  481. /*
  482. * UCNT (RO)
  483. *
  484. * ucnt counter
  485. */
  486. #define HALL_COUNT_U_UCNT_MASK (0xFFFFFFFUL)
  487. #define HALL_COUNT_U_UCNT_SHIFT (0U)
  488. #define HALL_COUNT_U_UCNT_GET(x) (((uint32_t)(x) & HALL_COUNT_U_UCNT_MASK) >> HALL_COUNT_U_UCNT_SHIFT)
  489. /* Bitfield definition for register of struct array COUNT: TMR */
  490. /*
  491. * TIMER (RO)
  492. *
  493. * 32 bit free run timer
  494. */
  495. #define HALL_COUNT_TMR_TIMER_MASK (0xFFFFFFFFUL)
  496. #define HALL_COUNT_TMR_TIMER_SHIFT (0U)
  497. #define HALL_COUNT_TMR_TIMER_GET(x) (((uint32_t)(x) & HALL_COUNT_TMR_TIMER_MASK) >> HALL_COUNT_TMR_TIMER_SHIFT)
  498. /* Bitfield definition for register of struct array HIS: HIS0 */
  499. /*
  500. * UHIS0 (RO)
  501. *
  502. * copy of ucnt when u signal transition from 0 to 1
  503. */
  504. #define HALL_HIS_HIS0_UHIS0_MASK (0xFFFFFFFFUL)
  505. #define HALL_HIS_HIS0_UHIS0_SHIFT (0U)
  506. #define HALL_HIS_HIS0_UHIS0_GET(x) (((uint32_t)(x) & HALL_HIS_HIS0_UHIS0_MASK) >> HALL_HIS_HIS0_UHIS0_SHIFT)
  507. /* Bitfield definition for register of struct array HIS: HIS1 */
  508. /*
  509. * UHIS1 (RO)
  510. *
  511. * copy of ucnt when u signal transition from 1 to 0
  512. */
  513. #define HALL_HIS_HIS1_UHIS1_MASK (0xFFFFFFFFUL)
  514. #define HALL_HIS_HIS1_UHIS1_SHIFT (0U)
  515. #define HALL_HIS_HIS1_UHIS1_GET(x) (((uint32_t)(x) & HALL_HIS_HIS1_UHIS1_MASK) >> HALL_HIS_HIS1_UHIS1_SHIFT)
  516. /* COUNT register group index macro definition */
  517. #define HALL_COUNT_CURRENT (0UL)
  518. #define HALL_COUNT_READ (1UL)
  519. #define HALL_COUNT_SNAP0 (2UL)
  520. #define HALL_COUNT_SNAP1 (3UL)
  521. /* HIS register group index macro definition */
  522. #define HALL_HIS_U (0UL)
  523. #define HALL_HIS_V (1UL)
  524. #define HALL_HIS_W (2UL)
  525. #endif /* HPM_HALL_H */