hpm_gpio_regs.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_GPIO_H
  8. #define HPM_GPIO_H
  9. typedef struct {
  10. struct {
  11. __R uint32_t VALUE; /* 0x0: GPIO input value */
  12. __R uint8_t RESERVED0[12]; /* 0x4 - 0xF: Reserved */
  13. } DI[16];
  14. struct {
  15. __RW uint32_t VALUE; /* 0x100: GPIO output value */
  16. __RW uint32_t SET; /* 0x104: GPIO output set */
  17. __RW uint32_t CLEAR; /* 0x108: GPIO output clear */
  18. __RW uint32_t TOGGLE; /* 0x10C: GPIO output toggle */
  19. } DO[16];
  20. struct {
  21. __RW uint32_t VALUE; /* 0x200: GPIO direction value */
  22. __RW uint32_t SET; /* 0x204: GPIO direction set */
  23. __RW uint32_t CLEAR; /* 0x208: GPIO direction clear */
  24. __RW uint32_t TOGGLE; /* 0x20C: GPIO direction toggle */
  25. } OE[16];
  26. struct {
  27. __W uint32_t VALUE; /* 0x300: GPIO interrupt flag value */
  28. __R uint8_t RESERVED0[12]; /* 0x304 - 0x30F: Reserved */
  29. } IF[16];
  30. struct {
  31. __RW uint32_t VALUE; /* 0x400: GPIO interrupt enable value */
  32. __RW uint32_t SET; /* 0x404: GPIO interrupt enable set */
  33. __RW uint32_t CLEAR; /* 0x408: GPIO interrupt enable clear */
  34. __RW uint32_t TOGGLE; /* 0x40C: GPIO interrupt enable toggle */
  35. } IE[16];
  36. struct {
  37. __RW uint32_t VALUE; /* 0x500: GPIO interrupt polarity value */
  38. __RW uint32_t SET; /* 0x504: GPIO interrupt polarity set */
  39. __RW uint32_t CLEAR; /* 0x508: GPIO interrupt polarity clear */
  40. __RW uint32_t TOGGLE; /* 0x50C: GPIO interrupt polarity toggle */
  41. } PL[16];
  42. struct {
  43. __RW uint32_t VALUE; /* 0x600: GPIO interrupt type value */
  44. __RW uint32_t SET; /* 0x604: GPIO interrupt type set */
  45. __RW uint32_t CLEAR; /* 0x608: GPIO interrupt type clear */
  46. __RW uint32_t TOGGLE; /* 0x60C: GPIO interrupt type toggle */
  47. } TP[16];
  48. struct {
  49. __RW uint32_t VALUE; /* 0x700: GPIO interrupt asynchronous value */
  50. __RW uint32_t SET; /* 0x704: GPIO interrupt asynchronous set */
  51. __RW uint32_t CLEAR; /* 0x708: GPIO interrupt asynchronous clear */
  52. __RW uint32_t TOGGLE; /* 0x70C: GPIO interrupt asynchronous toggle */
  53. } AS[16];
  54. } GPIO_Type;
  55. /* Bitfield definition for register of struct array DI: VALUE */
  56. /*
  57. * INPUT (RO)
  58. *
  59. * GPIO input bus value, each bit represents a bus bit
  60. * 0: low level presents on chip pin
  61. * 1: high level presents on chip pin
  62. */
  63. #define GPIO_DI_VALUE_INPUT_MASK (0xFFFFFFFFUL)
  64. #define GPIO_DI_VALUE_INPUT_SHIFT (0U)
  65. #define GPIO_DI_VALUE_INPUT_GET(x) (((uint32_t)(x) & GPIO_DI_VALUE_INPUT_MASK) >> GPIO_DI_VALUE_INPUT_SHIFT)
  66. /* Bitfield definition for register of struct array DO: VALUE */
  67. /*
  68. * OUTPUT (RW)
  69. *
  70. * GPIO output register value, each bit represents a bus bit
  71. * 0: chip pin output low level when direction is output
  72. * 1: chip pin output high level when direction is output
  73. */
  74. #define GPIO_DO_VALUE_OUTPUT_MASK (0xFFFFFFFFUL)
  75. #define GPIO_DO_VALUE_OUTPUT_SHIFT (0U)
  76. #define GPIO_DO_VALUE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_VALUE_OUTPUT_SHIFT) & GPIO_DO_VALUE_OUTPUT_MASK)
  77. #define GPIO_DO_VALUE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_VALUE_OUTPUT_MASK) >> GPIO_DO_VALUE_OUTPUT_SHIFT)
  78. /* Bitfield definition for register of struct array DO: SET */
  79. /*
  80. * OUTPUT (RW)
  81. *
  82. * GPIO output register value, each bit represents a bus bit
  83. * 0: chip pin output low level when direction is output
  84. * 1: chip pin output high level when direction is output
  85. */
  86. #define GPIO_DO_SET_OUTPUT_MASK (0xFFFFFFFFUL)
  87. #define GPIO_DO_SET_OUTPUT_SHIFT (0U)
  88. #define GPIO_DO_SET_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_SET_OUTPUT_SHIFT) & GPIO_DO_SET_OUTPUT_MASK)
  89. #define GPIO_DO_SET_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_SET_OUTPUT_MASK) >> GPIO_DO_SET_OUTPUT_SHIFT)
  90. /* Bitfield definition for register of struct array DO: CLEAR */
  91. /*
  92. * OUTPUT (RW)
  93. *
  94. * GPIO output register value, each bit represents a bus bit
  95. * 0: chip pin output low level when direction is output
  96. * 1: chip pin output high level when direction is output
  97. */
  98. #define GPIO_DO_CLEAR_OUTPUT_MASK (0xFFFFFFFFUL)
  99. #define GPIO_DO_CLEAR_OUTPUT_SHIFT (0U)
  100. #define GPIO_DO_CLEAR_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_CLEAR_OUTPUT_SHIFT) & GPIO_DO_CLEAR_OUTPUT_MASK)
  101. #define GPIO_DO_CLEAR_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_CLEAR_OUTPUT_MASK) >> GPIO_DO_CLEAR_OUTPUT_SHIFT)
  102. /* Bitfield definition for register of struct array DO: TOGGLE */
  103. /*
  104. * OUTPUT (RW)
  105. *
  106. * GPIO output register value, each bit represents a bus bit
  107. * 0: chip pin output low level when direction is output
  108. * 1: chip pin output high level when direction is output
  109. */
  110. #define GPIO_DO_TOGGLE_OUTPUT_MASK (0xFFFFFFFFUL)
  111. #define GPIO_DO_TOGGLE_OUTPUT_SHIFT (0U)
  112. #define GPIO_DO_TOGGLE_OUTPUT_SET(x) (((uint32_t)(x) << GPIO_DO_TOGGLE_OUTPUT_SHIFT) & GPIO_DO_TOGGLE_OUTPUT_MASK)
  113. #define GPIO_DO_TOGGLE_OUTPUT_GET(x) (((uint32_t)(x) & GPIO_DO_TOGGLE_OUTPUT_MASK) >> GPIO_DO_TOGGLE_OUTPUT_SHIFT)
  114. /* Bitfield definition for register of struct array OE: VALUE */
  115. /*
  116. * DIRECTION (RW)
  117. *
  118. * GPIO direction, each bit represents a bus bit
  119. * 0: input
  120. * 1: output
  121. */
  122. #define GPIO_OE_VALUE_DIRECTION_MASK (0xFFFFFFFFUL)
  123. #define GPIO_OE_VALUE_DIRECTION_SHIFT (0U)
  124. #define GPIO_OE_VALUE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_VALUE_DIRECTION_SHIFT) & GPIO_OE_VALUE_DIRECTION_MASK)
  125. #define GPIO_OE_VALUE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_VALUE_DIRECTION_MASK) >> GPIO_OE_VALUE_DIRECTION_SHIFT)
  126. /* Bitfield definition for register of struct array OE: SET */
  127. /*
  128. * DIRECTION (RW)
  129. *
  130. * GPIO direction, each bit represents a bus bit
  131. * 0: input
  132. * 1: output
  133. */
  134. #define GPIO_OE_SET_DIRECTION_MASK (0xFFFFFFFFUL)
  135. #define GPIO_OE_SET_DIRECTION_SHIFT (0U)
  136. #define GPIO_OE_SET_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_SET_DIRECTION_SHIFT) & GPIO_OE_SET_DIRECTION_MASK)
  137. #define GPIO_OE_SET_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_SET_DIRECTION_MASK) >> GPIO_OE_SET_DIRECTION_SHIFT)
  138. /* Bitfield definition for register of struct array OE: CLEAR */
  139. /*
  140. * DIRECTION (RW)
  141. *
  142. * GPIO direction, each bit represents a bus bit
  143. * 0: input
  144. * 1: output
  145. */
  146. #define GPIO_OE_CLEAR_DIRECTION_MASK (0xFFFFFFFFUL)
  147. #define GPIO_OE_CLEAR_DIRECTION_SHIFT (0U)
  148. #define GPIO_OE_CLEAR_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_CLEAR_DIRECTION_SHIFT) & GPIO_OE_CLEAR_DIRECTION_MASK)
  149. #define GPIO_OE_CLEAR_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_CLEAR_DIRECTION_MASK) >> GPIO_OE_CLEAR_DIRECTION_SHIFT)
  150. /* Bitfield definition for register of struct array OE: TOGGLE */
  151. /*
  152. * DIRECTION (RW)
  153. *
  154. * GPIO direction, each bit represents a bus bit
  155. * 0: input
  156. * 1: output
  157. */
  158. #define GPIO_OE_TOGGLE_DIRECTION_MASK (0xFFFFFFFFUL)
  159. #define GPIO_OE_TOGGLE_DIRECTION_SHIFT (0U)
  160. #define GPIO_OE_TOGGLE_DIRECTION_SET(x) (((uint32_t)(x) << GPIO_OE_TOGGLE_DIRECTION_SHIFT) & GPIO_OE_TOGGLE_DIRECTION_MASK)
  161. #define GPIO_OE_TOGGLE_DIRECTION_GET(x) (((uint32_t)(x) & GPIO_OE_TOGGLE_DIRECTION_MASK) >> GPIO_OE_TOGGLE_DIRECTION_SHIFT)
  162. /* Bitfield definition for register of struct array IF: VALUE */
  163. /*
  164. * IRQ_FLAG (W1C)
  165. *
  166. * GPIO interrupt flag, write 1 to clear this flag
  167. * 0: no irq
  168. * 1: irq pending
  169. */
  170. #define GPIO_IF_VALUE_IRQ_FLAG_MASK (0xFFFFFFFFUL)
  171. #define GPIO_IF_VALUE_IRQ_FLAG_SHIFT (0U)
  172. #define GPIO_IF_VALUE_IRQ_FLAG_SET(x) (((uint32_t)(x) << GPIO_IF_VALUE_IRQ_FLAG_SHIFT) & GPIO_IF_VALUE_IRQ_FLAG_MASK)
  173. #define GPIO_IF_VALUE_IRQ_FLAG_GET(x) (((uint32_t)(x) & GPIO_IF_VALUE_IRQ_FLAG_MASK) >> GPIO_IF_VALUE_IRQ_FLAG_SHIFT)
  174. /* Bitfield definition for register of struct array IE: VALUE */
  175. /*
  176. * IRQ_EN (RW)
  177. *
  178. * GPIO interrupt enable, each bit represents a bus bit
  179. * 0: irq is disabled
  180. * 1: irq is enable
  181. */
  182. #define GPIO_IE_VALUE_IRQ_EN_MASK (0xFFFFFFFFUL)
  183. #define GPIO_IE_VALUE_IRQ_EN_SHIFT (0U)
  184. #define GPIO_IE_VALUE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_VALUE_IRQ_EN_SHIFT) & GPIO_IE_VALUE_IRQ_EN_MASK)
  185. #define GPIO_IE_VALUE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_VALUE_IRQ_EN_MASK) >> GPIO_IE_VALUE_IRQ_EN_SHIFT)
  186. /* Bitfield definition for register of struct array IE: SET */
  187. /*
  188. * IRQ_EN (RW)
  189. *
  190. * GPIO interrupt enable, each bit represents a bus bit
  191. * 0: irq is disabled
  192. * 1: irq is enable
  193. */
  194. #define GPIO_IE_SET_IRQ_EN_MASK (0xFFFFFFFFUL)
  195. #define GPIO_IE_SET_IRQ_EN_SHIFT (0U)
  196. #define GPIO_IE_SET_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_SET_IRQ_EN_SHIFT) & GPIO_IE_SET_IRQ_EN_MASK)
  197. #define GPIO_IE_SET_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_SET_IRQ_EN_MASK) >> GPIO_IE_SET_IRQ_EN_SHIFT)
  198. /* Bitfield definition for register of struct array IE: CLEAR */
  199. /*
  200. * IRQ_EN (RW)
  201. *
  202. * GPIO interrupt enable, each bit represents a bus bit
  203. * 0: irq is disabled
  204. * 1: irq is enable
  205. */
  206. #define GPIO_IE_CLEAR_IRQ_EN_MASK (0xFFFFFFFFUL)
  207. #define GPIO_IE_CLEAR_IRQ_EN_SHIFT (0U)
  208. #define GPIO_IE_CLEAR_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_CLEAR_IRQ_EN_SHIFT) & GPIO_IE_CLEAR_IRQ_EN_MASK)
  209. #define GPIO_IE_CLEAR_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_CLEAR_IRQ_EN_MASK) >> GPIO_IE_CLEAR_IRQ_EN_SHIFT)
  210. /* Bitfield definition for register of struct array IE: TOGGLE */
  211. /*
  212. * IRQ_EN (RW)
  213. *
  214. * GPIO interrupt enable, each bit represents a bus bit
  215. * 0: irq is disabled
  216. * 1: irq is enable
  217. */
  218. #define GPIO_IE_TOGGLE_IRQ_EN_MASK (0xFFFFFFFFUL)
  219. #define GPIO_IE_TOGGLE_IRQ_EN_SHIFT (0U)
  220. #define GPIO_IE_TOGGLE_IRQ_EN_SET(x) (((uint32_t)(x) << GPIO_IE_TOGGLE_IRQ_EN_SHIFT) & GPIO_IE_TOGGLE_IRQ_EN_MASK)
  221. #define GPIO_IE_TOGGLE_IRQ_EN_GET(x) (((uint32_t)(x) & GPIO_IE_TOGGLE_IRQ_EN_MASK) >> GPIO_IE_TOGGLE_IRQ_EN_SHIFT)
  222. /* Bitfield definition for register of struct array PL: VALUE */
  223. /*
  224. * IRQ_POL (RW)
  225. *
  226. * GPIO interrupt polarity, each bit represents a bus bit
  227. * 0: irq is high level or rising edge
  228. * 1: irq is low level or falling edge
  229. */
  230. #define GPIO_PL_VALUE_IRQ_POL_MASK (0xFFFFFFFFUL)
  231. #define GPIO_PL_VALUE_IRQ_POL_SHIFT (0U)
  232. #define GPIO_PL_VALUE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_VALUE_IRQ_POL_SHIFT) & GPIO_PL_VALUE_IRQ_POL_MASK)
  233. #define GPIO_PL_VALUE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_VALUE_IRQ_POL_MASK) >> GPIO_PL_VALUE_IRQ_POL_SHIFT)
  234. /* Bitfield definition for register of struct array PL: SET */
  235. /*
  236. * IRQ_POL (RW)
  237. *
  238. * GPIO interrupt polarity, each bit represents a bus bit
  239. * 0: irq is high level or rising edge
  240. * 1: irq is low level or falling edge
  241. */
  242. #define GPIO_PL_SET_IRQ_POL_MASK (0xFFFFFFFFUL)
  243. #define GPIO_PL_SET_IRQ_POL_SHIFT (0U)
  244. #define GPIO_PL_SET_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_SET_IRQ_POL_SHIFT) & GPIO_PL_SET_IRQ_POL_MASK)
  245. #define GPIO_PL_SET_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_SET_IRQ_POL_MASK) >> GPIO_PL_SET_IRQ_POL_SHIFT)
  246. /* Bitfield definition for register of struct array PL: CLEAR */
  247. /*
  248. * IRQ_POL (RW)
  249. *
  250. * GPIO interrupt polarity, each bit represents a bus bit
  251. * 0: irq is high level or rising edge
  252. * 1: irq is low level or falling edge
  253. */
  254. #define GPIO_PL_CLEAR_IRQ_POL_MASK (0xFFFFFFFFUL)
  255. #define GPIO_PL_CLEAR_IRQ_POL_SHIFT (0U)
  256. #define GPIO_PL_CLEAR_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_CLEAR_IRQ_POL_SHIFT) & GPIO_PL_CLEAR_IRQ_POL_MASK)
  257. #define GPIO_PL_CLEAR_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_CLEAR_IRQ_POL_MASK) >> GPIO_PL_CLEAR_IRQ_POL_SHIFT)
  258. /* Bitfield definition for register of struct array PL: TOGGLE */
  259. /*
  260. * IRQ_POL (RW)
  261. *
  262. * GPIO interrupt polarity, each bit represents a bus bit
  263. * 0: irq is high level or rising edge
  264. * 1: irq is low level or falling edge
  265. */
  266. #define GPIO_PL_TOGGLE_IRQ_POL_MASK (0xFFFFFFFFUL)
  267. #define GPIO_PL_TOGGLE_IRQ_POL_SHIFT (0U)
  268. #define GPIO_PL_TOGGLE_IRQ_POL_SET(x) (((uint32_t)(x) << GPIO_PL_TOGGLE_IRQ_POL_SHIFT) & GPIO_PL_TOGGLE_IRQ_POL_MASK)
  269. #define GPIO_PL_TOGGLE_IRQ_POL_GET(x) (((uint32_t)(x) & GPIO_PL_TOGGLE_IRQ_POL_MASK) >> GPIO_PL_TOGGLE_IRQ_POL_SHIFT)
  270. /* Bitfield definition for register of struct array TP: VALUE */
  271. /*
  272. * IRQ_TYPE (RW)
  273. *
  274. * GPIO interrupt type, each bit represents a bus bit
  275. * 0: irq is triggered by level
  276. * 1: irq is triggered by edge
  277. */
  278. #define GPIO_TP_VALUE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
  279. #define GPIO_TP_VALUE_IRQ_TYPE_SHIFT (0U)
  280. #define GPIO_TP_VALUE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_VALUE_IRQ_TYPE_SHIFT) & GPIO_TP_VALUE_IRQ_TYPE_MASK)
  281. #define GPIO_TP_VALUE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_VALUE_IRQ_TYPE_MASK) >> GPIO_TP_VALUE_IRQ_TYPE_SHIFT)
  282. /* Bitfield definition for register of struct array TP: SET */
  283. /*
  284. * IRQ_TYPE (RW)
  285. *
  286. * GPIO interrupt type, each bit represents a bus bit
  287. * 0: irq is triggered by level
  288. * 1: irq is triggered by edge
  289. */
  290. #define GPIO_TP_SET_IRQ_TYPE_MASK (0xFFFFFFFFUL)
  291. #define GPIO_TP_SET_IRQ_TYPE_SHIFT (0U)
  292. #define GPIO_TP_SET_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_SET_IRQ_TYPE_SHIFT) & GPIO_TP_SET_IRQ_TYPE_MASK)
  293. #define GPIO_TP_SET_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_SET_IRQ_TYPE_MASK) >> GPIO_TP_SET_IRQ_TYPE_SHIFT)
  294. /* Bitfield definition for register of struct array TP: CLEAR */
  295. /*
  296. * IRQ_TYPE (RW)
  297. *
  298. * GPIO interrupt type, each bit represents a bus bit
  299. * 0: irq is triggered by level
  300. * 1: irq is triggered by edge
  301. */
  302. #define GPIO_TP_CLEAR_IRQ_TYPE_MASK (0xFFFFFFFFUL)
  303. #define GPIO_TP_CLEAR_IRQ_TYPE_SHIFT (0U)
  304. #define GPIO_TP_CLEAR_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_CLEAR_IRQ_TYPE_SHIFT) & GPIO_TP_CLEAR_IRQ_TYPE_MASK)
  305. #define GPIO_TP_CLEAR_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_CLEAR_IRQ_TYPE_MASK) >> GPIO_TP_CLEAR_IRQ_TYPE_SHIFT)
  306. /* Bitfield definition for register of struct array TP: TOGGLE */
  307. /*
  308. * IRQ_TYPE (RW)
  309. *
  310. * GPIO interrupt type, each bit represents a bus bit
  311. * 0: irq is triggered by level
  312. * 1: irq is triggered by edge
  313. */
  314. #define GPIO_TP_TOGGLE_IRQ_TYPE_MASK (0xFFFFFFFFUL)
  315. #define GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT (0U)
  316. #define GPIO_TP_TOGGLE_IRQ_TYPE_SET(x) (((uint32_t)(x) << GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK)
  317. #define GPIO_TP_TOGGLE_IRQ_TYPE_GET(x) (((uint32_t)(x) & GPIO_TP_TOGGLE_IRQ_TYPE_MASK) >> GPIO_TP_TOGGLE_IRQ_TYPE_SHIFT)
  318. /* Bitfield definition for register of struct array AS: VALUE */
  319. /*
  320. * IRQ_ASYNC (RW)
  321. *
  322. * GPIO interrupt asynchronous, each bit represents a bus bit
  323. * 0: irq is triggered base on system clock
  324. * 1: irq is triggered combinational
  325. * Note: combinational interrupt is sensitive to environment noise
  326. */
  327. #define GPIO_AS_VALUE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
  328. #define GPIO_AS_VALUE_IRQ_ASYNC_SHIFT (0U)
  329. #define GPIO_AS_VALUE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_VALUE_IRQ_ASYNC_SHIFT) & GPIO_AS_VALUE_IRQ_ASYNC_MASK)
  330. #define GPIO_AS_VALUE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_VALUE_IRQ_ASYNC_MASK) >> GPIO_AS_VALUE_IRQ_ASYNC_SHIFT)
  331. /* Bitfield definition for register of struct array AS: SET */
  332. /*
  333. * IRQ_ASYNC (RW)
  334. *
  335. * GPIO interrupt asynchronous, each bit represents a bus bit
  336. * 0: irq is triggered base on system clock
  337. * 1: irq is triggered combinational
  338. * Note: combinational interrupt is sensitive to environment noise
  339. */
  340. #define GPIO_AS_SET_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
  341. #define GPIO_AS_SET_IRQ_ASYNC_SHIFT (0U)
  342. #define GPIO_AS_SET_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_SET_IRQ_ASYNC_SHIFT) & GPIO_AS_SET_IRQ_ASYNC_MASK)
  343. #define GPIO_AS_SET_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_SET_IRQ_ASYNC_MASK) >> GPIO_AS_SET_IRQ_ASYNC_SHIFT)
  344. /* Bitfield definition for register of struct array AS: CLEAR */
  345. /*
  346. * IRQ_ASYNC (RW)
  347. *
  348. * GPIO interrupt asynchronous, each bit represents a bus bit
  349. * 0: irq is triggered base on system clock
  350. * 1: irq is triggered combinational
  351. * Note: combinational interrupt is sensitive to environment noise
  352. */
  353. #define GPIO_AS_CLEAR_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
  354. #define GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT (0U)
  355. #define GPIO_AS_CLEAR_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK)
  356. #define GPIO_AS_CLEAR_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_CLEAR_IRQ_ASYNC_MASK) >> GPIO_AS_CLEAR_IRQ_ASYNC_SHIFT)
  357. /* Bitfield definition for register of struct array AS: TOGGLE */
  358. /*
  359. * IRQ_ASYNC (RW)
  360. *
  361. * GPIO interrupt asynchronous, each bit represents a bus bit
  362. * 0: irq is triggered base on system clock
  363. * 1: irq is triggered combinational
  364. * Note: combinational interrupt is sensitive to environment noise
  365. */
  366. #define GPIO_AS_TOGGLE_IRQ_ASYNC_MASK (0xFFFFFFFFUL)
  367. #define GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT (0U)
  368. #define GPIO_AS_TOGGLE_IRQ_ASYNC_SET(x) (((uint32_t)(x) << GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK)
  369. #define GPIO_AS_TOGGLE_IRQ_ASYNC_GET(x) (((uint32_t)(x) & GPIO_AS_TOGGLE_IRQ_ASYNC_MASK) >> GPIO_AS_TOGGLE_IRQ_ASYNC_SHIFT)
  370. /* DI register group index macro definition */
  371. #define GPIO_DI_GPIOA (0UL)
  372. #define GPIO_DI_GPIOB (1UL)
  373. #define GPIO_DI_GPIOC (2UL)
  374. #define GPIO_DI_GPIOD (3UL)
  375. #define GPIO_DI_GPIOE (4UL)
  376. #define GPIO_DI_GPIOF (5UL)
  377. #define GPIO_DI_GPIOX (13UL)
  378. #define GPIO_DI_GPIOY (14UL)
  379. #define GPIO_DI_GPIOZ (15UL)
  380. /* DO register group index macro definition */
  381. #define GPIO_DO_GPIOA (0UL)
  382. #define GPIO_DO_GPIOB (1UL)
  383. #define GPIO_DO_GPIOC (2UL)
  384. #define GPIO_DO_GPIOD (3UL)
  385. #define GPIO_DO_GPIOE (4UL)
  386. #define GPIO_DO_GPIOF (5UL)
  387. #define GPIO_DO_GPIOX (13UL)
  388. #define GPIO_DO_GPIOY (14UL)
  389. #define GPIO_DO_GPIOZ (15UL)
  390. /* OE register group index macro definition */
  391. #define GPIO_OE_GPIOA (0UL)
  392. #define GPIO_OE_GPIOB (1UL)
  393. #define GPIO_OE_GPIOC (2UL)
  394. #define GPIO_OE_GPIOD (3UL)
  395. #define GPIO_OE_GPIOE (4UL)
  396. #define GPIO_OE_GPIOF (5UL)
  397. #define GPIO_OE_GPIOX (13UL)
  398. #define GPIO_OE_GPIOY (14UL)
  399. #define GPIO_OE_GPIOZ (15UL)
  400. /* IF register group index macro definition */
  401. #define GPIO_IF_GPIOA (0UL)
  402. #define GPIO_IF_GPIOB (1UL)
  403. #define GPIO_IF_GPIOC (2UL)
  404. #define GPIO_IF_GPIOD (3UL)
  405. #define GPIO_IF_GPIOE (4UL)
  406. #define GPIO_IF_GPIOF (5UL)
  407. #define GPIO_IF_GPIOX (13UL)
  408. #define GPIO_IF_GPIOY (14UL)
  409. #define GPIO_IF_GPIOZ (15UL)
  410. /* IE register group index macro definition */
  411. #define GPIO_IE_GPIOA (0UL)
  412. #define GPIO_IE_GPIOB (1UL)
  413. #define GPIO_IE_GPIOC (2UL)
  414. #define GPIO_IE_GPIOD (3UL)
  415. #define GPIO_IE_GPIOE (4UL)
  416. #define GPIO_IE_GPIOF (5UL)
  417. #define GPIO_IE_GPIOX (13UL)
  418. #define GPIO_IE_GPIOY (14UL)
  419. #define GPIO_IE_GPIOZ (15UL)
  420. /* PL register group index macro definition */
  421. #define GPIO_PL_GPIOA (0UL)
  422. #define GPIO_PL_GPIOB (1UL)
  423. #define GPIO_PL_GPIOC (2UL)
  424. #define GPIO_PL_GPIOD (3UL)
  425. #define GPIO_PL_GPIOE (4UL)
  426. #define GPIO_PL_GPIOF (5UL)
  427. #define GPIO_PL_GPIOX (13UL)
  428. #define GPIO_PL_GPIOY (14UL)
  429. #define GPIO_PL_GPIOZ (15UL)
  430. /* TP register group index macro definition */
  431. #define GPIO_TP_GPIOA (0UL)
  432. #define GPIO_TP_GPIOB (1UL)
  433. #define GPIO_TP_GPIOC (2UL)
  434. #define GPIO_TP_GPIOD (3UL)
  435. #define GPIO_TP_GPIOE (4UL)
  436. #define GPIO_TP_GPIOF (5UL)
  437. #define GPIO_TP_GPIOX (13UL)
  438. #define GPIO_TP_GPIOY (14UL)
  439. #define GPIO_TP_GPIOZ (15UL)
  440. /* AS register group index macro definition */
  441. #define GPIO_AS_GPIOA (0UL)
  442. #define GPIO_AS_GPIOB (1UL)
  443. #define GPIO_AS_GPIOC (2UL)
  444. #define GPIO_AS_GPIOD (3UL)
  445. #define GPIO_AS_GPIOE (4UL)
  446. #define GPIO_AS_GPIOF (5UL)
  447. #define GPIO_AS_GPIOX (13UL)
  448. #define GPIO_AS_GPIOY (14UL)
  449. #define GPIO_AS_GPIOZ (15UL)
  450. #endif /* HPM_GPIO_H */