Files
2026-08-24 10:03:24 +08:00

1035 lines
32 KiB
C

/*
* Copyright (C) 2019-2024 Amlogic, Inc. All rights reserved.
*
*/
#ifndef __CVE_H__
#define __CVE_H__
#include "aml_comm_cve.h"
#include "aml_cve.h"
#include "cve_reg.h"
#include <linux/seq_file.h>
#include <linux/wait.h>
#include <linux/types.h>
#define AML_MOD_CVE "cve"
#define AML_ASSERT(expr) \
do { \
if (!(expr)) { \
panic("\nASSERT at:\n" \
" >Function : %s\n" \
" >Line No. : %d\n" \
" >Condition: %s\n", \
__FUNCTION__, __LINE__, #expr); \
} \
} while (0)
#define CVE_LOG(level, fmt...) \
do { \
printk(fmt); \
} while (0)
#define CVE_ERR_LOG(fmt, ...) \
do { \
CVE_LOG("[Func]:%s [Line]:%d [Error]:" fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
} while (0)
#define CMD_HANDLE_MAX 0x10000000
#define CVE_ALIGN_DOWN(x, g) (((x) / (g)) * (g))
#define CVE_ALIGN_UP(x, g) ((((x) + (g)-1) / (g)) * (g))
#define CVE_ALIGN 16
#define CVE_REG_ADDR_OFFSET(reg) ((((reg)-CVE_REG_BASE) << 2))
#define HIST_OUTPUT_PROCESS_LUT (1 << 0)
#define NCC_OUTPUT_PROCESS_REG (1 << 1)
#define CCL_OUTPUT_PROCESS_REG (1 << 2)
#define MATCH_BG_MODEL_OUTPUT_PROCESS_REG (1 << 3)
#define UPDATE_BG_MODEL_OUTPUT_PROCESS_REG (1 << 4)
#define LK_OPTICAL_FLOWPYR_OUTPUT_PROCESS_REG (1 << 5)
#define STCORNER_OUTPUT_PROCESS_REG (1 << 6)
#define CANNY_OUTPUT_PROCESS_REG (1 << 7)
#define TOF_OUTPUT_PROCESS_LUT (1 << 8)
#define SUB_OUTPUT_PROCESS_REG (1 << 9)
#define ADD_OUTPUT_PROCESS_REG (1 << 10)
#define MAP_INPUT_PROCESS_LUT (1 << 0)
#define EQUALIZE_HIST_INPUT_PROCESS_LUT (1 << 1)
#define TOF_INPUT_PROCESS_LUT (1 << 2)
#define CVE_SRC_MAX 8
#define CVE_DST_MAX 5
#define CVE_LUMA_MULTI_CMD_MAX CVE_LUMA_RECT_MAX
#define IOC_TYPE_CVE 'F'
#define CVE_OP_DMA _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_DMA, CVE_OP_DMA_T)
#define CVE_OP_LUMA_STAT _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_LUMA_STAT, CVE_OP_LUAM_STAT_ARRAY_T)
#define CVE_OP_FILTER _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_FILTER, CVE_OP_FILTER_T)
#define CVE_OP_CSC _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_CSC, CVE_OP_CSC_T)
#define CVE_OP_FILTER_AND_CSC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_FILTER_AND_CSC, CVE_OP_FILTER_AND_CSC_T)
#define CVE_OP_DILATE _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_DILATE, CVE_OP_DILATE_T)
#define CVE_OP_ERODE _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ERODE, CVE_OP_ERODE_T)
#define CVE_OP_BERNSEN _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ERODE, CVE_OP_BERNSEN_T)
#define CVE_OP_THRESH _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_THRESH, CVE_OP_THRESH_T)
#define CVE_OP_SOBEL _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_SOBEL, CVE_OP_SOBEL_T)
#define CVE_OP_INTEG _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_INTEG, CVE_OP_INTEG_T)
#define CVE_OP_HIST _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_HIST, CVE_OP_HIST_T)
#define CVE_OP_NCC _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_NCC, CVE_OP_NCC_T)
#define CVE_OP_THRESH_S16 _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_THRESH_S16, CVE_OP_THRESH_S16_T)
#define CVE_OP_THRESH_U16 _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_THRESH_U16, CVE_OP_THRESH_U16_T)
#define CVE_OP_ORD_STAT_FILTER \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ORD_STAT_FILTER, CVE_OP_ORD_STAT_FILTER_T)
#define CVE_OP_16BIT_TO_8BIT \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_16BIT_TO_8BIT, CVE_OP_16BIT_TO_8BIT_T)
#define CVE_OP_MATCH_BG_MODEL \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_MATCH_BG_MODEL, CVE_OP_MATCH_BG_MODEL_T)
#define CVE_OP_UPDATE_BG_MODEL \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_UPDATE_BG_MODEL, CVE_OP_UPDATE_BG_MODEL_T)
#define CVE_OP_GRAD_FG _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_GRAD_FG, CVE_OP_GRAD_FG_T)
#define CVE_OP_LBP _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_LBP, CVE_OP_LBP_T)
#define CVE_OP_GMM _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_GMM, CVE_OP_GMM_T)
#define CVE_OP_EQUALIZE_HIST \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_EQUALIZE_HIST, CVE_OP_EQUALIZE_HIST_T)
#define CVE_OP_CCL _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_CCL, CVE_OP_CCL_T)
#define CVE_OP_CANNY_HYS_EDGE \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_CANNY_HYS_EDGE, CVE_OP_CANNY_HYS_EDGE_T)
#define CVE_OP_ST_CANDI_CORNER \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ST_CANDI_CORNER, CVE_OP_ST_CANDI_CORNER_T)
#define CVE_OP_SAD _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_SAD, CVE_OP_SAD_T)
#define CVE_OP_LK_OPTICAL_FLOW_PYR \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_LK_OPTICAL_FLOW_PYR, CVE_OP_LK_OPTICAL_FLOW_PYR_T)
#define CVE_OP_BUILD_LK_OPTICAL_FLOW_PYR \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_BUILD_LK_OPTICAL_FLOW_PYR, CVE_OP_BUILD_LK_OPTICAL_FLOW_PYR_T)
#define CVE_OP_MAP _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_MAP, CVE_OP_MAP_T)
#define CVE_OP_NORM_GRAD _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_NORM_GRAD, CVE_OP_NORM_GRAD_T)
#define CVE_OP_AND _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AND, CVE_OP_AND_T)
#define CVE_OP_OR _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_OR, CVE_OP_OR_T)
#define CVE_OP_XOR _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_XOR, CVE_OP_XOR_T)
#define CVE_OP_SUB _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_SUB, CVE_OP_SUB_T)
#define CVE_OP_ADD _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ADD, CVE_OP_ADD_T)
#define CVE_OP_ADD_MAP255TO1 \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ADD_MAP_255_TO1, CVE_OP_ADD_MAP255TO1_T)
#define CVE_OP_DOT _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_DOT, CVE_OP_DOT_T)
#define CVE_OP_MAG_AND_ANG _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_MAG_AND_ANG, CVE_OP_MAG_AND_ANG_T)
//#define CVE_OP_TOF _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_TOF, CVE_OP_TOF_T)
#define CVE_OP_KCF_GET_YF _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_KCF_GET_YF, CVE_OP_KCF_GET_YF_T)
#define CVE_OP_KCF_GET_FEATURE \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_KCF_GET_FEATURE, CVE_OP_KCF_GET_FEATURE_T)
#define CVE_OP_KCF_TRAIN_AND_TRACK \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_KCF_TRAIN_AND_TRACK, CVE_OP_KCF_TRAIN_AND_TRACK_T)
#define CVE_OP_LINE_FILTER _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_LINE_FILTER, CVE_OP_LINE_FILTER_T)
#define CVE_OP_NOISE_REMOVE _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_NOISE_REMOVE, CVE_OP_NOISE_REMOVE_T)
#define CVE_OP_ADP_THRESH _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_ADP_THRESH, CVE_OP_ADP_THRESH_T)
#define CVE_OP_REDUCE _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_REDUCE, CVE_OP_REDUCE_T)
#define CVE_OP_PERSP_TRANS _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_PERSP_TRANS, CVE_OP_PERSP_TRANS_T)
#define CVE_OP_FAST_GUIDED_FILTER \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_FAST_GUIDED_FILTER, CVE_OP_FAST_GUIDE_FILTER_T)
//#define CVE_OP_TOF2_MATF _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_TOF2_MATF, CVE_OP_TOF2_T)
//#define CVE_OP_TOF2_PRE_PROC _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_TOF2_PRE_PROC, CVE_OP_TOF2_T)
//#define CVE_OP_TOF2_PST _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_TOF2_PST, CVE_OP_TOF2_T)
#define CVE_OP_HOG _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_HOG, CVE_OP_HOG_T)
#define CVE_OP_RESIZE _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_RESIZE, CVE_OP_RESIZE_T)
#define CVE_OP_SVM_KERNEL _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_SVM_KERNEL, CVE_OP_SVM_KERNEL_T)
#define CVE_OP_SVM_PREDICT _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_SVM_PREDICT, CVE_OP_SVM_PREDICT_T)
#define CVE_OP_RESHAPS _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_RESHAPS, CVE_OP_RESHAPE_T)
#define CVE_OP_IM2COL _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_IM2COL, CVE_OP_IM2COL_T)
#define CVE_OP_GEMM _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_GEMM, CVE_OP_GEMM_T)
#define CVE_OP_POOLING _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_POOLING, CVE_OP_POOLING_T)
#define CVE_OP_AIISP_TNR_PRE_PROC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AIISP_TNR_PRE_PROC, CVE_OP_AIISP_TNR_PRE_PROCESS_T)
#define CVE_OP_AIISP_TNR_POST_PROC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AIISP_TNR_POST_PROC, CVE_OP_AIISP_TNR_POST_PROCESS_T)
#define CVE_OP_AIISP_SNR_POST_PROC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AIISP_SNR_POST_PROC, CVE_OP_AIISP_SNR_POST_PROCESS_T)
#define CVE_OP_AIISP_TNR_MFNR_PROC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AIISP_TNR_MFNR_PROC, CVE_OP_AIISP_TNR_MFNR_PROCESS_T)
#define CVE_OP_AIISP_SNR_MFNR_PROC \
_IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_AIISP_SNR_MFNR_PROC, CVE_OP_AIISP_SNR_MFNR_PROCESS_T)
#define CVE_OP_QUERY _IOWR(IOC_TYPE_CVE, IOC_NR_CVE_OP_QUERY, CVE_OP_QUERY_T)
typedef enum {
CVE_OP_TYPE_DMA = 0,
CVE_OP_TYPE_FILTER = 1,
CVE_OP_TYPE_CSC = 2,
CVE_OP_TYPE_FILTER_AND_CSC = 3,
CVE_OP_TYPE_SOBEL = 4,
CVE_OP_TYPE_MAG_AND_ANG = 5,
CVE_OP_TYPE_MATCH_BG_MODEL = 6,
CVE_OP_TYPE_DILATE_AND_ERODE = 7,
CVE_OP_TYPE_THRESH = 8,
CVE_OP_TYPE_ALU = 9,
CVE_OP_TYPE_INTEG = 10,
CVE_OP_TYPE_HIST = 11,
CVE_OP_TYPE_THRESH_S16 = 12,
CVE_OP_TYPE_THRESH_U16 = 13,
CVE_OP_TYPE_16BIT_TO_8BIT = 14,
CVE_OP_TYPE_ORD_STAT_FILTER = 15,
CVE_OP_TYPE_MAP = 16,
CVE_OP_TYPE_EQUALIZE_HIST = 17,
CVE_OP_TYPE_NCC = 18,
CVE_OP_TYPE_CCL = 19,
CVE_OP_TYPE_GMM = 20,
CVE_OP_TYPE_CANNY_HYS_EDGE = 21,
CVE_OP_TYPE_LBP = 22,
CVE_OP_TYPE_NROM_GRAD = 23,
CVE_OP_TYPE_BULID_LK_OPTICAL_FLOW_PYR = 24,
CVE_OP_TYPE_LK_OPTIAL_FLOW_PRY = 25,
CVE_OP_TYPE_ST_CANDI_CORNER = 26,
CVE_OP_TYPE_SAD = 27,
CVE_OP_TYPE_GRAD_FG = 28,
CVE_OP_TYPE_UPDATE_BG_MODEL = 29,
CVE_OP_TYPE_TOF = 30,
CVE_OP_TYPE_KCF_GET_YF = 31,
CVE_OP_TYPE_KCF_GET_FEATURE = 32,
CVE_OP_TYPE_KCF_TRAIN_AND_TRACK = 33,
CVE_OP_TYPE_LINE_FILTER = 34,
CVE_OP_TYPE_NOISE_REMOVE = 35,
CVE_OP_TYPE_ADP_THRESH = 36,
CVE_OP_TYPE_REDUCE = 37,
CVE_OP_TYPE_PERSP_TRANS = 38,
CVE_OP_TYPE_FAST_GUIDED_FILTER = 39,
CVE_OP_TYPE_TOF2_MATF = 40,
CVE_OP_TYPE_TOF2_PRE_PROC = 41,
CVE_OP_TYPE_TOF2_PST = 42,
CVE_OP_TYPE_HOG = 43,
CVE_OP_TYPE_RESIZE = 44,
CVE_OP_TYPE_SVM_KERNEL = 45,
CVE_OP_TYPE_SVM_PREDICT = 46,
CVE_OP_TYPE_RESHAPS = 47,
CVE_OP_TYPE_IM2COL = 48,
CVE_OP_TYPE_GEMM = 49,
CVE_OP_TYPE_POOLING = 50,
CVE_OP_TYPE_AIISP_TNR_PRE_PROC = 51,
CVE_OP_TYPE_AIISP_TNR_POST_PROC = 52,
CVE_OP_TYPE_AIISP_SNR_POST_PROC = 53,
CVE_OP_TYPE_BUTT,
} cve_op_type_e;
typedef enum {
IOC_NR_CVE_OP_DMA,
IOC_NR_CVE_OP_LUMA_STAT,
IOC_NR_CVE_OP_FILTER,
IOC_NR_CVE_OP_CSC,
IOC_NR_CVE_OP_FILTER_AND_CSC,
IOC_NR_CVE_OP_DILATE,
IOC_NR_CVE_OP_ERODE,
IOC_NR_CVE_OP_THRESH,
IOC_NR_CVE_OP_SOBEL,
IOC_NR_CVE_OP_INTEG,
IOC_NR_CVE_OP_HIST,
IOC_NR_CVE_OP_NCC,
IOC_NR_CVE_OP_THRESH_S16,
IOC_NR_CVE_OP_THRESH_U16,
IOC_NR_CVE_OP_ORD_STAT_FILTER,
IOC_NR_CVE_OP_16BIT_TO_8BIT,
IOC_NR_CVE_OP_MATCH_BG_MODEL,
IOC_NR_CVE_OP_UPDATE_BG_MODEL,
IOC_NR_CVE_OP_GRAD_FG,
IOC_NR_CVE_OP_LBP,
IOC_NR_CVE_OP_GMM,
IOC_NR_CVE_OP_EQUALIZE_HIST,
IOC_NR_CVE_OP_CCL,
IOC_NR_CVE_OP_CANNY_HYS_EDGE,
IOC_NR_CVE_OP_ST_CANDI_CORNER,
IOC_NR_CVE_OP_SAD,
IOC_NR_CVE_OP_LK_OPTICAL_FLOW_PYR,
IOC_NR_CVE_OP_BUILD_LK_OPTICAL_FLOW_PYR,
IOC_NR_CVE_OP_MAP,
IOC_NR_CVE_OP_NORM_GRAD,
IOC_NR_CVE_OP_AND,
IOC_NR_CVE_OP_OR,
IOC_NR_CVE_OP_XOR,
IOC_NR_CVE_OP_SUB,
IOC_NR_CVE_OP_ADD,
IOC_NR_CVE_OP_ADD_MAP_255_TO1,
IOC_NR_CVE_OP_DOT,
IOC_NR_CVE_OP_MAG_AND_ANG,
IOC_NR_CVE_OP_TOF,
IOC_NR_CVE_OP_KCF_GET_YF,
IOC_NR_CVE_OP_KCF_GET_FEATURE,
IOC_NR_CVE_OP_KCF_TRAIN_AND_TRACK,
IOC_NR_CVE_OP_LINE_FILTER,
IOC_NR_CVE_OP_NOISE_REMOVE,
IOC_NR_CVE_OP_ADP_THRESH,
IOC_NR_CVE_OP_REDUCE,
IOC_NR_CVE_OP_PERSP_TRANS,
IOC_NR_CVE_OP_FAST_GUIDED_FILTER,
IOC_NR_CVE_OP_TOF2_MATF,
IOC_NR_CVE_OP_TOF2_PRE_PROC,
IOC_NR_CVE_OP_TOF2_PST,
IOC_NR_CVE_OP_HOG,
IOC_NR_CVE_OP_RESIZE,
IOC_NR_CVE_OP_SVM_KERNEL,
IOC_NR_CVE_OP_SVM_PREDICT,
IOC_NR_CVE_OP_RESHAPS,
IOC_NR_CVE_OP_IM2COL,
IOC_NR_CVE_OP_GEMM,
IOC_NR_CVE_OP_POOLING,
IOC_NR_CVE_OP_AIISP_TNR_PRE_PROC,
IOC_NR_CVE_OP_AIISP_TNR_POST_PROC,
IOC_NR_CVE_OP_AIISP_SNR_POST_PROC,
IOC_NR_CVE_OP_AIISP_TNR_MFNR_PROC,
IOC_NR_CVE_OP_AIISP_SNR_MFNR_PROC,
IOC_NR_CVE_OP_QUERY,
} ioc_nr_cve_op_type_e;
typedef enum {
CVE_ALU_SEL_SUB = 0,
CVE_ALU_SEL_OR = 1,
CVE_ALU_SEL_XOR = 2,
CVE_ALU_SEL_AND = 3,
CVE_ALU_SEL_ADD = 4,
CVE_ALU_SEL_ADD_MAP_255TO1 = 5,
CVE_ALU_SEL_DOT = 6,
} cve_alu_sel_e;
/* Dma type */
typedef enum {
CVE_MODE_DMA,
CVE_MODE_LUMA_STAT,
} CVE_DMA_OP_MODE_E;
/* Alu type */
typedef enum {
CVE_MODE_ERODE,
CVE_MODE_DILATE,
CVE_MODE_BERNSEN,
} CVE_ERODE_OR_DILATE_OP_MODE_E;
/* Alu type */
typedef enum {
CVE_ALU_MODE_AND = 0x0,
CVE_ALU_MODE_OR = 0x1,
CVE_ALU_MODE_XOR = 0x2,
CVE_ALU_MODE_ADD = 0x3,
CVE_ALU_MODE_SUB = 0x4,
CVE_ALU_MODE_ADD_MAP_255_TO1 = 0x5,
CVE_ALU_MODE_DOT = 0x6,
} CVE_ALU_OP_MODE_E;
typedef struct {
CVE_HANDLE cveHandle;
CVE_DATA_T stSrcDATA;
CVE_DST_DATA_T stDstDATA;
CVE_DMA_CTRL_T stDmaCtrl;
bool bInstant;
} CVE_OP_DMA_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_MEM_INFO_T stDstMem;
CVE_RECT_U16_T astCveLumaRect[CVE_LUMA_RECT_MAX];
CVE_LUMA_STAT_ARRAY_CTRL_T stLumaStatArrayCtrl;
bool bInstant;
} CVE_OP_LUAM_STAT_ARRAY_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_DST_MEM_INFO_T stDstMem;
CVE_FILTER_CTRL_T stFilterCtrl;
bool bInstant;
} CVE_OP_FILTER_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_CSC_CTRL_T stCscCtrl;
bool bInstant;
} CVE_OP_CSC_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_FILTER_AND_CSC_CTRL_T stFilterCscCtrl;
bool bInstant;
} CVE_OP_FILTER_AND_CSC_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_DILATE_CTRL_T stDilateCtrl;
bool bInstant;
} CVE_OP_DILATE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_ERODE_CTRL_T stErodeCtrl;
bool bInstant;
} CVE_OP_ERODE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_BERNSEN_CTRL_T stBernsenCtrl;
bool bInstant;
} CVE_OP_BERNSEN_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_THRESH_CTRL_T stThreshCtrl;
bool bInstant;
} CVE_OP_THRESH_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_EQUALIZE_HIST_CTRL_T stEqualizeHistCtrl;
bool bInstant;
} CVE_OP_EQUALIZE_HIST_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_INTEG_CTRL_T stIntegCtrl;
bool bInstant;
} CVE_OP_INTEG_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_MEM_INFO_T stDstMem;
CVE_HIST_CTRL_T stHistCtrl;
bool bInstant;
} CVE_OP_HIST_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_DST_MEM_INFO_T stBlob;
CVE_CCL_CTRL_T stCclCtrl;
bool bInstant;
} CVE_OP_CCL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrc;
CVE_DST_IMAGE_T stLabel;
CVE_DST_IMAGE_T stCandiCorner;
CVE_DST_MEM_INFO_T stCandiCornerPoint;
CVE_ST_CANDI_CORNER_CTRL_T stStCandiCornerCtrl;
bool bInstant;
} CVE_OP_ST_CANDI_CORNER_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_SRC_IMAGE_T stSrcImage2;
CVE_DST_MEM_INFO_T stDstmem;
CVE_NCC_CTRL_T stNccCtrl;
bool bInstant;
} CVE_OP_NCC_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_THRESH_S16_CTRL_T stThreshS16Ctrl;
bool bInstant;
} CVE_OP_THRESH_S16_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_THRESH_U16_CTRL_T stThreshU16Ctrl;
bool bInstant;
} CVE_OP_THRESH_U16_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_LBP_CTRL_T stLbpCtrl;
bool bInstant;
} CVE_OP_LBP_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_ORD_STAT_FILTER_CTRL_T stOrdStatFltCtrl;
bool bInstant;
} CVE_OP_ORD_STAT_FILTER_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_16BIT_TO_8BIT_CTRL_T st16BitTo8BitCtrl;
bool bInstant;
} CVE_OP_16BIT_TO_8BIT_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stCurImg;
CVE_SRC_IMAGE_T stPreImg;
CVE_MEM_INFO_T stBgModel;
CVE_DST_IMAGE_T stFg;
CVE_DST_IMAGE_T stBg;
CVE_DST_IMAGE_T stCurDiffBg;
CVE_DST_IMAGE_T stFrmDiff;
CVE_MATCH_BG_MODEL_CTRL_T stMatchBgModelCtrl;
bool bInstant;
} CVE_OP_MATCH_BG_MODEL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stCurImg;
CVE_MEM_INFO_T stBgModel1;
CVE_MEM_INFO_T stBgModel2;
CVE_DST_MEM_INFO_T stStatData;
CVE_UPDATE_BG_MODEL_CTRL_T stUpdateBgModelCtrl;
bool bInstant;
} CVE_OP_UPDATE_BG_MODEL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stFg;
CVE_SRC_IMAGE_T stCurGrad;
CVE_SRC_IMAGE_T stBgGrad;
CVE_DST_IMAGE_T stGradFg;
CVE_GRAD_FG_CTRL_T stGradFgCtrl;
bool bInstant;
} CVE_OP_GRAD_FG_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_SRC_IMAGE_T stFactor;
CVE_DST_IMAGE_T stFg;
CVE_DST_IMAGE_T stBg;
CVE_MEM_INFO_T stModel;
CVE_GMM_CTRL_T stGmmCtrl;
bool bInstant;
} CVE_OP_GMM_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stEdge;
CVE_DST_MEM_INFO_T stStack;
CVE_CANNY_HYS_EDGE_CTRL_T stCannyHysEdgeCtrl;
bool bInstant;
} CVE_OP_CANNY_HYS_EDGE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_SRC_IMAGE_T stSrcImage2;
CVE_DST_IMAGE_T stSad;
CVE_DST_IMAGE_T stThr;
CVE_SAD_CTRL_T stSadCtrl;
bool bInstant;
} CVE_OP_SAD_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T astSrcPrevPyr[4];
CVE_SRC_IMAGE_T astSrcNextPyr[4];
CVE_SRC_MEM_INFO_T stPrevPts;
CVE_MEM_INFO_T stNextPts;
CVE_DST_MEM_INFO_T stStatus;
CVE_DST_MEM_INFO_T stErr;
CVE_LK_OPTICAL_FLOW_PYR_CTRL_T stLkOptiFlowPyrCtrl;
bool bInstant;
} CVE_OP_LK_OPTICAL_FLOW_PYR_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcPyr;
CVE_DST_IMAGE_T astDstPyr[4];
CVE_BUILD_LK_OPTICAL_FLOW_PYR_CTRL_T stLkBuildOptiFlowPyrCtrl;
bool bInstant;
} CVE_OP_BUILD_LK_OPTICAL_FLOW_PYR_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_SRC_MEM_INFO_T stMap;
CVE_DST_IMAGE_T stDstImage;
CVE_MAP_CTRL_T stMapCtrl;
bool bInstant;
} CVE_OP_MAP_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstMag;
CVE_DST_IMAGE_T stDstAng;
CVE_MAG_AND_ANG_CTRL_T stMagAndAngCtrl;
bool bInstant;
} CVE_OP_MAG_AND_ANG_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_IMAGE_T stDst;
CVE_AND_CTRL_T stAndCtrl;
CVE_OR_CTRL_T stOrCtrl;
CVE_XOR_CTRL_T stXorCtrl;
CVE_DOT_CTRL_T stDotCtrl;
bool bInstant;
} CVE_OP_AND_T;
typedef CVE_OP_AND_T CVE_OP_OR_T;
typedef CVE_OP_AND_T CVE_OP_XOR_T;
typedef CVE_OP_AND_T CVE_OP_DOT_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_MEM_INFO_T stDstMem;
CVE_DST_IMAGE_T stDst;
CVE_SUB_CTRL_T stSubCtrl;
bool bInstant;
} CVE_OP_SUB_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_MEM_INFO_T stDstMem;
CVE_DST_IMAGE_T stDst;
CVE_ADD_CTRL_T stAddCtrl;
CVE_ADD_MAP_255_TO_1_CTRL_T stAddMap255To1Ctrl;
bool bInstant;
} CVE_OP_ADD_T;
typedef CVE_OP_ADD_T CVE_OP_ADD_MAP255TO1_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstH;
CVE_DST_IMAGE_T stDstV;
CVE_DST_IMAGE_T stDstHV;
CVE_NORM_GRAD_CTRL_T stNormGradCtrl;
bool bInstant;
} CVE_OP_NORM_GRAD_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstH;
CVE_DST_IMAGE_T stDstV;
CVE_SOBEL_CTRL_T stSobelCtrl;
bool bInstant;
} CVE_OP_SOBEL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_MEM_INFO_T stSrcMem;
CVE_DST_MEM_INFO_T stDstMem;
CVE_KCF_GET_YF_CTRL_T stKcfGetYfCtrl;
bool bInstant;
} CVE_OP_KCF_GET_YF_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_MEM_INFO_T stDstMem0;
CVE_DST_MEM_INFO_T stDstMem1;
CVE_KCF_GET_FEATURE_CTRL_T stKcfGetFeatureCtrl;
bool bInstant;
} CVE_OP_KCF_GET_FEATURE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_MEM_INFO_T stSrcMem1;
CVE_SRC_MEM_INFO_T stSrcMem2;
CVE_SRC_MEM_INFO_T stSrcMem3;
CVE_DST_MEM_INFO_T stDstMem0;
CVE_DST_MEM_INFO_T stDstMem1;
CVE_DST_MEM_INFO_T stDstMem2;
CVE_KCF_TRAIN_AND_TRACK_CTRL_T stKcfTrainAndTrackCtrl;
bool bInstant;
} CVE_OP_KCF_TRAIN_AND_TRACK_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_LINE_FILTER_CTRL_T stLineFilterCtrl;
bool bInstant;
} CVE_OP_LINE_FILTER_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_NOISE_REMOVE_CTRL_T stNoiseRemoveCtrl;
bool bInstant;
} CVE_OP_NOISE_REMOVE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_IMAGE_T stDstImage;
CVE_ADP_THRESH_CTRL_T stAdpThreshCtrl;
bool bInstant;
} CVE_OP_ADP_THRESH_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_MEM_INFO_T stDstMem0;
CVE_DST_MEM_INFO_T stDstMem1;
CVE_DST_MEM_INFO_T stDstMem2;
CVE_REDUCE_CTRL_T stReduceCtrl;
bool bInstant;
} CVE_OP_REDUCE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_PERSP_TRANS_CTRL_T stPerspTransCtrl;
bool bInstant;
} CVE_OP_PERSP_TRANS_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_IMAGE_T stDstImage0;
CVE_DST_IMAGE_T stDstImage1;
CVE_DST_IMAGE_T stDstImage2;
CVE_FAST_GUIDE_FILTER_CTRL_T stFastGuideFilterCtrl;
bool bInstant;
} CVE_OP_FAST_GUIDE_FILTER_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_SRC_MEM_INFO_T stSrcMem;
CVE_DST_IMAGE_T stDstImage;
CVE_HOG_CTRL_T stHogCtrl;
bool bInstant;
} CVE_OP_HOG_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_DST_IMAGE_T stDstImage;
CVE_DST_IMAGE_T stDstImage1;
CVE_RESIZE_CTRL_T stResizeCtrl;
bool bInstant;
} CVE_OP_RESIZE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_MEM_INFO_T stSrcMem0;
CVE_SRC_MEM_INFO_T stSrcMem1;
CVE_DST_MEM_INFO_T stDstMem;
CVE_SVM_KERNEL_CTRL_T stSvmKernelCtrl;
bool bInstant;
} CVE_OP_SVM_KERNEL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_MEM_INFO_T stSrcMem0;
CVE_SRC_MEM_INFO_T stSrcMem1;
CVE_DST_MEM_INFO_T stDstMem0;
CVE_DST_MEM_INFO_T stDstMem1;
CVE_SVM_PREDICT_CTRL_T stSvmPredictCtrl;
bool bInstant;
} CVE_OP_SVM_PREDICT_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_RESHAPE_CTRL_T stReShapeCtrl;
bool bInstant;
} CVE_OP_RESHAPE_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage;
CVE_DST_IMAGE_T stDstImage;
CVE_IM2COL_CTRL_T stImToColCtrl;
bool bInstant;
} CVE_OP_IM2COL_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_SRC_IMAGE_T stSrcImage0;
CVE_SRC_IMAGE_T stSrcImage1;
CVE_SRC_IMAGE_T stSrcImage2;
CVE_DST_IMAGE_T stDstImage;
CVE_GEMM_CTRL_T stGemmCtrl;
bool bInstant;
} CVE_OP_GEMM_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_IMAGE_T stSrcImage;
CVE_IMAGE_T stDstImage;
CVE_POOLING_CTRL_T stPoolingCtrl;
bool bInstant;
} CVE_OP_POOLING_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_RAW_AIISP_T stSrcRaw0;
CVE_RAW_AIISP_T stSrcRaw1;
CVE_IMAGE_T stDstImage;
CVE_AIISP_TNR_PRE_PROCESS_CTRL_T stAiIspTnrPreProcessCtrl;
bool bInstant;
} CVE_OP_AIISP_TNR_PRE_PROCESS_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_RAW_AIISP_T stSrcRaw0;
CVE_RAW_AIISP_T stSrcRaw1;
CVE_SRC_IMAGE_T stSrcImage2;
CVE_IMAGE_T stSrcImage3;
CVE_IMAGE_T stDstImage0;
CVE_RAW_AIISP_T stDstRaw1;
CVE_DST_IMAGE_T stDstImage2;
CVE_DST_IMAGE_T stDstImage3;
CVE_AIISP_TNR_POST_PROCESS_CTRL_T stAiIspTnrPostProcessCtrl;
bool bInstant;
} CVE_OP_AIISP_TNR_POST_PROCESS_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_IMAGE_T stSrcImage0;
CVE_IMAGE_T stSrcImage1;
CVE_SRC_IMAGE_T stSrcImage2;
CVE_RAW_AIISP_T stDstRaw;
CVE_AIISP_SNR_POST_PROCESS_CTRL_T stAiIspSnrPostProcessCtrl;
bool bInstant;
} CVE_OP_AIISP_SNR_POST_PROCESS_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_RAW_AIISP_T stSrcRaw;
CVE_IMAGE_T stDstImage;
CVE_AIISP_TNR_MFNR_PROCESS_CTRL_T stAiIspTnrMfnrProcessCtrl;
bool bInstant;
} CVE_OP_AIISP_TNR_MFNR_PROCESS_T;
typedef struct {
CVE_HANDLE cveHandle;
CVE_RAW_AIISP_T stSrcRaw;
CVE_RAW_AIISP_T stDstRaw;
CVE_AIISP_SNR_MFNR_PROCESS_CTRL_T stAiIspSnrMfnrProcessCtrl;
bool bInstant;
} CVE_OP_AIISP_SNR_MFNR_PROCESS_T;
typedef struct {
CVE_HANDLE cveHandle;
bool bBlock;
bool bFinish;
} CVE_OP_QUERY_T;
typedef struct {
struct device *dev;
phys_addr_t phys_start;
unsigned long virt_start;
unsigned long size;
} cve_dma_buffer_t;
typedef struct {
unsigned long src_addr[CVE_SRC_MAX];
unsigned long dst_addr[CVE_DST_MAX];
unsigned int src_stride[CVE_SRC_MAX];
unsigned int dst_stride[CVE_DST_MAX];
unsigned short src_width;
unsigned short src_height;
unsigned short dst_width;
unsigned short dst_height;
unsigned short xstart;
unsigned short ystart;
unsigned short xSize;
unsigned short ySize;
} cve_comm_init_params_t;
typedef struct {
int task_id;
bool task_started;
unsigned long virt_addr;
unsigned long phys_addr;
unsigned int total_cmd_num;
unsigned int total_cmd_line_num;
bool bInvalid;
struct list_head cmd_list;
struct list_head list;
} cve_task_desc_t;
typedef struct {
cve_op_type_e op_type;
unsigned int op_mode;
CVE_HANDLE cveHandle;
unsigned long virt_addr;
unsigned long phys_addr;
unsigned int cmd_line_num;
unsigned int instant;
struct list_head list;
cve_task_desc_t *task_desc;
} cve_cmd_desc_t;
typedef struct {
unsigned long phys_start;
unsigned long virt_start;
unsigned int task_cmdq_index;
unsigned int wait_cmdq_num;
unsigned int total_cmdq_max;
unsigned int total_task_max;
unsigned int task_instant;
cve_task_desc_t *task_descs;
struct list_head idle_list;
struct list_head wait_list;
cve_cmd_desc_t *cmd_descs;
unsigned int cmd_descs_index;
} cve_cq_desc_t;
typedef struct {
int cmd_handle;
unsigned int cmd_finish_cnt;
unsigned int cur_finish_cmd_id;
unsigned int cmd_handle_wrap;
unsigned int finish_cmd_wrap;
} cve_task_info_t;
typedef struct {
unsigned long phys_start;
unsigned long virt_start;
unsigned int length;
unsigned int cmd_size;
unsigned int cur_index;
unsigned int index_max;
struct semaphore cmd_buf_sema;
} cve_cmd_buf_t;
typedef struct {
bool cve_dbg_run_cycles_en;
bool cve_ccl_dbg_dis_sec_pass_en;
bool cve_id_stat_en;
bool cve_timeout_en;
bool cve_ute_stat_en;
unsigned int cve_ute_cycles;
unsigned int cve_once_run_cycles;
} cve_run_time_cycle_t;
typedef struct {
unsigned int dma;
unsigned int luma_stat;
unsigned int filter;
unsigned int csc;
unsigned int filter_and_csc;
unsigned int sobel;
unsigned int mag_and_ang;
unsigned int match_bg_model;
unsigned int update_bg_model;
unsigned int dilate;
unsigned int erode;
unsigned int bernsen;
unsigned int thresh;
unsigned int and;
unsigned int or ;
unsigned int xor ;
unsigned int sub;
unsigned int add;
unsigned int add_map_255_to_1;
unsigned int dot;
unsigned int integ;
unsigned int hist;
unsigned int thresh_s16;
unsigned int thresh_u16;
unsigned int _16bit_to_8bit;
unsigned int ord_stat_filter;
unsigned int map;
unsigned int equalize_hist;
unsigned int ncc;
unsigned int ccl;
unsigned int gmm;
unsigned int canny_edge;
unsigned int lbp;
unsigned int nrom_grad;
unsigned int bulid_lk_optical_flow_pyr;
unsigned int lk_optial_flow_pry;
unsigned int st_candi_corner;
unsigned int sad;
unsigned int grad_fg;
unsigned int kcf_get_yf;
unsigned int kcf_get_feature;
unsigned int kcf_train_and_track;
unsigned int line_filter;
unsigned int noise_remove;
unsigned int adp_thresh;
unsigned int reduce;
unsigned int persp_trans;
unsigned int fast_guided_filter;
unsigned int hog;
unsigned int resize;
unsigned int svm_kernel;
unsigned int svm_predict;
unsigned int reshaps;
unsigned int im2col;
unsigned int gemm;
unsigned int pooling;
unsigned int aiisp_tnr_pre_proc;
unsigned int aiisp_tnr_post_proc;
unsigned int aiisp_snr_post_proc;
} cve_op_info_t;
typedef struct {
bool last_instant;
unsigned int last_int_cnt_per_sec;
unsigned int max_int_cnt_per_sec;
unsigned int total_int_cnt_last_sec;
unsigned int total_int_cnt;
unsigned int query_timeout_cnt;
unsigned int system_timeout_cnt;
unsigned int last_int_cost_time;
unsigned int int_cost_time_max;
unsigned int last_persec_int_cost_time;
unsigned int persec_int_cost_time_max;
unsigned int total_int_cost_time;
unsigned int total_cve_run_time;
unsigned int op_cve_run_time;
cve_op_info_t cve_op_cycle;
cve_run_time_cycle_t cve_cycle;
} cve_run_time_info_t;
typedef struct {
cve_task_info_t task_info;
cve_run_time_info_t run_time_info;
cve_op_info_t invoke_count;
struct semaphore cve_sema;
struct wait_queue_head cve_wait;
cve_task_desc_t *task_desc_outp;
cve_task_desc_t *cq0_task_desc;
cve_task_desc_t *cq1_task_desc;
cve_cq_desc_t cq_desc;
cve_dma_buffer_t cve_cq_buffer;
cve_cmd_buf_t cmd_bufs;
cve_dma_buffer_t cve_cmd_buffer;
} cve_context_t;
#endif /* __CVE_H__ */