/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef __H_CVP_HFI_H__ #define __H_CVP_HFI_H__ #include "cvp_hfi_helper.h" #include "cvp_hfi_api.h" #include "cvp_comm_def.h" #define HFI_CMD_SESSION_CVP_START \ (HFI_DOMAIN_BASE_CVP + HFI_ARCH_COMMON_OFFSET + \ HFI_CMD_START_OFFSET + 0x1000) #define HFI_CMD_SESSION_CVP_SET_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x001) #define HFI_CMD_SESSION_CVP_RELEASE_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x002) #define HFI_CMD_SESSION_CVP_DS\ (HFI_CMD_SESSION_CVP_START + 0x003) #define HFI_CMD_SESSION_CVP_HCD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x004) #define HFI_CMD_SESSION_CVP_HCD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x005) #define HFI_CMD_SESSION_CVP_CV_HOG_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x006) #define HFI_CMD_SESSION_CVP_CV_HOG_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x007) #define HFI_CMD_SESSION_CVP_SVM\ (HFI_CMD_SESSION_CVP_START + 0x008) #define HFI_CMD_SESSION_CVP_NCC_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x009) #define HFI_CMD_SESSION_CVP_NCC_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x00A) #define HFI_CMD_SESSION_CVP_DFS_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x00B) #define HFI_CMD_SESSION_CVP_DFS_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x00C) #define HFI_CMD_SESSION_CVP_FTEXT\ (HFI_CMD_SESSION_CVP_START + 0x00F) /* ==========CHAINED OPERATIONS===================*/ #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x010) #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x011) #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_HCD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x012) #define HFI_CMD_SESSION_CVP_CV_HOG_SVM_HCD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x013) #define HFI_CMD_SESSION_CVP_OPTICAL_FLOW\ (HFI_CMD_SESSION_CVP_START + 0x014) /* ===========USECASE OPERATIONS===============*/ #define HFI_CMD_SESSION_CVP_DC_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x030) #define HFI_CMD_SESSION_CVP_DC_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x031) #define HFI_CMD_SESSION_CVP_DCM_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x034) #define HFI_CMD_SESSION_CVP_DCM_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x035) #define HFI_CMD_SESSION_CVP_DME_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x039) #define HFI_CMD_SESSION_CVP_DME_BASIC_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x03B) #define HFI_CMD_SESSION_CVP_DME_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x03A) #define HFI_CMD_SESSION_EVA_DME_ONLY_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x040) #define HFI_CMD_SESSION_EVA_DME_ONLY_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x041) #define HFI_CMD_SESSION_CVP_CV_TME_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x047) #define HFI_CMD_SESSION_CVP_CV_TME_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x048) #define HFI_CMD_SESSION_CVP_CV_OD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x049) #define HFI_CMD_SESSION_CVP_CV_OD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x04A) #define HFI_CMD_SESSION_CVP_CV_ODT_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x04B) #define HFI_CMD_SESSION_CVP_CV_ODT_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x04C) #define HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x04D) #define HFI_CMD_SESSION_CVP_PYS_HCD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x050) #define HFI_CMD_SESSION_CVP_PYS_HCD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x051) #define HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x052) #define HFI_CMD_SESSION_CVP_FD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x053) #define HFI_CMD_SESSION_CVP_FD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x054) #define HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x055) #define HFI_CMD_SESSION_CVP_RELEASE_MODEL_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x056) #define HFI_CMD_SESSION_CVP_SGM_DFS_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x057) #define HFI_CMD_SESSION_CVP_SGM_DFS_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x058) #define HFI_CMD_SESSION_CVP_SGM_OF_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x059) #define HFI_CMD_SESSION_CVP_SGM_OF_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x05A) #define HFI_CMD_SESSION_CVP_GCE_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x05B) #define HFI_CMD_SESSION_CVP_GCE_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x05C) #define HFI_CMD_SESSION_CVP_WARP_NCC_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x05D) #define HFI_CMD_SESSION_CVP_WARP_NCC_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x05E) #define HFI_CMD_SESSION_CVP_DMM_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x05F) #define HFI_CMD_SESSION_CVP_DMM_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x060) #define HFI_CMD_SESSION_CVP_FLUSH\ (HFI_CMD_SESSION_CVP_START + 0x061) #define HFI_CMD_SESSION_CVP_WARP_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x062) #define HFI_CMD_SESSION_CVP_WARP_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x063) #define HFI_CMD_SESSION_CVP_DMM_PARAMS\ (HFI_CMD_SESSION_CVP_START + 0x064) #define HFI_CMD_SESSION_CVP_WARP_DS_PARAMS\ (HFI_CMD_SESSION_CVP_START + 0x065) #define HFI_CMD_SESSION_CVP_XRA_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x066) #define HFI_CMD_SESSION_CVP_XRA_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x067) #define HFI_CMD_SESSION_CVP_XRA_BLOB_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x069) #define HFI_CMD_SESSION_CVP_XRA_BLOB_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x06A) #define HFI_CMD_SESSION_CVP_XRA_PATCH_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x06B) #define HFI_CMD_SESSION_CVP_XRA_PATCH_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x06C) #define HFI_CMD_SESSION_CVP_XRA_MATCH_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x06D) #define HFI_CMD_SESSION_CVP_XRA_MATCH_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x06E) #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x070) #define HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS\ (HFI_CMD_SESSION_CVP_START + 0x071) #define HFI_CMD_SESSION_CVP_SNAPSHOT_WRITE_DONE\ (HFI_CMD_SESSION_CVP_START + 0x072) #define HFI_CMD_SESSION_CVP_SET_SNAPSHOT_MODE\ (HFI_CMD_SESSION_CVP_START + 0x073) #define HFI_CMD_SESSION_EVA_ITOF_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x078) #define HFI_CMD_SESSION_EVA_ITOF_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x079) #define HFI_CMD_SESSION_EVA_DLFD_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x07C) #define HFI_CMD_SESSION_EVA_DLFD_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x07D) #define HFI_CMD_SESSION_CVP_RGE_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x07E) #define HFI_CMD_SESSION_CVP_RGE_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x07F) #define HFI_CMD_SESSION_EVA_DLFL_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x080) #define HFI_CMD_SESSION_EVA_DLFL_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x081) #define HFI_CMD_SESSION_CVP_SYNX\ (HFI_CMD_SESSION_CVP_START + 0x086) #define HFI_CMD_SESSION_EVA_START\ (HFI_CMD_SESSION_CVP_START + 0x088) #define HFI_CMD_SESSION_EVA_STOP\ (HFI_CMD_SESSION_CVP_START + 0x089) #define HFI_CMD_SESSION_CVP_ICA_FRAME\ (HFI_CMD_SESSION_CVP_START + 0x100) #define HFI_CMD_SESSION_CVP_ICA_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x101) #define HFI_CMD_SESSION_CVP_DS_CONFIG\ (HFI_CMD_SESSION_CVP_START + 0x02F) #define HFI_MSG_SESSION_CVP_START \ (HFI_DOMAIN_BASE_CVP + HFI_ARCH_COMMON_OFFSET + \ HFI_MSG_START_OFFSET + 0x1000) #define HFI_MSG_SESSION_CVP_SET_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x001) #define HFI_MSG_SESSION_CVP_RELEASE_BUFFERS \ (HFI_MSG_SESSION_CVP_START + 0x002) #define HFI_MSG_SESSION_CVP_DS\ (HFI_MSG_SESSION_CVP_START + 0x003) #define HFI_MSG_SESSION_CVP_HCD\ (HFI_MSG_SESSION_CVP_START + 0x004) #define HFI_MSG_SESSION_CVP_CV_HOG\ (HFI_MSG_SESSION_CVP_START + 0x005) #define HFI_MSG_SESSION_CVP_SVM\ (HFI_MSG_SESSION_CVP_START + 0x006) #define HFI_MSG_SESSION_CVP_NCC\ (HFI_MSG_SESSION_CVP_START + 0x007) #define HFI_MSG_SESSION_CVP_DFS\ (HFI_MSG_SESSION_CVP_START + 0x008) #define HFI_MSG_SESSION_CVP_TME\ (HFI_MSG_SESSION_CVP_START + 0x009) #define HFI_MSG_SESSION_CVP_FTEXT\ (HFI_MSG_SESSION_CVP_START + 0x00A) #define HFI_MSG_SESSION_CVP_ICA\ (HFI_MSG_SESSION_CVP_START + 0x014) #define HFI_MSG_SESSION_CVP_DME\ (HFI_MSG_SESSION_CVP_START + 0x023) #define HFI_MSG_SESSION_EVA_DME_ONLY\ (HFI_MSG_SESSION_CVP_START + 0x050) #define HFI_MSG_SESSION_CVP_OPERATION_CONFIG (HFI_MSG_SESSION_CVP_START + 0x030) #define HFI_MSG_SESSION_CVP_SET_PERSIST_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x034) #define HFI_MSG_SESSION_CVP_SET_MODEL_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x036) #define HFI_MSG_SESSION_CVP_FD\ (HFI_MSG_SESSION_CVP_START + 0x037) #define HFI_MSG_SESSION_CVP_RELEASE_PERSIST_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x038) #define HFI_MSG_SESSION_CVP_RELEASE_MODEL_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x039) #define HFI_MSG_SESSION_CVP_SGM_OF\ (HFI_MSG_SESSION_CVP_START + 0x03A) #define HFI_MSG_SESSION_CVP_GCE\ (HFI_MSG_SESSION_CVP_START + 0x03B) #define HFI_MSG_SESSION_CVP_WARP_NCC\ (HFI_MSG_SESSION_CVP_START + 0x03C) #define HFI_MSG_SESSION_CVP_DMM\ (HFI_MSG_SESSION_CVP_START + 0x03D) #define HFI_MSG_SESSION_CVP_SGM_DFS\ (HFI_MSG_SESSION_CVP_START + 0x03E) #define HFI_MSG_SESSION_CVP_WARP\ (HFI_MSG_SESSION_CVP_START + 0x03F) #define HFI_MSG_SESSION_CVP_DMM_PARAMS\ (HFI_MSG_SESSION_CVP_START + 0x040) #define HFI_MSG_SESSION_CVP_WARP_DS_PARAMS\ (HFI_MSG_SESSION_CVP_START + 0x041) #define HFI_MSG_SESSION_CVP_SET_SNAPSHOT_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x045) #define HFI_MSG_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS\ (HFI_MSG_SESSION_CVP_START + 0x046) #define HFI_MSG_EVENT_NOTIFY_SNAPSHOT_READY\ (HFI_MSG_SESSION_CVP_START + 0x047) #define HFI_MSG_SESSION_CVP_FLUSH\ (HFI_MSG_SESSION_CVP_START + 0x004A) #define HFI_MSG_SESSION_EVA_START\ (HFI_MSG_SESSION_CVP_START + 0x0058) #define HFI_MSG_SESSION_EVA_STOP\ (HFI_MSG_SESSION_CVP_START + 0x0059) #define CVP_IFACEQ_MAX_PKT_SIZE 1024 #define CVP_IFACEQ_MED_PKT_SIZE 768 #define CVP_IFACEQ_MIN_PKT_SIZE 8 #define CVP_IFACEQ_VAR_SMALL_PKT_SIZE 100 #define CVP_IFACEQ_VAR_LARGE_PKT_SIZE 512 #define CVP_IFACEQ_VAR_HUGE_PKT_SIZE (1024*12) /* HFI packet info needed for sanity check */ #define HFI_DFS_CONFIG_CMD_SIZE 38 #define HFI_DFS_FRAME_CMD_SIZE 16 #define HFI_DMM_CONFIG_CMD_SIZE 194 #define HFI_DMM_BASIC_CONFIG_CMD_SIZE 51 #define HFI_DMM_FRAME_CMD_SIZE 28 #define HFI_PERSIST_CMD_SIZE 11 #define HFI_DS_CONFIG_CMD_SIZE 11 #define HFI_DS_CMD_SIZE 50 #define HFI_OF_CONFIG_CMD_SIZE 34 #define HFI_OF_FRAME_CMD_SIZE 24 #define HFI_ODT_CONFIG_CMD_SIZE 23 #define HFI_ODT_FRAME_CMD_SIZE 33 #define HFI_OD_CONFIG_CMD_SIZE 24 #define HFI_OD_FRAME_CMD_SIZE 12 #define HFI_NCC_CONFIG_CMD_SIZE 47 #define HFI_NCC_FRAME_CMD_SIZE 22 #define HFI_ICA_CONFIG_CMD_SIZE 127 #define HFI_ICA_FRAME_CMD_SIZE 14 #define HFI_HCD_CONFIG_CMD_SIZE 46 #define HFI_HCD_FRAME_CMD_SIZE 18 #define HFI_DCM_CONFIG_CMD_SIZE 20 #define HFI_DCM_FRAME_CMD_SIZE 19 #define HFI_PYS_HCD_CONFIG_CMD_SIZE 461 #define HFI_PYS_HCD_FRAME_CMD_SIZE 66 #define HFI_FD_CONFIG_CMD_SIZE 28 #define HFI_FD_FRAME_CMD_SIZE 10 struct cvp_hfi_cmd_session_flush_packet { u32 size; u32 packet_type; u32 session_id; u32 flush_type; }; struct cvp_hfi_cmd_session_get_property_packet { u32 size; u32 packet_type; u32 session_id; u32 num_properties; u32 rg_property_data[1]; }; struct cvp_hfi_msg_sys_session_abort_done_packet { u32 size; u32 packet_type; u32 session_id; u32 error_type; }; struct cvp_hfi_msg_sys_property_info_packet { u32 size; u32 packet_type; u32 num_properties; u32 rg_property_data[128]; }; enum session_flags { SESSION_PAUSE = BIT(1), }; struct cvp_hal_session { struct list_head list; void *session_id; u32 flags; void *device; }; enum buf_map_type { MAP_PERSIST = 1, UNMAP_PERSIST = 2, MAP_FRAME = 3, MAP_INVALID, }; static inline enum buf_map_type cvp_find_map_type(int pkt_type) { if (pkt_type == HFI_CMD_SESSION_CVP_SET_PERSIST_BUFFERS || pkt_type == HFI_CMD_SESSION_CVP_SET_MODEL_BUFFERS || pkt_type == HFI_CMD_SESSION_CVP_DMM_PARAMS || pkt_type == HFI_CMD_SESSION_CVP_SET_SNAPSHOT_BUFFERS || pkt_type == HFI_CMD_SESSION_CVP_WARP_DS_PARAMS || pkt_type == HFI_CMD_SESSION_EVA_DLFL_CONFIG) return MAP_PERSIST; else if (pkt_type == HFI_CMD_SESSION_CVP_RELEASE_PERSIST_BUFFERS || pkt_type == HFI_CMD_SESSION_CVP_RELEASE_SNAPSHOT_BUFFERS) return UNMAP_PERSIST; else return MAP_FRAME; } static inline bool is_params_pkt(int pkt_type) { if (pkt_type == HFI_CMD_SESSION_CVP_DMM_PARAMS || pkt_type == HFI_CMD_SESSION_CVP_WARP_DS_PARAMS) return true; return false; } #endif