hpm_trgm_regs.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_TRGM_H
  8. #define HPM_TRGM_H
  9. typedef struct {
  10. __RW uint32_t FILTCFG[20]; /* 0x0 - 0x4C: Filter configure register */
  11. __R uint8_t RESERVED0[176]; /* 0x50 - 0xFF: Reserved */
  12. __RW uint32_t TRGOCFG[64]; /* 0x100 - 0x1FC: Trigger manager output configure register */
  13. __RW uint32_t DMACFG[4]; /* 0x200 - 0x20C: DMA request configure register */
  14. __R uint8_t RESERVED1[496]; /* 0x210 - 0x3FF: Reserved */
  15. __RW uint32_t GCR; /* 0x400: General Control Register */
  16. } TRGM_Type;
  17. /* Bitfield definition for register array: FILTCFG */
  18. /*
  19. * OUTINV (RW)
  20. *
  21. * 1- Filter will invert the output
  22. * 0- Filter will not invert the output
  23. */
  24. #define TRGM_FILTCFG_OUTINV_MASK (0x10000UL)
  25. #define TRGM_FILTCFG_OUTINV_SHIFT (16U)
  26. #define TRGM_FILTCFG_OUTINV_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_OUTINV_SHIFT) & TRGM_FILTCFG_OUTINV_MASK)
  27. #define TRGM_FILTCFG_OUTINV_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_OUTINV_MASK) >> TRGM_FILTCFG_OUTINV_SHIFT)
  28. /*
  29. * MODE (RW)
  30. *
  31. * This bitfields defines the filter mode
  32. * 000-bypass;
  33. * 100-rapid change mode;
  34. * 101-delay filter mode;
  35. * 110-stalbe low mode;
  36. * 111-stable high mode
  37. */
  38. #define TRGM_FILTCFG_MODE_MASK (0xE000U)
  39. #define TRGM_FILTCFG_MODE_SHIFT (13U)
  40. #define TRGM_FILTCFG_MODE_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_MODE_SHIFT) & TRGM_FILTCFG_MODE_MASK)
  41. #define TRGM_FILTCFG_MODE_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_MODE_MASK) >> TRGM_FILTCFG_MODE_SHIFT)
  42. /*
  43. * SYNCEN (RW)
  44. *
  45. * set to enable sychronization input signal with TRGM clock
  46. */
  47. #define TRGM_FILTCFG_SYNCEN_MASK (0x1000U)
  48. #define TRGM_FILTCFG_SYNCEN_SHIFT (12U)
  49. #define TRGM_FILTCFG_SYNCEN_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_SYNCEN_SHIFT) & TRGM_FILTCFG_SYNCEN_MASK)
  50. #define TRGM_FILTCFG_SYNCEN_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_SYNCEN_MASK) >> TRGM_FILTCFG_SYNCEN_SHIFT)
  51. /*
  52. * FILTLEN (RW)
  53. *
  54. * This bitfields defines the filter counter length.
  55. */
  56. #define TRGM_FILTCFG_FILTLEN_MASK (0xFFFU)
  57. #define TRGM_FILTCFG_FILTLEN_SHIFT (0U)
  58. #define TRGM_FILTCFG_FILTLEN_SET(x) (((uint32_t)(x) << TRGM_FILTCFG_FILTLEN_SHIFT) & TRGM_FILTCFG_FILTLEN_MASK)
  59. #define TRGM_FILTCFG_FILTLEN_GET(x) (((uint32_t)(x) & TRGM_FILTCFG_FILTLEN_MASK) >> TRGM_FILTCFG_FILTLEN_SHIFT)
  60. /* Bitfield definition for register array: TRGOCFG */
  61. /*
  62. * OUTINV (RW)
  63. *
  64. * 1- Invert the output
  65. */
  66. #define TRGM_TRGOCFG_OUTINV_MASK (0x100U)
  67. #define TRGM_TRGOCFG_OUTINV_SHIFT (8U)
  68. #define TRGM_TRGOCFG_OUTINV_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_OUTINV_SHIFT) & TRGM_TRGOCFG_OUTINV_MASK)
  69. #define TRGM_TRGOCFG_OUTINV_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_OUTINV_MASK) >> TRGM_TRGOCFG_OUTINV_SHIFT)
  70. /*
  71. * FEDG2PEN (RW)
  72. *
  73. * 1- The selected input signal falling edge will be convert to an pulse on output.
  74. */
  75. #define TRGM_TRGOCFG_FEDG2PEN_MASK (0x80U)
  76. #define TRGM_TRGOCFG_FEDG2PEN_SHIFT (7U)
  77. #define TRGM_TRGOCFG_FEDG2PEN_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_FEDG2PEN_SHIFT) & TRGM_TRGOCFG_FEDG2PEN_MASK)
  78. #define TRGM_TRGOCFG_FEDG2PEN_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_FEDG2PEN_MASK) >> TRGM_TRGOCFG_FEDG2PEN_SHIFT)
  79. /*
  80. * REDG2PEN (RW)
  81. *
  82. * 1- The selected input signal rising edge will be convert to an pulse on output.
  83. */
  84. #define TRGM_TRGOCFG_REDG2PEN_MASK (0x40U)
  85. #define TRGM_TRGOCFG_REDG2PEN_SHIFT (6U)
  86. #define TRGM_TRGOCFG_REDG2PEN_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_REDG2PEN_SHIFT) & TRGM_TRGOCFG_REDG2PEN_MASK)
  87. #define TRGM_TRGOCFG_REDG2PEN_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_REDG2PEN_MASK) >> TRGM_TRGOCFG_REDG2PEN_SHIFT)
  88. /*
  89. * TRIGOSEL (RW)
  90. *
  91. * This bitfield selects one of the TRGM inputs as output.
  92. */
  93. #define TRGM_TRGOCFG_TRIGOSEL_MASK (0x3FU)
  94. #define TRGM_TRGOCFG_TRIGOSEL_SHIFT (0U)
  95. #define TRGM_TRGOCFG_TRIGOSEL_SET(x) (((uint32_t)(x) << TRGM_TRGOCFG_TRIGOSEL_SHIFT) & TRGM_TRGOCFG_TRIGOSEL_MASK)
  96. #define TRGM_TRGOCFG_TRIGOSEL_GET(x) (((uint32_t)(x) & TRGM_TRGOCFG_TRIGOSEL_MASK) >> TRGM_TRGOCFG_TRIGOSEL_SHIFT)
  97. /* Bitfield definition for register array: DMACFG */
  98. /*
  99. * DMASRCSEL (RW)
  100. *
  101. * This field selects one of the DMA requests as the DMA request output.
  102. */
  103. #define TRGM_DMACFG_DMASRCSEL_MASK (0x1FU)
  104. #define TRGM_DMACFG_DMASRCSEL_SHIFT (0U)
  105. #define TRGM_DMACFG_DMASRCSEL_SET(x) (((uint32_t)(x) << TRGM_DMACFG_DMASRCSEL_SHIFT) & TRGM_DMACFG_DMASRCSEL_MASK)
  106. #define TRGM_DMACFG_DMASRCSEL_GET(x) (((uint32_t)(x) & TRGM_DMACFG_DMASRCSEL_MASK) >> TRGM_DMACFG_DMASRCSEL_SHIFT)
  107. /* Bitfield definition for register: GCR */
  108. /*
  109. * TRGOPEN (RW)
  110. *
  111. * The bitfield enable the TRGM outputs.
  112. */
  113. #define TRGM_GCR_TRGOPEN_MASK (0xFFFU)
  114. #define TRGM_GCR_TRGOPEN_SHIFT (0U)
  115. #define TRGM_GCR_TRGOPEN_SET(x) (((uint32_t)(x) << TRGM_GCR_TRGOPEN_SHIFT) & TRGM_GCR_TRGOPEN_MASK)
  116. #define TRGM_GCR_TRGOPEN_GET(x) (((uint32_t)(x) & TRGM_GCR_TRGOPEN_MASK) >> TRGM_GCR_TRGOPEN_SHIFT)
  117. /* FILTCFG register group index macro definition */
  118. #define TRGM_FILTCFG_PWM_IN0 (0UL)
  119. #define TRGM_FILTCFG_PWM_IN1 (1UL)
  120. #define TRGM_FILTCFG_PWM_IN2 (2UL)
  121. #define TRGM_FILTCFG_PWM_IN3 (3UL)
  122. #define TRGM_FILTCFG_PWM_IN4 (4UL)
  123. #define TRGM_FILTCFG_PWM_IN5 (5UL)
  124. #define TRGM_FILTCFG_PWM_IN6 (6UL)
  125. #define TRGM_FILTCFG_PWM_IN7 (7UL)
  126. #define TRGM_FILTCFG_TRGM_IN0 (8UL)
  127. #define TRGM_FILTCFG_TRGM_IN1 (9UL)
  128. #define TRGM_FILTCFG_TRGM_IN2 (10UL)
  129. #define TRGM_FILTCFG_TRGM_IN3 (11UL)
  130. #define TRGM_FILTCFG_TRGM_IN4 (12UL)
  131. #define TRGM_FILTCFG_TRGM_IN5 (13UL)
  132. #define TRGM_FILTCFG_TRGM_IN6 (14UL)
  133. #define TRGM_FILTCFG_TRGM_IN7 (15UL)
  134. #define TRGM_FILTCFG_TRGM_IN8 (16UL)
  135. #define TRGM_FILTCFG_TRGM_IN9 (17UL)
  136. #define TRGM_FILTCFG_TRGM_IN10 (18UL)
  137. #define TRGM_FILTCFG_TRGM_IN11 (19UL)
  138. /* TRGOCFG register group index macro definition */
  139. #define TRGM_TRGOCFG_TRGM_OUT0 (0UL)
  140. #define TRGM_TRGOCFG_TRGM_OUT1 (1UL)
  141. #define TRGM_TRGOCFG_TRGM_OUT2 (2UL)
  142. #define TRGM_TRGOCFG_TRGM_OUT3 (3UL)
  143. #define TRGM_TRGOCFG_TRGM_OUT4 (4UL)
  144. #define TRGM_TRGOCFG_TRGM_OUT5 (5UL)
  145. #define TRGM_TRGOCFG_TRGM_OUT6 (6UL)
  146. #define TRGM_TRGOCFG_TRGM_OUT7 (7UL)
  147. #define TRGM_TRGOCFG_TRGM_OUT8 (8UL)
  148. #define TRGM_TRGOCFG_TRGM_OUT9 (9UL)
  149. #define TRGM_TRGOCFG_TRGM_OUT10 (10UL)
  150. #define TRGM_TRGOCFG_TRGM_OUT11 (11UL)
  151. #define TRGM_TRGOCFG_TRGM_OUTX0 (12UL)
  152. #define TRGM_TRGOCFG_TRGM_OUTX1 (13UL)
  153. #define TRGM_TRGOCFG_PWM_SYNCI (14UL)
  154. #define TRGM_TRGOCFG_PWM_FRCI (15UL)
  155. #define TRGM_TRGOCFG_PWM_FRCSYNCI (16UL)
  156. #define TRGM_TRGOCFG_PWM_SHRLDSYNCI (17UL)
  157. #define TRGM_TRGOCFG_PWM_FAULTI0 (18UL)
  158. #define TRGM_TRGOCFG_PWM_FAULTI1 (19UL)
  159. #define TRGM_TRGOCFG_PWM_FAULTI2 (20UL)
  160. #define TRGM_TRGOCFG_PWM_FAULTI3 (21UL)
  161. #define TRGM_TRGOCFG_PWM_IN8 (22UL)
  162. #define TRGM_TRGOCFG_PWM_IN9 (23UL)
  163. #define TRGM_TRGOCFG_PWM_IN10 (24UL)
  164. #define TRGM_TRGOCFG_PWM_IN11 (25UL)
  165. #define TRGM_TRGOCFG_PWM_IN12 (26UL)
  166. #define TRGM_TRGOCFG_PWM_IN13 (27UL)
  167. #define TRGM_TRGOCFG_PWM_IN14 (28UL)
  168. #define TRGM_TRGOCFG_PWM_IN15 (29UL)
  169. #define TRGM_TRGOCFG_PWM_IN16 (30UL)
  170. #define TRGM_TRGOCFG_PWM_IN17 (31UL)
  171. #define TRGM_TRGOCFG_PWM_IN18 (32UL)
  172. #define TRGM_TRGOCFG_PWM_IN19 (33UL)
  173. #define TRGM_TRGOCFG_PWM_IN20 (34UL)
  174. #define TRGM_TRGOCFG_PWM_IN21 (35UL)
  175. #define TRGM_TRGOCFG_PWM_IN22 (36UL)
  176. #define TRGM_TRGOCFG_PWM_IN23 (37UL)
  177. #define TRGM_TRGOCFG_QEI_A (38UL)
  178. #define TRGM_TRGOCFG_QEI_B (39UL)
  179. #define TRGM_TRGOCFG_QEI_Z (40UL)
  180. #define TRGM_TRGOCFG_QEI_H (41UL)
  181. #define TRGM_TRGOCFG_QEI_PAUSE (42UL)
  182. #define TRGM_TRGOCFG_QEI_SNAPI (43UL)
  183. #define TRGM_TRGOCFG_HALL_U (44UL)
  184. #define TRGM_TRGOCFG_HALL_V (45UL)
  185. #define TRGM_TRGOCFG_HALL_W (46UL)
  186. #define TRGM_TRGOCFG_HALL_SNAPI (47UL)
  187. #define TRGM_TRGOCFG_ADC0_STRGI (48UL)
  188. #define TRGM_TRGOCFG_ADC1_STRGI (49UL)
  189. #define TRGM_TRGOCFG_ADC2_STRGI (50UL)
  190. #define TRGM_TRGOCFG_ADC3_STRGI (51UL)
  191. #define TRGM_TRGOCFG_ADCX_PTRGI0A (52UL)
  192. #define TRGM_TRGOCFG_ADCX_PTRGI0B (53UL)
  193. #define TRGM_TRGOCFG_ADCX_PTRGI0C (54UL)
  194. #define TRGM_TRGOCFG_GPTMRA_SYNCI (55UL)
  195. #define TRGM_TRGOCFG_GPTMRA_IN2 (56UL)
  196. #define TRGM_TRGOCFG_GPTMRA_IN3 (57UL)
  197. #define TRGM_TRGOCFG_GPTMRB_SYNCI (58UL)
  198. #define TRGM_TRGOCFG_GPTMRB_IN2 (59UL)
  199. #define TRGM_TRGOCFG_GPTMRB_IN3 (60UL)
  200. #define TRGM_TRGOCFG_CMPX_WIN (61UL)
  201. #define TRGM_TRGOCFG_CAN_PTPC0_CAP (62UL)
  202. #define TRGM_TRGOCFG_CAN_PTPC1_CAP (63UL)
  203. /* DMACFG register group index macro definition */
  204. #define TRGM_DMACFG_0 (0UL)
  205. #define TRGM_DMACFG_1 (1UL)
  206. #define TRGM_DMACFG_2 (2UL)
  207. #define TRGM_DMACFG_3 (3UL)
  208. #endif /* HPM_TRGM_H */