hpm_ffa_regs.h 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. /*
  2. * Copyright (c) 2021-2023 HPMicro
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. *
  6. */
  7. #ifndef HPM_FFA_H
  8. #define HPM_FFA_H
  9. typedef struct {
  10. __RW uint32_t CTRL; /* 0x0: */
  11. __R uint32_t STATUS; /* 0x4: */
  12. __RW uint32_t INT_EN; /* 0x8: */
  13. __R uint8_t RESERVED0[20]; /* 0xC - 0x1F: Reserved */
  14. __RW uint32_t OP_CTRL; /* 0x20: */
  15. __RW uint32_t OP_CMD; /* 0x24: */
  16. union {
  17. __RW uint32_t OP_REG0; /* 0x28: */
  18. __RW uint32_t OP_FIR_MISC; /* 0x28: */
  19. __RW uint32_t OP_FFT_MISC; /* 0x28: */
  20. };
  21. union {
  22. __RW uint32_t OP_REG1; /* 0x2C: */
  23. __RW uint32_t OP_FIR_MISC1; /* 0x2C: */
  24. };
  25. union {
  26. __RW uint32_t OP_REG2; /* 0x30: */
  27. __RW uint32_t OP_FFT_INRBUF; /* 0x30: */
  28. };
  29. union {
  30. __RW uint32_t OP_REG3; /* 0x34: */
  31. __RW uint32_t OP_FIR_INBUF; /* 0x34: */
  32. };
  33. union {
  34. __RW uint32_t OP_REG4; /* 0x38: */
  35. __RW uint32_t OP_FIR_COEFBUF; /* 0x38: */
  36. __RW uint32_t OP_FFT_OUTRBUF; /* 0x38: */
  37. };
  38. union {
  39. __RW uint32_t OP_REG5; /* 0x3C: */
  40. __RW uint32_t OP_FIR_OUTBUF; /* 0x3C: */
  41. };
  42. __RW uint32_t OP_REG6; /* 0x40: */
  43. __RW uint32_t OP_REG7; /* 0x44: */
  44. } FFA_Type;
  45. /* Bitfield definition for register: CTRL */
  46. /*
  47. * SFTRST (RW)
  48. *
  49. * software reset the module if asserted to be 1.
  50. * EN is only active after this bit is zero.
  51. */
  52. #define FFA_CTRL_SFTRST_MASK (0x80000000UL)
  53. #define FFA_CTRL_SFTRST_SHIFT (31U)
  54. #define FFA_CTRL_SFTRST_SET(x) (((uint32_t)(x) << FFA_CTRL_SFTRST_SHIFT) & FFA_CTRL_SFTRST_MASK)
  55. #define FFA_CTRL_SFTRST_GET(x) (((uint32_t)(x) & FFA_CTRL_SFTRST_MASK) >> FFA_CTRL_SFTRST_SHIFT)
  56. /*
  57. * EN (RW)
  58. *
  59. * Asserted to enable the module
  60. */
  61. #define FFA_CTRL_EN_MASK (0x1U)
  62. #define FFA_CTRL_EN_SHIFT (0U)
  63. #define FFA_CTRL_EN_SET(x) (((uint32_t)(x) << FFA_CTRL_EN_SHIFT) & FFA_CTRL_EN_MASK)
  64. #define FFA_CTRL_EN_GET(x) (((uint32_t)(x) & FFA_CTRL_EN_MASK) >> FFA_CTRL_EN_SHIFT)
  65. /* Bitfield definition for register: STATUS */
  66. /*
  67. * FIR_OV (RO)
  68. *
  69. * FIR Overflow err
  70. */
  71. #define FFA_STATUS_FIR_OV_MASK (0x80U)
  72. #define FFA_STATUS_FIR_OV_SHIFT (7U)
  73. #define FFA_STATUS_FIR_OV_GET(x) (((uint32_t)(x) & FFA_STATUS_FIR_OV_MASK) >> FFA_STATUS_FIR_OV_SHIFT)
  74. /*
  75. * FFT_OV (RO)
  76. *
  77. * FFT Overflow Err
  78. */
  79. #define FFA_STATUS_FFT_OV_MASK (0x40U)
  80. #define FFA_STATUS_FFT_OV_SHIFT (6U)
  81. #define FFA_STATUS_FFT_OV_GET(x) (((uint32_t)(x) & FFA_STATUS_FFT_OV_MASK) >> FFA_STATUS_FFT_OV_SHIFT)
  82. /*
  83. * WR_ERR (RO)
  84. *
  85. * AXI Data Write Error
  86. */
  87. #define FFA_STATUS_WR_ERR_MASK (0x20U)
  88. #define FFA_STATUS_WR_ERR_SHIFT (5U)
  89. #define FFA_STATUS_WR_ERR_GET(x) (((uint32_t)(x) & FFA_STATUS_WR_ERR_MASK) >> FFA_STATUS_WR_ERR_SHIFT)
  90. /*
  91. * RD_NXT_ERR (RO)
  92. *
  93. * AXI Read Bus Error for NXT DATA
  94. */
  95. #define FFA_STATUS_RD_NXT_ERR_MASK (0x10U)
  96. #define FFA_STATUS_RD_NXT_ERR_SHIFT (4U)
  97. #define FFA_STATUS_RD_NXT_ERR_GET(x) (((uint32_t)(x) & FFA_STATUS_RD_NXT_ERR_MASK) >> FFA_STATUS_RD_NXT_ERR_SHIFT)
  98. /*
  99. * RD_ERR (RO)
  100. *
  101. * AXI Data Read Error
  102. */
  103. #define FFA_STATUS_RD_ERR_MASK (0x8U)
  104. #define FFA_STATUS_RD_ERR_SHIFT (3U)
  105. #define FFA_STATUS_RD_ERR_GET(x) (((uint32_t)(x) & FFA_STATUS_RD_ERR_MASK) >> FFA_STATUS_RD_ERR_SHIFT)
  106. /*
  107. * NXT_CMD_RD_DONE (RO)
  108. *
  109. * Indicate that next command sequence is already read into the module.
  110. */
  111. #define FFA_STATUS_NXT_CMD_RD_DONE_MASK (0x2U)
  112. #define FFA_STATUS_NXT_CMD_RD_DONE_SHIFT (1U)
  113. #define FFA_STATUS_NXT_CMD_RD_DONE_GET(x) (((uint32_t)(x) & FFA_STATUS_NXT_CMD_RD_DONE_MASK) >> FFA_STATUS_NXT_CMD_RD_DONE_SHIFT)
  114. /*
  115. * OP_CMD_DONE (RO)
  116. *
  117. * Indicate that operation cmd is done, and data are available in system memory.
  118. */
  119. #define FFA_STATUS_OP_CMD_DONE_MASK (0x1U)
  120. #define FFA_STATUS_OP_CMD_DONE_SHIFT (0U)
  121. #define FFA_STATUS_OP_CMD_DONE_GET(x) (((uint32_t)(x) & FFA_STATUS_OP_CMD_DONE_MASK) >> FFA_STATUS_OP_CMD_DONE_SHIFT)
  122. /* Bitfield definition for register: INT_EN */
  123. /*
  124. * WRSV1 (RW)
  125. *
  126. * Reserved
  127. */
  128. #define FFA_INT_EN_WRSV1_MASK (0xFFFFFF00UL)
  129. #define FFA_INT_EN_WRSV1_SHIFT (8U)
  130. #define FFA_INT_EN_WRSV1_SET(x) (((uint32_t)(x) << FFA_INT_EN_WRSV1_SHIFT) & FFA_INT_EN_WRSV1_MASK)
  131. #define FFA_INT_EN_WRSV1_GET(x) (((uint32_t)(x) & FFA_INT_EN_WRSV1_MASK) >> FFA_INT_EN_WRSV1_SHIFT)
  132. /*
  133. * FIR_OV (RW)
  134. *
  135. * FIR Overflow err
  136. */
  137. #define FFA_INT_EN_FIR_OV_MASK (0x80U)
  138. #define FFA_INT_EN_FIR_OV_SHIFT (7U)
  139. #define FFA_INT_EN_FIR_OV_SET(x) (((uint32_t)(x) << FFA_INT_EN_FIR_OV_SHIFT) & FFA_INT_EN_FIR_OV_MASK)
  140. #define FFA_INT_EN_FIR_OV_GET(x) (((uint32_t)(x) & FFA_INT_EN_FIR_OV_MASK) >> FFA_INT_EN_FIR_OV_SHIFT)
  141. /*
  142. * FFT_OV (RW)
  143. *
  144. * FFT Overflow Err
  145. */
  146. #define FFA_INT_EN_FFT_OV_MASK (0x40U)
  147. #define FFA_INT_EN_FFT_OV_SHIFT (6U)
  148. #define FFA_INT_EN_FFT_OV_SET(x) (((uint32_t)(x) << FFA_INT_EN_FFT_OV_SHIFT) & FFA_INT_EN_FFT_OV_MASK)
  149. #define FFA_INT_EN_FFT_OV_GET(x) (((uint32_t)(x) & FFA_INT_EN_FFT_OV_MASK) >> FFA_INT_EN_FFT_OV_SHIFT)
  150. /*
  151. * WR_ERR (RW)
  152. *
  153. * Enable Data Write Error interrupt
  154. */
  155. #define FFA_INT_EN_WR_ERR_MASK (0x20U)
  156. #define FFA_INT_EN_WR_ERR_SHIFT (5U)
  157. #define FFA_INT_EN_WR_ERR_SET(x) (((uint32_t)(x) << FFA_INT_EN_WR_ERR_SHIFT) & FFA_INT_EN_WR_ERR_MASK)
  158. #define FFA_INT_EN_WR_ERR_GET(x) (((uint32_t)(x) & FFA_INT_EN_WR_ERR_MASK) >> FFA_INT_EN_WR_ERR_SHIFT)
  159. /*
  160. * RD_NXT_ERR (RW)
  161. *
  162. * Enable Read Bus Error for NXT DATA interrupt
  163. */
  164. #define FFA_INT_EN_RD_NXT_ERR_MASK (0x10U)
  165. #define FFA_INT_EN_RD_NXT_ERR_SHIFT (4U)
  166. #define FFA_INT_EN_RD_NXT_ERR_SET(x) (((uint32_t)(x) << FFA_INT_EN_RD_NXT_ERR_SHIFT) & FFA_INT_EN_RD_NXT_ERR_MASK)
  167. #define FFA_INT_EN_RD_NXT_ERR_GET(x) (((uint32_t)(x) & FFA_INT_EN_RD_NXT_ERR_MASK) >> FFA_INT_EN_RD_NXT_ERR_SHIFT)
  168. /*
  169. * RD_ERR (RW)
  170. *
  171. * Enable Data Read Error interrupt
  172. */
  173. #define FFA_INT_EN_RD_ERR_MASK (0x8U)
  174. #define FFA_INT_EN_RD_ERR_SHIFT (3U)
  175. #define FFA_INT_EN_RD_ERR_SET(x) (((uint32_t)(x) << FFA_INT_EN_RD_ERR_SHIFT) & FFA_INT_EN_RD_ERR_MASK)
  176. #define FFA_INT_EN_RD_ERR_GET(x) (((uint32_t)(x) & FFA_INT_EN_RD_ERR_MASK) >> FFA_INT_EN_RD_ERR_SHIFT)
  177. /*
  178. * NXT_CMD_RD_DONE (RW)
  179. *
  180. * Indicate that next command sequence is already read into the module.
  181. */
  182. #define FFA_INT_EN_NXT_CMD_RD_DONE_MASK (0x2U)
  183. #define FFA_INT_EN_NXT_CMD_RD_DONE_SHIFT (1U)
  184. #define FFA_INT_EN_NXT_CMD_RD_DONE_SET(x) (((uint32_t)(x) << FFA_INT_EN_NXT_CMD_RD_DONE_SHIFT) & FFA_INT_EN_NXT_CMD_RD_DONE_MASK)
  185. #define FFA_INT_EN_NXT_CMD_RD_DONE_GET(x) (((uint32_t)(x) & FFA_INT_EN_NXT_CMD_RD_DONE_MASK) >> FFA_INT_EN_NXT_CMD_RD_DONE_SHIFT)
  186. /*
  187. * OP_CMD_DONE (RW)
  188. *
  189. * Indicate that operation cmd is done, and data are available in system memory.
  190. */
  191. #define FFA_INT_EN_OP_CMD_DONE_MASK (0x1U)
  192. #define FFA_INT_EN_OP_CMD_DONE_SHIFT (0U)
  193. #define FFA_INT_EN_OP_CMD_DONE_SET(x) (((uint32_t)(x) << FFA_INT_EN_OP_CMD_DONE_SHIFT) & FFA_INT_EN_OP_CMD_DONE_MASK)
  194. #define FFA_INT_EN_OP_CMD_DONE_GET(x) (((uint32_t)(x) & FFA_INT_EN_OP_CMD_DONE_MASK) >> FFA_INT_EN_OP_CMD_DONE_SHIFT)
  195. /* Bitfield definition for register: OP_CTRL */
  196. /*
  197. * NXT_ADDR (RW)
  198. *
  199. * The address for the next command.
  200. * It will be processed after CUR_CMD is executed and done..
  201. */
  202. #define FFA_OP_CTRL_NXT_ADDR_MASK (0xFFFFFFFCUL)
  203. #define FFA_OP_CTRL_NXT_ADDR_SHIFT (2U)
  204. #define FFA_OP_CTRL_NXT_ADDR_SET(x) (((uint32_t)(x) << FFA_OP_CTRL_NXT_ADDR_SHIFT) & FFA_OP_CTRL_NXT_ADDR_MASK)
  205. #define FFA_OP_CTRL_NXT_ADDR_GET(x) (((uint32_t)(x) & FFA_OP_CTRL_NXT_ADDR_MASK) >> FFA_OP_CTRL_NXT_ADDR_SHIFT)
  206. /*
  207. * NXT_EN (RW)
  208. *
  209. * Whether NXT_CMD is enabled.
  210. * Asserted to enable the NXT_CMD when CUR_CMD is done, or CUR_CMD is not enabled..
  211. */
  212. #define FFA_OP_CTRL_NXT_EN_MASK (0x2U)
  213. #define FFA_OP_CTRL_NXT_EN_SHIFT (1U)
  214. #define FFA_OP_CTRL_NXT_EN_SET(x) (((uint32_t)(x) << FFA_OP_CTRL_NXT_EN_SHIFT) & FFA_OP_CTRL_NXT_EN_MASK)
  215. #define FFA_OP_CTRL_NXT_EN_GET(x) (((uint32_t)(x) & FFA_OP_CTRL_NXT_EN_MASK) >> FFA_OP_CTRL_NXT_EN_SHIFT)
  216. /*
  217. * EN (RW)
  218. *
  219. * Whether CUR_CMD is enabled.
  220. * Asserted to enable the CUR_CMD
  221. */
  222. #define FFA_OP_CTRL_EN_MASK (0x1U)
  223. #define FFA_OP_CTRL_EN_SHIFT (0U)
  224. #define FFA_OP_CTRL_EN_SET(x) (((uint32_t)(x) << FFA_OP_CTRL_EN_SHIFT) & FFA_OP_CTRL_EN_MASK)
  225. #define FFA_OP_CTRL_EN_GET(x) (((uint32_t)(x) & FFA_OP_CTRL_EN_MASK) >> FFA_OP_CTRL_EN_SHIFT)
  226. /* Bitfield definition for register: OP_CMD */
  227. /*
  228. * CONJ_C (RW)
  229. *
  230. * asserted to have conjuate value for coefs in computation
  231. */
  232. #define FFA_OP_CMD_CONJ_C_MASK (0x1000000UL)
  233. #define FFA_OP_CMD_CONJ_C_SHIFT (24U)
  234. #define FFA_OP_CMD_CONJ_C_SET(x) (((uint32_t)(x) << FFA_OP_CMD_CONJ_C_SHIFT) & FFA_OP_CMD_CONJ_C_MASK)
  235. #define FFA_OP_CMD_CONJ_C_GET(x) (((uint32_t)(x) & FFA_OP_CMD_CONJ_C_MASK) >> FFA_OP_CMD_CONJ_C_SHIFT)
  236. /*
  237. * CMD (RW)
  238. *
  239. * The Command Used:
  240. * 0: FIR
  241. * 2: FFT
  242. * Others: Reserved
  243. */
  244. #define FFA_OP_CMD_CMD_MASK (0xFC0000UL)
  245. #define FFA_OP_CMD_CMD_SHIFT (18U)
  246. #define FFA_OP_CMD_CMD_SET(x) (((uint32_t)(x) << FFA_OP_CMD_CMD_SHIFT) & FFA_OP_CMD_CMD_MASK)
  247. #define FFA_OP_CMD_CMD_GET(x) (((uint32_t)(x) & FFA_OP_CMD_CMD_MASK) >> FFA_OP_CMD_CMD_SHIFT)
  248. /*
  249. * OUTD_TYPE (RW)
  250. *
  251. * Output data type:
  252. * 0:Real Q31, 1:Real Q15, 2:Complex Q31, 3:Complex Q15
  253. */
  254. #define FFA_OP_CMD_OUTD_TYPE_MASK (0x38000UL)
  255. #define FFA_OP_CMD_OUTD_TYPE_SHIFT (15U)
  256. #define FFA_OP_CMD_OUTD_TYPE_SET(x) (((uint32_t)(x) << FFA_OP_CMD_OUTD_TYPE_SHIFT) & FFA_OP_CMD_OUTD_TYPE_MASK)
  257. #define FFA_OP_CMD_OUTD_TYPE_GET(x) (((uint32_t)(x) & FFA_OP_CMD_OUTD_TYPE_MASK) >> FFA_OP_CMD_OUTD_TYPE_SHIFT)
  258. /*
  259. * COEF_TYPE (RW)
  260. *
  261. * Coef data type (used for FIR):
  262. * 0:Real Q31, 1:Real Q15, 2:Complex Q31, 3:Complex Q15
  263. */
  264. #define FFA_OP_CMD_COEF_TYPE_MASK (0x7000U)
  265. #define FFA_OP_CMD_COEF_TYPE_SHIFT (12U)
  266. #define FFA_OP_CMD_COEF_TYPE_SET(x) (((uint32_t)(x) << FFA_OP_CMD_COEF_TYPE_SHIFT) & FFA_OP_CMD_COEF_TYPE_MASK)
  267. #define FFA_OP_CMD_COEF_TYPE_GET(x) (((uint32_t)(x) & FFA_OP_CMD_COEF_TYPE_MASK) >> FFA_OP_CMD_COEF_TYPE_SHIFT)
  268. /*
  269. * IND_TYPE (RW)
  270. *
  271. * Input data type:
  272. * 0:Real Q31, 1:Real Q15, 2:Complex Q31, 3:Complex Q15
  273. */
  274. #define FFA_OP_CMD_IND_TYPE_MASK (0xE00U)
  275. #define FFA_OP_CMD_IND_TYPE_SHIFT (9U)
  276. #define FFA_OP_CMD_IND_TYPE_SET(x) (((uint32_t)(x) << FFA_OP_CMD_IND_TYPE_SHIFT) & FFA_OP_CMD_IND_TYPE_MASK)
  277. #define FFA_OP_CMD_IND_TYPE_GET(x) (((uint32_t)(x) & FFA_OP_CMD_IND_TYPE_MASK) >> FFA_OP_CMD_IND_TYPE_SHIFT)
  278. /*
  279. * NXT_CMD_LEN (RW)
  280. *
  281. * The length of nxt commands in 32-bit words
  282. */
  283. #define FFA_OP_CMD_NXT_CMD_LEN_MASK (0xFFU)
  284. #define FFA_OP_CMD_NXT_CMD_LEN_SHIFT (0U)
  285. #define FFA_OP_CMD_NXT_CMD_LEN_SET(x) (((uint32_t)(x) << FFA_OP_CMD_NXT_CMD_LEN_SHIFT) & FFA_OP_CMD_NXT_CMD_LEN_MASK)
  286. #define FFA_OP_CMD_NXT_CMD_LEN_GET(x) (((uint32_t)(x) & FFA_OP_CMD_NXT_CMD_LEN_MASK) >> FFA_OP_CMD_NXT_CMD_LEN_SHIFT)
  287. /* Bitfield definition for register: OP_REG0 */
  288. /*
  289. * CT (RW)
  290. *
  291. * Contents
  292. */
  293. #define FFA_OP_REG0_CT_MASK (0xFFFFFFFFUL)
  294. #define FFA_OP_REG0_CT_SHIFT (0U)
  295. #define FFA_OP_REG0_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG0_CT_SHIFT) & FFA_OP_REG0_CT_MASK)
  296. #define FFA_OP_REG0_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG0_CT_MASK) >> FFA_OP_REG0_CT_SHIFT)
  297. /* Bitfield definition for register: OP_FIR_MISC */
  298. /*
  299. * FIR_COEF_TAPS (RW)
  300. *
  301. * Length of FIR coefs (max 256)
  302. */
  303. #define FFA_OP_FIR_MISC_FIR_COEF_TAPS_MASK (0x3FFFU)
  304. #define FFA_OP_FIR_MISC_FIR_COEF_TAPS_SHIFT (0U)
  305. #define FFA_OP_FIR_MISC_FIR_COEF_TAPS_SET(x) (((uint32_t)(x) << FFA_OP_FIR_MISC_FIR_COEF_TAPS_SHIFT) & FFA_OP_FIR_MISC_FIR_COEF_TAPS_MASK)
  306. #define FFA_OP_FIR_MISC_FIR_COEF_TAPS_GET(x) (((uint32_t)(x) & FFA_OP_FIR_MISC_FIR_COEF_TAPS_MASK) >> FFA_OP_FIR_MISC_FIR_COEF_TAPS_SHIFT)
  307. /* Bitfield definition for register: OP_FFT_MISC */
  308. /*
  309. * FFT_LEN (RW)
  310. *
  311. * FFT length
  312. * 0:8,
  313. * ...,
  314. * n:2^(3+n)
  315. */
  316. #define FFA_OP_FFT_MISC_FFT_LEN_MASK (0x780U)
  317. #define FFA_OP_FFT_MISC_FFT_LEN_SHIFT (7U)
  318. #define FFA_OP_FFT_MISC_FFT_LEN_SET(x) (((uint32_t)(x) << FFA_OP_FFT_MISC_FFT_LEN_SHIFT) & FFA_OP_FFT_MISC_FFT_LEN_MASK)
  319. #define FFA_OP_FFT_MISC_FFT_LEN_GET(x) (((uint32_t)(x) & FFA_OP_FFT_MISC_FFT_LEN_MASK) >> FFA_OP_FFT_MISC_FFT_LEN_SHIFT)
  320. /*
  321. * IFFT (RW)
  322. *
  323. * Asserted to indicate IFFT
  324. */
  325. #define FFA_OP_FFT_MISC_IFFT_MASK (0x40U)
  326. #define FFA_OP_FFT_MISC_IFFT_SHIFT (6U)
  327. #define FFA_OP_FFT_MISC_IFFT_SET(x) (((uint32_t)(x) << FFA_OP_FFT_MISC_IFFT_SHIFT) & FFA_OP_FFT_MISC_IFFT_MASK)
  328. #define FFA_OP_FFT_MISC_IFFT_GET(x) (((uint32_t)(x) & FFA_OP_FFT_MISC_IFFT_MASK) >> FFA_OP_FFT_MISC_IFFT_SHIFT)
  329. /*
  330. * TMP_BLK (RW)
  331. *
  332. * Memory block for indata. Should be assigned as 1
  333. */
  334. #define FFA_OP_FFT_MISC_TMP_BLK_MASK (0xCU)
  335. #define FFA_OP_FFT_MISC_TMP_BLK_SHIFT (2U)
  336. #define FFA_OP_FFT_MISC_TMP_BLK_SET(x) (((uint32_t)(x) << FFA_OP_FFT_MISC_TMP_BLK_SHIFT) & FFA_OP_FFT_MISC_TMP_BLK_MASK)
  337. #define FFA_OP_FFT_MISC_TMP_BLK_GET(x) (((uint32_t)(x) & FFA_OP_FFT_MISC_TMP_BLK_MASK) >> FFA_OP_FFT_MISC_TMP_BLK_SHIFT)
  338. /*
  339. * IND_BLK (RW)
  340. *
  341. * Memory block for indata. Should be assigned as 0
  342. */
  343. #define FFA_OP_FFT_MISC_IND_BLK_MASK (0x3U)
  344. #define FFA_OP_FFT_MISC_IND_BLK_SHIFT (0U)
  345. #define FFA_OP_FFT_MISC_IND_BLK_SET(x) (((uint32_t)(x) << FFA_OP_FFT_MISC_IND_BLK_SHIFT) & FFA_OP_FFT_MISC_IND_BLK_MASK)
  346. #define FFA_OP_FFT_MISC_IND_BLK_GET(x) (((uint32_t)(x) & FFA_OP_FFT_MISC_IND_BLK_MASK) >> FFA_OP_FFT_MISC_IND_BLK_SHIFT)
  347. /* Bitfield definition for register: OP_REG1 */
  348. /*
  349. * CT (RW)
  350. *
  351. * Contents
  352. */
  353. #define FFA_OP_REG1_CT_MASK (0xFFFFFFFFUL)
  354. #define FFA_OP_REG1_CT_SHIFT (0U)
  355. #define FFA_OP_REG1_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG1_CT_SHIFT) & FFA_OP_REG1_CT_MASK)
  356. #define FFA_OP_REG1_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG1_CT_MASK) >> FFA_OP_REG1_CT_SHIFT)
  357. /* Bitfield definition for register: OP_FIR_MISC1 */
  358. /*
  359. * OUTD_MEM_BLK (RW)
  360. *
  361. * Should be assigned as 0
  362. */
  363. #define FFA_OP_FIR_MISC1_OUTD_MEM_BLK_MASK (0x300000UL)
  364. #define FFA_OP_FIR_MISC1_OUTD_MEM_BLK_SHIFT (20U)
  365. #define FFA_OP_FIR_MISC1_OUTD_MEM_BLK_SET(x) (((uint32_t)(x) << FFA_OP_FIR_MISC1_OUTD_MEM_BLK_SHIFT) & FFA_OP_FIR_MISC1_OUTD_MEM_BLK_MASK)
  366. #define FFA_OP_FIR_MISC1_OUTD_MEM_BLK_GET(x) (((uint32_t)(x) & FFA_OP_FIR_MISC1_OUTD_MEM_BLK_MASK) >> FFA_OP_FIR_MISC1_OUTD_MEM_BLK_SHIFT)
  367. /*
  368. * COEF_MEM_BLK (RW)
  369. *
  370. * Should be assigned as 1
  371. */
  372. #define FFA_OP_FIR_MISC1_COEF_MEM_BLK_MASK (0xC0000UL)
  373. #define FFA_OP_FIR_MISC1_COEF_MEM_BLK_SHIFT (18U)
  374. #define FFA_OP_FIR_MISC1_COEF_MEM_BLK_SET(x) (((uint32_t)(x) << FFA_OP_FIR_MISC1_COEF_MEM_BLK_SHIFT) & FFA_OP_FIR_MISC1_COEF_MEM_BLK_MASK)
  375. #define FFA_OP_FIR_MISC1_COEF_MEM_BLK_GET(x) (((uint32_t)(x) & FFA_OP_FIR_MISC1_COEF_MEM_BLK_MASK) >> FFA_OP_FIR_MISC1_COEF_MEM_BLK_SHIFT)
  376. /*
  377. * IND_MEM_BLK (RW)
  378. *
  379. * Should be assigned as 2
  380. */
  381. #define FFA_OP_FIR_MISC1_IND_MEM_BLK_MASK (0x30000UL)
  382. #define FFA_OP_FIR_MISC1_IND_MEM_BLK_SHIFT (16U)
  383. #define FFA_OP_FIR_MISC1_IND_MEM_BLK_SET(x) (((uint32_t)(x) << FFA_OP_FIR_MISC1_IND_MEM_BLK_SHIFT) & FFA_OP_FIR_MISC1_IND_MEM_BLK_MASK)
  384. #define FFA_OP_FIR_MISC1_IND_MEM_BLK_GET(x) (((uint32_t)(x) & FFA_OP_FIR_MISC1_IND_MEM_BLK_MASK) >> FFA_OP_FIR_MISC1_IND_MEM_BLK_SHIFT)
  385. /*
  386. * FIR_DATA_TAPS (RW)
  387. *
  388. * The input data data length
  389. */
  390. #define FFA_OP_FIR_MISC1_FIR_DATA_TAPS_MASK (0xFFFFU)
  391. #define FFA_OP_FIR_MISC1_FIR_DATA_TAPS_SHIFT (0U)
  392. #define FFA_OP_FIR_MISC1_FIR_DATA_TAPS_SET(x) (((uint32_t)(x) << FFA_OP_FIR_MISC1_FIR_DATA_TAPS_SHIFT) & FFA_OP_FIR_MISC1_FIR_DATA_TAPS_MASK)
  393. #define FFA_OP_FIR_MISC1_FIR_DATA_TAPS_GET(x) (((uint32_t)(x) & FFA_OP_FIR_MISC1_FIR_DATA_TAPS_MASK) >> FFA_OP_FIR_MISC1_FIR_DATA_TAPS_SHIFT)
  394. /* Bitfield definition for register: OP_REG2 */
  395. /*
  396. * CT (RW)
  397. *
  398. * Contents
  399. */
  400. #define FFA_OP_REG2_CT_MASK (0xFFFFFFFFUL)
  401. #define FFA_OP_REG2_CT_SHIFT (0U)
  402. #define FFA_OP_REG2_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG2_CT_SHIFT) & FFA_OP_REG2_CT_MASK)
  403. #define FFA_OP_REG2_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG2_CT_MASK) >> FFA_OP_REG2_CT_SHIFT)
  404. /* Bitfield definition for register: OP_FFT_INRBUF */
  405. /*
  406. * LOC (RW)
  407. *
  408. * The input (real) data buffer pointer
  409. */
  410. #define FFA_OP_FFT_INRBUF_LOC_MASK (0xFFFFFFFFUL)
  411. #define FFA_OP_FFT_INRBUF_LOC_SHIFT (0U)
  412. #define FFA_OP_FFT_INRBUF_LOC_SET(x) (((uint32_t)(x) << FFA_OP_FFT_INRBUF_LOC_SHIFT) & FFA_OP_FFT_INRBUF_LOC_MASK)
  413. #define FFA_OP_FFT_INRBUF_LOC_GET(x) (((uint32_t)(x) & FFA_OP_FFT_INRBUF_LOC_MASK) >> FFA_OP_FFT_INRBUF_LOC_SHIFT)
  414. /* Bitfield definition for register: OP_REG3 */
  415. /*
  416. * CT (RW)
  417. *
  418. * Contents
  419. */
  420. #define FFA_OP_REG3_CT_MASK (0xFFFFFFFFUL)
  421. #define FFA_OP_REG3_CT_SHIFT (0U)
  422. #define FFA_OP_REG3_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG3_CT_SHIFT) & FFA_OP_REG3_CT_MASK)
  423. #define FFA_OP_REG3_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG3_CT_MASK) >> FFA_OP_REG3_CT_SHIFT)
  424. /* Bitfield definition for register: OP_FIR_INBUF */
  425. /*
  426. * LOC (RW)
  427. *
  428. * The input data buffer pointer
  429. */
  430. #define FFA_OP_FIR_INBUF_LOC_MASK (0xFFFFFFFFUL)
  431. #define FFA_OP_FIR_INBUF_LOC_SHIFT (0U)
  432. #define FFA_OP_FIR_INBUF_LOC_SET(x) (((uint32_t)(x) << FFA_OP_FIR_INBUF_LOC_SHIFT) & FFA_OP_FIR_INBUF_LOC_MASK)
  433. #define FFA_OP_FIR_INBUF_LOC_GET(x) (((uint32_t)(x) & FFA_OP_FIR_INBUF_LOC_MASK) >> FFA_OP_FIR_INBUF_LOC_SHIFT)
  434. /* Bitfield definition for register: OP_REG4 */
  435. /*
  436. * CT (RW)
  437. *
  438. * Contents
  439. */
  440. #define FFA_OP_REG4_CT_MASK (0xFFFFFFFFUL)
  441. #define FFA_OP_REG4_CT_SHIFT (0U)
  442. #define FFA_OP_REG4_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG4_CT_SHIFT) & FFA_OP_REG4_CT_MASK)
  443. #define FFA_OP_REG4_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG4_CT_MASK) >> FFA_OP_REG4_CT_SHIFT)
  444. /* Bitfield definition for register: OP_FIR_COEFBUF */
  445. /*
  446. * LOC (RW)
  447. *
  448. * The coef buf pointer
  449. */
  450. #define FFA_OP_FIR_COEFBUF_LOC_MASK (0xFFFFFFFFUL)
  451. #define FFA_OP_FIR_COEFBUF_LOC_SHIFT (0U)
  452. #define FFA_OP_FIR_COEFBUF_LOC_SET(x) (((uint32_t)(x) << FFA_OP_FIR_COEFBUF_LOC_SHIFT) & FFA_OP_FIR_COEFBUF_LOC_MASK)
  453. #define FFA_OP_FIR_COEFBUF_LOC_GET(x) (((uint32_t)(x) & FFA_OP_FIR_COEFBUF_LOC_MASK) >> FFA_OP_FIR_COEFBUF_LOC_SHIFT)
  454. /* Bitfield definition for register: OP_FFT_OUTRBUF */
  455. /*
  456. * LOC (RW)
  457. *
  458. * The output (real) data buffer pointer
  459. */
  460. #define FFA_OP_FFT_OUTRBUF_LOC_MASK (0xFFFFFFFFUL)
  461. #define FFA_OP_FFT_OUTRBUF_LOC_SHIFT (0U)
  462. #define FFA_OP_FFT_OUTRBUF_LOC_SET(x) (((uint32_t)(x) << FFA_OP_FFT_OUTRBUF_LOC_SHIFT) & FFA_OP_FFT_OUTRBUF_LOC_MASK)
  463. #define FFA_OP_FFT_OUTRBUF_LOC_GET(x) (((uint32_t)(x) & FFA_OP_FFT_OUTRBUF_LOC_MASK) >> FFA_OP_FFT_OUTRBUF_LOC_SHIFT)
  464. /* Bitfield definition for register: OP_REG5 */
  465. /*
  466. * CT (RW)
  467. *
  468. * Contents
  469. */
  470. #define FFA_OP_REG5_CT_MASK (0xFFFFFFFFUL)
  471. #define FFA_OP_REG5_CT_SHIFT (0U)
  472. #define FFA_OP_REG5_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG5_CT_SHIFT) & FFA_OP_REG5_CT_MASK)
  473. #define FFA_OP_REG5_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG5_CT_MASK) >> FFA_OP_REG5_CT_SHIFT)
  474. /* Bitfield definition for register: OP_FIR_OUTBUF */
  475. /*
  476. * LOC (RW)
  477. *
  478. * The output data buffer pointer. The length of the output buffer should be (FIR_DATA_TAPS - FIR_COEF_TAPS + 1)
  479. */
  480. #define FFA_OP_FIR_OUTBUF_LOC_MASK (0xFFFFFFFFUL)
  481. #define FFA_OP_FIR_OUTBUF_LOC_SHIFT (0U)
  482. #define FFA_OP_FIR_OUTBUF_LOC_SET(x) (((uint32_t)(x) << FFA_OP_FIR_OUTBUF_LOC_SHIFT) & FFA_OP_FIR_OUTBUF_LOC_MASK)
  483. #define FFA_OP_FIR_OUTBUF_LOC_GET(x) (((uint32_t)(x) & FFA_OP_FIR_OUTBUF_LOC_MASK) >> FFA_OP_FIR_OUTBUF_LOC_SHIFT)
  484. /* Bitfield definition for register: OP_REG6 */
  485. /*
  486. * CT (RW)
  487. *
  488. * Contents
  489. */
  490. #define FFA_OP_REG6_CT_MASK (0xFFFFFFFFUL)
  491. #define FFA_OP_REG6_CT_SHIFT (0U)
  492. #define FFA_OP_REG6_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG6_CT_SHIFT) & FFA_OP_REG6_CT_MASK)
  493. #define FFA_OP_REG6_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG6_CT_MASK) >> FFA_OP_REG6_CT_SHIFT)
  494. /* Bitfield definition for register: OP_REG7 */
  495. /*
  496. * CT (RW)
  497. *
  498. * Contents
  499. */
  500. #define FFA_OP_REG7_CT_MASK (0xFFFFFFFFUL)
  501. #define FFA_OP_REG7_CT_SHIFT (0U)
  502. #define FFA_OP_REG7_CT_SET(x) (((uint32_t)(x) << FFA_OP_REG7_CT_SHIFT) & FFA_OP_REG7_CT_MASK)
  503. #define FFA_OP_REG7_CT_GET(x) (((uint32_t)(x) & FFA_OP_REG7_CT_MASK) >> FFA_OP_REG7_CT_SHIFT)
  504. #endif /* HPM_FFA_H */