cvp_hfi.h 12 KB

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