hpm_butn_regs.h 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_BUTN_H
  8. #define HPM_BUTN_H
  9. typedef struct {
  10. __RW uint32_t BTN_STATUS; /* 0x0: Button status */
  11. __RW uint32_t BTN_IRQ_MASK; /* 0x4: Button interrupt mask */
  12. __RW uint32_t LED_INTENSE; /* 0x8: Debounce setting */
  13. } BUTN_Type;
  14. /* Bitfield definition for register: BTN_STATUS */
  15. /*
  16. * XWCLICK (RW)
  17. *
  18. * wake button click status when power button held, write 1 to clear flag
  19. * bit0: clicked
  20. * bit1: double clicked
  21. * bit2: tripple clicked
  22. */
  23. #define BUTN_BTN_STATUS_XWCLICK_MASK (0x70000000UL)
  24. #define BUTN_BTN_STATUS_XWCLICK_SHIFT (28U)
  25. #define BUTN_BTN_STATUS_XWCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_XWCLICK_SHIFT) & BUTN_BTN_STATUS_XWCLICK_MASK)
  26. #define BUTN_BTN_STATUS_XWCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_XWCLICK_MASK) >> BUTN_BTN_STATUS_XWCLICK_SHIFT)
  27. /*
  28. * WCLICK (RW)
  29. *
  30. * wake button click status, write 1 to clear flag
  31. * bit0: clicked
  32. * bit1: double clicked
  33. * bit2: tripple clicked
  34. */
  35. #define BUTN_BTN_STATUS_WCLICK_MASK (0x7000000UL)
  36. #define BUTN_BTN_STATUS_WCLICK_SHIFT (24U)
  37. #define BUTN_BTN_STATUS_WCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_WCLICK_SHIFT) & BUTN_BTN_STATUS_WCLICK_MASK)
  38. #define BUTN_BTN_STATUS_WCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_WCLICK_MASK) >> BUTN_BTN_STATUS_WCLICK_SHIFT)
  39. /*
  40. * XPCLICK (RW)
  41. *
  42. * power button click status when wake button held, write 1 to clear flag
  43. * bit0: clicked
  44. * bit1: double clicked
  45. * bit2: tripple clicked
  46. */
  47. #define BUTN_BTN_STATUS_XPCLICK_MASK (0x700000UL)
  48. #define BUTN_BTN_STATUS_XPCLICK_SHIFT (20U)
  49. #define BUTN_BTN_STATUS_XPCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_XPCLICK_SHIFT) & BUTN_BTN_STATUS_XPCLICK_MASK)
  50. #define BUTN_BTN_STATUS_XPCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_XPCLICK_MASK) >> BUTN_BTN_STATUS_XPCLICK_SHIFT)
  51. /*
  52. * PCLICK (RW)
  53. *
  54. * power button click status, write 1 to clear flag
  55. * bit0: clicked
  56. * bit1: double clicked
  57. * bit2: tripple clicked
  58. */
  59. #define BUTN_BTN_STATUS_PCLICK_MASK (0x70000UL)
  60. #define BUTN_BTN_STATUS_PCLICK_SHIFT (16U)
  61. #define BUTN_BTN_STATUS_PCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_PCLICK_SHIFT) & BUTN_BTN_STATUS_PCLICK_MASK)
  62. #define BUTN_BTN_STATUS_PCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_PCLICK_MASK) >> BUTN_BTN_STATUS_PCLICK_SHIFT)
  63. /*
  64. * DBTN (RW)
  65. *
  66. * Dual button press status, write 1 to clear flag
  67. * bit0: button pressed
  68. * bit1: button confirmd
  69. * bit2: button long pressed
  70. * bit3: button long long pressed
  71. */
  72. #define BUTN_BTN_STATUS_DBTN_MASK (0xF00U)
  73. #define BUTN_BTN_STATUS_DBTN_SHIFT (8U)
  74. #define BUTN_BTN_STATUS_DBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_DBTN_SHIFT) & BUTN_BTN_STATUS_DBTN_MASK)
  75. #define BUTN_BTN_STATUS_DBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_DBTN_MASK) >> BUTN_BTN_STATUS_DBTN_SHIFT)
  76. /*
  77. * WBTN (RW)
  78. *
  79. * Wake button press status, write 1 to clear flag
  80. * bit0: button pressed
  81. * bit1: button confirmd
  82. * bit2: button long pressed
  83. * bit3: button long long pressed
  84. */
  85. #define BUTN_BTN_STATUS_WBTN_MASK (0xF0U)
  86. #define BUTN_BTN_STATUS_WBTN_SHIFT (4U)
  87. #define BUTN_BTN_STATUS_WBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_WBTN_SHIFT) & BUTN_BTN_STATUS_WBTN_MASK)
  88. #define BUTN_BTN_STATUS_WBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_WBTN_MASK) >> BUTN_BTN_STATUS_WBTN_SHIFT)
  89. /*
  90. * PBTN (RW)
  91. *
  92. * Power button press status, write 1 to clear flag
  93. * bit0: button pressed
  94. * bit1: button confirmd
  95. * bit2: button long pressed
  96. * bit3: button long long pressed
  97. */
  98. #define BUTN_BTN_STATUS_PBTN_MASK (0xFU)
  99. #define BUTN_BTN_STATUS_PBTN_SHIFT (0U)
  100. #define BUTN_BTN_STATUS_PBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_STATUS_PBTN_SHIFT) & BUTN_BTN_STATUS_PBTN_MASK)
  101. #define BUTN_BTN_STATUS_PBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_STATUS_PBTN_MASK) >> BUTN_BTN_STATUS_PBTN_SHIFT)
  102. /* Bitfield definition for register: BTN_IRQ_MASK */
  103. /*
  104. * XWCLICK (RW)
  105. *
  106. * wake button click status when power button held interrupt enable
  107. * bit0: clicked
  108. * bit1: double clicked
  109. * bit2: tripple clicked
  110. */
  111. #define BUTN_BTN_IRQ_MASK_XWCLICK_MASK (0x70000000UL)
  112. #define BUTN_BTN_IRQ_MASK_XWCLICK_SHIFT (28U)
  113. #define BUTN_BTN_IRQ_MASK_XWCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_XWCLICK_SHIFT) & BUTN_BTN_IRQ_MASK_XWCLICK_MASK)
  114. #define BUTN_BTN_IRQ_MASK_XWCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_XWCLICK_MASK) >> BUTN_BTN_IRQ_MASK_XWCLICK_SHIFT)
  115. /*
  116. * WCLICK (RW)
  117. *
  118. * wake button click interrupt enable
  119. * bit0: clicked
  120. * bit1: double clicked
  121. * bit2: tripple clicked
  122. */
  123. #define BUTN_BTN_IRQ_MASK_WCLICK_MASK (0x7000000UL)
  124. #define BUTN_BTN_IRQ_MASK_WCLICK_SHIFT (24U)
  125. #define BUTN_BTN_IRQ_MASK_WCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_WCLICK_SHIFT) & BUTN_BTN_IRQ_MASK_WCLICK_MASK)
  126. #define BUTN_BTN_IRQ_MASK_WCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_WCLICK_MASK) >> BUTN_BTN_IRQ_MASK_WCLICK_SHIFT)
  127. /*
  128. * XPCLICK (RW)
  129. *
  130. * power button click status when wake button held interrupt enable
  131. * bit0: clicked
  132. * bit1: double clicked
  133. * bit2: tripple clicked
  134. */
  135. #define BUTN_BTN_IRQ_MASK_XPCLICK_MASK (0x700000UL)
  136. #define BUTN_BTN_IRQ_MASK_XPCLICK_SHIFT (20U)
  137. #define BUTN_BTN_IRQ_MASK_XPCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_XPCLICK_SHIFT) & BUTN_BTN_IRQ_MASK_XPCLICK_MASK)
  138. #define BUTN_BTN_IRQ_MASK_XPCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_XPCLICK_MASK) >> BUTN_BTN_IRQ_MASK_XPCLICK_SHIFT)
  139. /*
  140. * PCLICK (RW)
  141. *
  142. * power button click interrupt enable
  143. * bit0: clicked
  144. * bit1: double clicked
  145. * bit2: tripple clicked
  146. */
  147. #define BUTN_BTN_IRQ_MASK_PCLICK_MASK (0x70000UL)
  148. #define BUTN_BTN_IRQ_MASK_PCLICK_SHIFT (16U)
  149. #define BUTN_BTN_IRQ_MASK_PCLICK_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_PCLICK_SHIFT) & BUTN_BTN_IRQ_MASK_PCLICK_MASK)
  150. #define BUTN_BTN_IRQ_MASK_PCLICK_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_PCLICK_MASK) >> BUTN_BTN_IRQ_MASK_PCLICK_SHIFT)
  151. /*
  152. * DBTN (RW)
  153. *
  154. * Dual button press interrupt enable
  155. * bit0: button pressed
  156. * bit1: button confirmd
  157. * bit2: button long pressed
  158. * bit3: button long long pressed
  159. */
  160. #define BUTN_BTN_IRQ_MASK_DBTN_MASK (0xF00U)
  161. #define BUTN_BTN_IRQ_MASK_DBTN_SHIFT (8U)
  162. #define BUTN_BTN_IRQ_MASK_DBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_DBTN_SHIFT) & BUTN_BTN_IRQ_MASK_DBTN_MASK)
  163. #define BUTN_BTN_IRQ_MASK_DBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_DBTN_MASK) >> BUTN_BTN_IRQ_MASK_DBTN_SHIFT)
  164. /*
  165. * WBTN (RW)
  166. *
  167. * Wake button press interrupt enable
  168. * bit0: button pressed
  169. * bit1: button confirmd
  170. * bit2: button long pressed
  171. * bit3: button long long pressed
  172. */
  173. #define BUTN_BTN_IRQ_MASK_WBTN_MASK (0xF0U)
  174. #define BUTN_BTN_IRQ_MASK_WBTN_SHIFT (4U)
  175. #define BUTN_BTN_IRQ_MASK_WBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_WBTN_SHIFT) & BUTN_BTN_IRQ_MASK_WBTN_MASK)
  176. #define BUTN_BTN_IRQ_MASK_WBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_WBTN_MASK) >> BUTN_BTN_IRQ_MASK_WBTN_SHIFT)
  177. /*
  178. * PBTN (RW)
  179. *
  180. * Power button press interrupt enable
  181. * bit0: button pressed
  182. * bit1: button confirmd
  183. * bit2: button long pressed
  184. * bit3: button long long pressed
  185. */
  186. #define BUTN_BTN_IRQ_MASK_PBTN_MASK (0xFU)
  187. #define BUTN_BTN_IRQ_MASK_PBTN_SHIFT (0U)
  188. #define BUTN_BTN_IRQ_MASK_PBTN_SET(x) (((uint32_t)(x) << BUTN_BTN_IRQ_MASK_PBTN_SHIFT) & BUTN_BTN_IRQ_MASK_PBTN_MASK)
  189. #define BUTN_BTN_IRQ_MASK_PBTN_GET(x) (((uint32_t)(x) & BUTN_BTN_IRQ_MASK_PBTN_MASK) >> BUTN_BTN_IRQ_MASK_PBTN_SHIFT)
  190. /* Bitfield definition for register: LED_INTENSE */
  191. /*
  192. * RLED (RW)
  193. *
  194. * Rbutton brightness 0
  195. */
  196. #define BUTN_LED_INTENSE_RLED_MASK (0xF0000UL)
  197. #define BUTN_LED_INTENSE_RLED_SHIFT (16U)
  198. #define BUTN_LED_INTENSE_RLED_SET(x) (((uint32_t)(x) << BUTN_LED_INTENSE_RLED_SHIFT) & BUTN_LED_INTENSE_RLED_MASK)
  199. #define BUTN_LED_INTENSE_RLED_GET(x) (((uint32_t)(x) & BUTN_LED_INTENSE_RLED_MASK) >> BUTN_LED_INTENSE_RLED_SHIFT)
  200. /*
  201. * PLED (RW)
  202. *
  203. * Pbutton brightness 0
  204. */
  205. #define BUTN_LED_INTENSE_PLED_MASK (0xFU)
  206. #define BUTN_LED_INTENSE_PLED_SHIFT (0U)
  207. #define BUTN_LED_INTENSE_PLED_SET(x) (((uint32_t)(x) << BUTN_LED_INTENSE_PLED_SHIFT) & BUTN_LED_INTENSE_PLED_MASK)
  208. #define BUTN_LED_INTENSE_PLED_GET(x) (((uint32_t)(x) & BUTN_LED_INTENSE_PLED_MASK) >> BUTN_LED_INTENSE_PLED_SHIFT)
  209. #endif /* HPM_BUTN_H */