cvp_hfi.h 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __H_CVP_HFI_H__
  6. #define __H_CVP_HFI_H__
  7. #include "cvp_hfi_helper.h"
  8. #include "cvp_hfi_api.h"
  9. #include "cvp_comm_def.h"
  10. #define HFI_CMD_SESSION_CVP_START \
  11. (HFI_DOMAIN_BASE_CVP + HFI_ARCH_COMMON_OFFSET + \
  12. HFI_CMD_START_OFFSET + 0x1000)
  13. #define HFI_CMD_SESSION_CVP_SET_BUFFERS\
  14. (HFI_CMD_SESSION_CVP_START + 0x001)
  15. #define HFI_CMD_SESSION_CVP_RELEASE_BUFFERS\
  16. (HFI_CMD_SESSION_CVP_START + 0x002)
  17. #define HFI_CMD_SESSION_CVP_DS\
  18. (HFI_CMD_SESSION_CVP_START + 0x003)
  19. #define HFI_CMD_SESSION_CVP_HCD_FRAME\
  20. (HFI_CMD_SESSION_CVP_START + 0x004)
  21. #define HFI_CMD_SESSION_CVP_HCD_CONFIG\
  22. (HFI_CMD_SESSION_CVP_START + 0x005)
  23. #define HFI_CMD_SESSION_CVP_CV_HOG_FRAME\
  24. (HFI_CMD_SESSION_CVP_START + 0x006)
  25. #define HFI_CMD_SESSION_CVP_CV_HOG_CONFIG\
  26. (HFI_CMD_SESSION_CVP_START + 0x007)
  27. #define HFI_CMD_SESSION_CVP_SVM\
  28. (HFI_CMD_SESSION_CVP_START + 0x008)
  29. #define HFI_CMD_SESSION_CVP_NCC_FRAME\
  30. (HFI_CMD_SESSION_CVP_START + 0x009)
  31. #define HFI_CMD_SESSION_CVP_NCC_CONFIG\
  32. (HFI_CMD_SESSION_CVP_START + 0x00A)
  33. #define HFI_CMD_SESSION_CVP_DFS_FRAME\
  34. (HFI_CMD_SESSION_CVP_START + 0x00B)
  35. #define HFI_CMD_SESSION_CVP_DFS_CONFIG\
  36. (HFI_CMD_SESSION_CVP_START + 0x00C)
  37. #define HFI_CMD_SESSION_CVP_FTEXT\
  38. (HFI_CMD_SESSION_CVP_START + 0x00F)
  39. /* ==========CHAINED OPERATIONS===================*/
  40. #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_FRAME\
  41. (HFI_CMD_SESSION_CVP_START + 0x010)
  42. #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_CONFIG\
  43. (HFI_CMD_SESSION_CVP_START + 0x011)
  44. #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_HCD_FRAME\
  45. (HFI_CMD_SESSION_CVP_START + 0x012)
  46. #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_HCD_CONFIG\
  47. (HFI_CMD_SESSION_CVP_START + 0x013)
  48. #define HFI_CMD_SESSION_CVP_OPTICAL_FLOW\
  49. (HFI_CMD_SESSION_CVP_START + 0x014)
  50. /* ===========USECASE OPERATIONS===============*/
  51. #define HFI_CMD_SESSION_CVP_DC_FRAME\
  52. (HFI_CMD_SESSION_CVP_START + 0x030)
  53. #define HFI_CMD_SESSION_CVP_DC_CONFIG\
  54. (HFI_CMD_SESSION_CVP_START + 0x031)
  55. #define HFI_CMD_SESSION_CVP_DCM_FRAME\
  56. (HFI_CMD_SESSION_CVP_START + 0x034)
  57. #define HFI_CMD_SESSION_CVP_DCM_CONFIG\
  58. (HFI_CMD_SESSION_CVP_START + 0x035)
  59. #define HFI_CMD_SESSION_CVP_DME_CONFIG\
  60. (HFI_CMD_SESSION_CVP_START + 0x039)
  61. #define HFI_CMD_SESSION_CVP_DME_BASIC_CONFIG\
  62. (HFI_CMD_SESSION_CVP_START + 0x03B)
  63. #define HFI_CMD_SESSION_CVP_DME_FRAME\
  64. (HFI_CMD_SESSION_CVP_START + 0x03A)
  65. #define HFI_CMD_SESSION_CVP_CV_TME_CONFIG\
  66. (HFI_CMD_SESSION_CVP_START + 0x047)
  67. #define HFI_CMD_SESSION_CVP_CV_TME_FRAME\
  68. (HFI_CMD_SESSION_CVP_START + 0x048)
  69. #define HFI_CMD_SESSION_CVP_CV_OD_CONFIG\
  70. (HFI_CMD_SESSION_CVP_START + 0x049)
  71. #define HFI_CMD_SESSION_CVP_CV_OD_FRAME\
  72. (HFI_CMD_SESSION_CVP_START + 0x04A)
  73. #define HFI_CMD_SESSION_CVP_CV_ODT_CONFIG\
  74. (HFI_CMD_SESSION_CVP_START + 0x04B)
  75. #define HFI_CMD_SESSION_CVP_CV_ODT_FRAME\
  76. (HFI_CMD_SESSION_CVP_START + 0x04C)
  77. #define HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS\
  78. (HFI_CMD_SESSION_CVP_START + 0x04D)
  79. #define HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG\
  80. (HFI_CMD_SESSION_CVP_START + 0x050)
  81. #define HFI_CMD_SESSION_CVP_PYS_HCD_FRAME\
  82. (HFI_CMD_SESSION_CVP_START + 0x051)
  83. #define HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS\
  84. (HFI_CMD_SESSION_CVP_START + 0x052)
  85. #define HFI_CMD_SESSION_CVP_FD_CONFIG\
  86. (HFI_CMD_SESSION_CVP_START + 0x053)
  87. #define HFI_CMD_SESSION_CVP_FD_FRAME\
  88. (HFI_CMD_SESSION_CVP_START + 0x054)
  89. #define HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS\
  90. (HFI_CMD_SESSION_CVP_START + 0x055)
  91. #define HFI_CMD_SESSION_CVP_RELEASE_MODEL_BUFFERS\
  92. (HFI_CMD_SESSION_CVP_START + 0x056)
  93. #define HFI_CMD_SESSION_CVP_SGM_DFS_CONFIG\
  94. (HFI_CMD_SESSION_CVP_START + 0x057)
  95. #define HFI_CMD_SESSION_CVP_SGM_DFS_FRAME\
  96. (HFI_CMD_SESSION_CVP_START + 0x058)
  97. #define HFI_CMD_SESSION_CVP_SGM_OF_CONFIG\
  98. (HFI_CMD_SESSION_CVP_START + 0x059)
  99. #define HFI_CMD_SESSION_CVP_SGM_OF_FRAME\
  100. (HFI_CMD_SESSION_CVP_START + 0x05A)
  101. #define HFI_CMD_SESSION_CVP_GCE_CONFIG\
  102. (HFI_CMD_SESSION_CVP_START + 0x05B)
  103. #define HFI_CMD_SESSION_CVP_GCE_FRAME\
  104. (HFI_CMD_SESSION_CVP_START + 0x05C)
  105. #define HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG\
  106. (HFI_CMD_SESSION_CVP_START + 0x05D)
  107. #define HFI_CMD_SESSION_CVP_WARP_NCC_FRAME\
  108. (HFI_CMD_SESSION_CVP_START + 0x05E)
  109. #define HFI_CMD_SESSION_CVP_DMM_CONFIG\
  110. (HFI_CMD_SESSION_CVP_START + 0x05F)
  111. #define HFI_CMD_SESSION_CVP_DMM_FRAME\
  112. (HFI_CMD_SESSION_CVP_START + 0x060)
  113. #define HFI_CMD_SESSION_CVP_FLUSH\
  114. (HFI_CMD_SESSION_CVP_START + 0x061)
  115. #define HFI_CMD_SESSION_CVP_WARP_CONFIG\
  116. (HFI_CMD_SESSION_CVP_START + 0x062)
  117. #define HFI_CMD_SESSION_CVP_WARP_FRAME\
  118. (HFI_CMD_SESSION_CVP_START + 0x063)
  119. #define HFI_CMD_SESSION_CVP_DMM_PARAMS\
  120. (HFI_CMD_SESSION_CVP_START + 0x064)
  121. #define HFI_CMD_SESSION_CVP_WARP_DS_PARAMS\
  122. (HFI_CMD_SESSION_CVP_START + 0x065)
  123. #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS\
  124. (HFI_CMD_SESSION_CVP_START + 0x070)
  125. #define HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS\
  126. (HFI_CMD_SESSION_CVP_START + 0x071)
  127. #define HFI_CMD_SESSION_CVP_SNAPSHOT_WRITE_DONE\
  128. (HFI_CMD_SESSION_CVP_START + 0x072)
  129. #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE\
  130. (HFI_CMD_SESSION_CVP_START + 0x073)
  131. #define HFI_CMD_SESSION_CVP_ICA_FRAME\
  132. (HFI_CMD_SESSION_CVP_START + 0x100)
  133. #define HFI_CMD_SESSION_CVP_ICA_CONFIG\
  134. (HFI_CMD_SESSION_CVP_START + 0x101)
  135. #define HFI_MSG_SESSION_CVP_START \
  136. (HFI_DOMAIN_BASE_CVP + HFI_ARCH_COMMON_OFFSET + \
  137. HFI_MSG_START_OFFSET + 0x1000)
  138. #define HFI_MSG_SESSION_CVP_SET_BUFFERS\
  139. (HFI_MSG_SESSION_CVP_START + 0x001)
  140. #define HFI_MSG_SESSION_CVP_RELEASE_BUFFERS \
  141. (HFI_MSG_SESSION_CVP_START + 0x002)
  142. #define HFI_MSG_SESSION_CVP_DS\
  143. (HFI_MSG_SESSION_CVP_START + 0x003)
  144. #define HFI_MSG_SESSION_CVP_HCD\
  145. (HFI_MSG_SESSION_CVP_START + 0x004)
  146. #define HFI_MSG_SESSION_CVP_CV_HOG\
  147. (HFI_MSG_SESSION_CVP_START + 0x005)
  148. #define HFI_MSG_SESSION_CVP_SVM\
  149. (HFI_MSG_SESSION_CVP_START + 0x006)
  150. #define HFI_MSG_SESSION_CVP_NCC\
  151. (HFI_MSG_SESSION_CVP_START + 0x007)
  152. #define HFI_MSG_SESSION_CVP_DFS\
  153. (HFI_MSG_SESSION_CVP_START + 0x008)
  154. #define HFI_MSG_SESSION_CVP_TME\
  155. (HFI_MSG_SESSION_CVP_START + 0x009)
  156. #define HFI_MSG_SESSION_CVP_FTEXT\
  157. (HFI_MSG_SESSION_CVP_START + 0x00A)
  158. #define HFI_MSG_SESSION_CVP_ICA\
  159. (HFI_MSG_SESSION_CVP_START + 0x014)
  160. #define HFI_MSG_SESSION_CVP_DME\
  161. (HFI_MSG_SESSION_CVP_START + 0x023)
  162. #define HFI_MSG_SESSION_CVP_OPERATION_CONFIG (HFI_MSG_SESSION_CVP_START + 0x030)
  163. #define HFI_MSG_SESSION_CVP_SET_PERSIST_BUFFERS\
  164. (HFI_MSG_SESSION_CVP_START + 0x034)
  165. #define HFI_MSG_SESSION_CVP_SET_MODEL_BUFFERS\
  166. (HFI_MSG_SESSION_CVP_START + 0x036)
  167. #define HFI_MSG_SESSION_CVP_FD\
  168. (HFI_MSG_SESSION_CVP_START + 0x037)
  169. #define HFI_MSG_SESSION_CVP_RELEASE_PERSIST_BUFFERS\
  170. (HFI_MSG_SESSION_CVP_START + 0x038)
  171. #define HFI_MSG_SESSION_CVP_RELEASE_MODEL_BUFFERS\
  172. (HFI_MSG_SESSION_CVP_START + 0x039)
  173. #define HFI_MSG_SESSION_CVP_SGM_OF\
  174. (HFI_MSG_SESSION_CVP_START + 0x03A)
  175. #define HFI_MSG_SESSION_CVP_GCE\
  176. (HFI_MSG_SESSION_CVP_START + 0x03B)
  177. #define HFI_MSG_SESSION_CVP_WARP_NCC\
  178. (HFI_MSG_SESSION_CVP_START + 0x03C)
  179. #define HFI_MSG_SESSION_CVP_DMM\
  180. (HFI_MSG_SESSION_CVP_START + 0x03D)
  181. #define HFI_MSG_SESSION_CVP_SGM_DFS\
  182. (HFI_MSG_SESSION_CVP_START + 0x03E)
  183. #define HFI_MSG_SESSION_CVP_WARP\
  184. (HFI_MSG_SESSION_CVP_START + 0x03F)
  185. #define HFI_MSG_SESSION_CVP_DMM_PARAMS\
  186. (HFI_MSG_SESSION_CVP_START + 0x040)
  187. #define HFI_MSG_SESSION_CVP_WARP_DS_PARAMS\
  188. (HFI_MSG_SESSION_CVP_START + 0x041)
  189. #define HFI_MSG_SESSION_CVP_SET_SNAPSHOT_BUFFERS\
  190. (HFI_MSG_SESSION_CVP_START + 0x042)
  191. #define HFI_MSG_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS\
  192. (HFI_MSG_SESSION_CVP_START + 0x043)
  193. #define HFI_MSG_EVENT_NOTIFY_SNAPSHOT_READY\
  194. (HFI_MSG_SESSION_CVP_START + 0x044)
  195. #define HFI_MSG_SESSION_CVP_FLUSH\
  196. (HFI_MSG_SESSION_CVP_START + 0x004A)
  197. #define CVP_IFACEQ_MAX_PKT_SIZE 1024
  198. #define CVP_IFACEQ_MED_PKT_SIZE 768
  199. #define CVP_IFACEQ_MIN_PKT_SIZE 8
  200. #define CVP_IFACEQ_VAR_SMALL_PKT_SIZE 100
  201. #define CVP_IFACEQ_VAR_LARGE_PKT_SIZE 512
  202. #define CVP_IFACEQ_VAR_HUGE_PKT_SIZE (1024*12)
  203. /* HFI packet info needed for sanity check */
  204. #define HFI_DFS_CONFIG_CMD_SIZE 38
  205. #define HFI_DFS_FRAME_CMD_SIZE 16
  206. #define HFI_DMM_CONFIG_CMD_SIZE 194
  207. #define HFI_DMM_BASIC_CONFIG_CMD_SIZE 51
  208. #define HFI_DMM_FRAME_CMD_SIZE 28
  209. #define HFI_PERSIST_CMD_SIZE 11
  210. #define HFI_DS_CMD_SIZE 50
  211. #define HFI_OF_CONFIG_CMD_SIZE 34
  212. #define HFI_OF_FRAME_CMD_SIZE 24
  213. #define HFI_ODT_CONFIG_CMD_SIZE 23
  214. #define HFI_ODT_FRAME_CMD_SIZE 33
  215. #define HFI_OD_CONFIG_CMD_SIZE 24
  216. #define HFI_OD_FRAME_CMD_SIZE 12
  217. #define HFI_NCC_CONFIG_CMD_SIZE 47
  218. #define HFI_NCC_FRAME_CMD_SIZE 22
  219. #define HFI_ICA_CONFIG_CMD_SIZE 127
  220. #define HFI_ICA_FRAME_CMD_SIZE 14
  221. #define HFI_HCD_CONFIG_CMD_SIZE 46
  222. #define HFI_HCD_FRAME_CMD_SIZE 18
  223. #define HFI_DCM_CONFIG_CMD_SIZE 20
  224. #define HFI_DCM_FRAME_CMD_SIZE 19
  225. #define HFI_PYS_HCD_CONFIG_CMD_SIZE 461
  226. #define HFI_PYS_HCD_FRAME_CMD_SIZE 66
  227. #define HFI_FD_CONFIG_CMD_SIZE 28
  228. #define HFI_FD_FRAME_CMD_SIZE 10
  229. struct cvp_hfi_cmd_session_flush_packet {
  230. u32 size;
  231. u32 packet_type;
  232. u32 session_id;
  233. u32 flush_type;
  234. };
  235. struct cvp_hfi_cmd_session_get_property_packet {
  236. u32 size;
  237. u32 packet_type;
  238. u32 session_id;
  239. u32 num_properties;
  240. u32 rg_property_data[1];
  241. };
  242. struct cvp_hfi_msg_sys_session_abort_done_packet {
  243. u32 size;
  244. u32 packet_type;
  245. u32 session_id;
  246. u32 error_type;
  247. };
  248. struct cvp_hfi_msg_sys_property_info_packet {
  249. u32 size;
  250. u32 packet_type;
  251. u32 num_properties;
  252. u32 rg_property_data[128];
  253. };
  254. enum session_flags {
  255. SESSION_PAUSE = BIT(1),
  256. };
  257. struct cvp_hal_session {
  258. struct list_head list;
  259. void *session_id;
  260. u32 flags;
  261. void *device;
  262. };
  263. enum buf_map_type {
  264. MAP_PERSIST = 1,
  265. UNMAP_PERSIST = 2,
  266. MAP_FRAME = 3,
  267. MAP_INVALID,
  268. };
  269. static inline enum buf_map_type cvp_find_map_type(int pkt_type)
  270. {
  271. if (pkt_type == HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS ||
  272. pkt_type == HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS ||
  273. pkt_type == HFI_CMD_SESSION_CVP_DMM_PARAMS ||
  274. pkt_type == HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS ||
  275. pkt_type == HFI_CMD_SESSION_CVP_WARP_DS_PARAMS)
  276. return MAP_PERSIST;
  277. else if (pkt_type == HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS ||
  278. pkt_type ==
  279. HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS)
  280. return UNMAP_PERSIST;
  281. else
  282. return MAP_FRAME;
  283. }
  284. #endif