ss928_framework/ss928sdk/include/ot_common_vb.h

131 lines
3.9 KiB
C
Raw Permalink Normal View History

2024-12-16 13:31:45 +08:00
/*
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
*/
#ifndef OT_COMMON_VB_H
#define OT_COMMON_VB_H
#include "ot_type.h"
#include "ot_errno.h"
#include "ot_debug.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef td_u32 ot_vb_pool;
typedef td_u32 ot_vb_blk;
#define OT_VB_INVALID_POOL_ID (-1U)
#define OT_VB_INVALID_HANDLE (-1U)
#define OT_VB_MAX_COMMON_POOLS 16
#define OT_VB_MAX_MOD_COMMON_POOLS 16
/* user ID for VB */
#define OT_VB_MAX_USER OT_VB_UID_BUTT
#define OT_RESERVE_MMZ_NAME "window"
typedef enum {
OT_VB_UID_VI = 0,
OT_VB_UID_VO = 1,
OT_VB_UID_VGS = 2,
OT_VB_UID_VENC = 3,
OT_VB_UID_VDEC = 4,
OT_VB_UID_H265E = 5,
OT_VB_UID_H264E = 6,
OT_VB_UID_JPEGE = 7,
OT_VB_UID_JPEGD = 8,
OT_VB_UID_VPSS = 9,
OT_VB_UID_DIS = 10,
OT_VB_UID_USER = 11,
OT_VB_UID_PCIV = 12,
OT_VB_UID_AI = 13,
OT_VB_UID_AENC = 14,
OT_VB_UID_RC = 15,
OT_VB_UID_VFMW = 16,
OT_VB_UID_GDC = 17,
OT_VB_UID_AVS = 18,
OT_VB_UID_DPU_RECT = 19,
OT_VB_UID_DPU_MATCH = 20,
OT_VB_UID_MCF = 21,
OT_VB_UID_VDA = 22,
OT_VB_UID_VPP = 23,
OT_VB_UID_COMMON = 24,
OT_VB_UID_UVC = 25,
OT_VB_UID_VDEC_ADAPT = 26,
OT_VB_UID_BUTT = 27,
} ot_vb_uid;
typedef enum {
OT_VB_REMAP_MODE_NONE = 0, /* no remap */
OT_VB_REMAP_MODE_NOCACHE = 1, /* no cache remap */
OT_VB_REMAP_MODE_CACHED = 2, /* cache remap, if you use this mode, you should flush cache by yourself */
OT_VB_REMAP_MODE_BUTT
} ot_vb_remap_mode;
/* General common pool use this owner id, module common pool use VB_UID as owner id */
#define OT_POOL_OWNER_COMMON (-1)
/* Private pool use this owner id */
#define OT_POOL_OWNER_PRIVATE (-2)
#define OT_POOL_OWNER_MODULE (-3)
#define OT_POOL_OWNER_USER (-4)
typedef struct {
td_u64 blk_size;
td_u32 blk_cnt;
ot_vb_remap_mode remap_mode;
td_char mmz_name[OT_MAX_MMZ_NAME_LEN];
} ot_vb_pool_cfg;
typedef struct {
td_u32 max_pool_cnt;
ot_vb_pool_cfg common_pool[OT_VB_MAX_COMMON_POOLS];
} ot_vb_cfg;
typedef struct {
td_bool is_common_pool;
td_u32 blk_cnt;
td_u32 free_blk_cnt;
} ot_vb_pool_status;
typedef struct {
td_u32 supplement_cfg;
} ot_vb_supplement_cfg;
typedef struct {
td_u32 blk_cnt;
td_u64 blk_size;
td_u64 pool_size;
td_phys_addr_t pool_phy_addr;
ot_vb_remap_mode remap_mode;
} ot_vb_pool_info;
#define OT_VB_SUPPLEMENT_JPEG_MASK 0x1
#define OT_VB_SUPPLEMENT_MOTION_DATA_MASK 0x2
#define OT_VB_SUPPLEMENT_DNG_MASK 0x4
#define OT_VB_SUPPLEMENT_MISC_MASK 0x8
#define OT_VB_SUPPLEMENT_BNR_MOT_MASK 0x10
#define OT_ERR_VB_NULL_PTR OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NULL_PTR)
#define OT_ERR_VB_NO_MEM OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NO_MEM)
#define OT_ERR_VB_NO_BUF OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NO_BUF)
#define OT_ERR_VB_UNEXIST OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_UNEXIST)
#define OT_ERR_VB_ILLEGAL_PARAM OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_ILLEGAL_PARAM)
#define OT_ERR_VB_NOT_READY OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_READY)
#define OT_ERR_VB_BUSY OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_BUSY)
#define OT_ERR_VB_NOT_PERM OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_PERM)
#define OT_ERR_VB_SIZE_NOT_ENOUGH OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_SIZE_NOT_ENOUGH)
#define OT_ERR_VB_NOT_SUPPORT OT_DEFINE_ERR(OT_ID_VB, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_SUPPORT)
#define ot_trace_vb(level, fmt, ...) \
OT_TRACE(level, OT_ID_VB, "[Func]:%s [Line]:%d [Info]:" fmt, __FUNCTION__, __LINE__, ##__VA_ARGS__)
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* OT_COMMON_VB_H */