192 lines
6.6 KiB
C
192 lines
6.6 KiB
C
/*******************************************************************************************
|
|
# Copyright (c) 2024 Quaming Intelligent Technology Co., Ltd.
|
|
# All Rights Reserved.
|
|
# Confidential and Proprietary - Quaming Intelligent Technology Co., Ltd.
|
|
#*******************************************************************************************/
|
|
#ifndef __QUA_MM_SYSTEM_H__
|
|
#define __QUA_MM_SYSTEM_H__
|
|
|
|
#include "common/qua_mm_common.h"
|
|
|
|
#define QUA_VB_MAX_POOL_NAME_LEN 32
|
|
#define QUA_VB_MAX_POOLS 256
|
|
#define QUA_VB_MAX_COMMON_POOLS 16
|
|
#define QUA_VB_INVALID_POOLID (-1U)
|
|
#define QUA_VB_INVALID_HANDLE (-1U)
|
|
|
|
typedef struct qua_vb_config {
|
|
QUA_U32 max_pool_cnt;
|
|
struct {
|
|
QUA_U32 block_size;
|
|
QUA_U32 block_cnt;
|
|
QUA_CHAR pool_name[QUA_VB_MAX_POOL_NAME_LEN];
|
|
} common_pools[QUA_VB_MAX_COMMON_POOLS];
|
|
} qua_vb_config_t;
|
|
|
|
typedef struct qua_version_info
|
|
{
|
|
QUA_CHAR *quamm_version;
|
|
QUA_U32 mpp_build_date;
|
|
QUA_U32 mpp_sw_version;
|
|
QUA_U32 mpp_hw_version;
|
|
} qua_version_info_t;
|
|
|
|
typedef enum qua_mpp_mod {
|
|
QUA_MPP_MOD_CMPI = 0,
|
|
QUA_MPP_MOD_VB = 1,
|
|
QUA_MPP_MOD_SYS = 2,
|
|
QUA_MPP_MOD_RGN = 3,
|
|
QUA_MPP_MOD_CHNL = 4,
|
|
QUA_MPP_MOD_VDEC = 5,
|
|
QUA_MPP_MOD_GROUP = 6,
|
|
QUA_MPP_MOD_VPSS = 7,
|
|
QUA_MPP_MOD_VENC = 8,
|
|
QUA_MPP_MOD_VDA = 9,
|
|
QUA_MPP_MOD_H264E = 10,
|
|
QUA_MPP_MOD_JPEGED = 11,
|
|
QUA_MPP_MOD_MPEG4E = 12,
|
|
QUA_MPP_MOD_H264D = 13,
|
|
QUA_MPP_MOD_JPEGD = 14,
|
|
QUA_MPP_MOD_VOU = 15,
|
|
QUA_MPP_MOD_VIU = 16,
|
|
QUA_MPP_MOD_DSU = 17,
|
|
QUA_MPP_MOD_VALG = 18,
|
|
QUA_MPP_MOD_RC = 19,
|
|
QUA_MPP_MOD_AIO = 20,
|
|
QUA_MPP_MOD_AI = 21,
|
|
QUA_MPP_MOD_AO = 22,
|
|
QUA_MPP_MOD_AENC = 23,
|
|
QUA_MPP_MOD_ADEC = 24,
|
|
QUA_MPP_MOD_AVENC = 25,
|
|
QUA_MPP_MOD_PCIV = 26,
|
|
QUA_MPP_MOD_PCIVFMW = 27,
|
|
QUA_MPP_MOD_ISP = 28,
|
|
QUA_MPP_MOD_IVE = 29,
|
|
QUA_MPP_MOD_DCCM = 31,
|
|
QUA_MPP_MOD_DCCS = 32,
|
|
QUA_MPP_MOD_PROC = 33,
|
|
QUA_MPP_MOD_LOG = 34,
|
|
QUA_MPP_MOD_MST_LOG = 35,
|
|
QUA_MPP_MOD_VD = 36,
|
|
QUA_MPP_MOD_VCMP = 38,
|
|
QUA_MPP_MOD_FB = 39,
|
|
QUA_MPP_MOD_HDMI = 40,
|
|
QUA_MPP_MOD_VOIE = 41,
|
|
QUA_MPP_MOD_TDE = 42,
|
|
QUA_MPP_MOD_USR = 43,
|
|
QUA_MPP_MOD_VEDU = 44,
|
|
QUA_MPP_MOD_VGS = 45,
|
|
QUA_MPP_MOD_H265E = 46,
|
|
QUA_MPP_MOD_FD = 47,
|
|
QUA_MPP_MOD_ODT = 48,
|
|
QUA_MPP_MOD_VQA = 49,
|
|
QUA_MPP_MOD_LPR = 50,
|
|
QUA_MPP_MOD_FISHEYE = 51,
|
|
QUA_MPP_MOD_VPPU = 52,
|
|
} qua_mpp_mod_t;
|
|
|
|
typedef enum qua_mpp_obj
|
|
{
|
|
QUA_OBJ_NONE = 0,
|
|
QUA_OBJ_VICAP = 1,
|
|
QUA_OBJ_ISP = 2,
|
|
QUA_OBJ_VPU_VI = 3,
|
|
QUA_OBJ_VPU_VO = 4,
|
|
QUA_OBJ_VPU_BGM = 5,
|
|
QUA_OBJ_ENC = 6,
|
|
QUA_OBJ_JPEG = 7,
|
|
QUA_OBJ_BGM = 8,
|
|
QUA_OBJ_NN = 9,
|
|
QUA_OBJ_VOU = 10,
|
|
QUA_OBJ_VPPU = 11,
|
|
QUA_OBJ_VDEC = 12,
|
|
QUA_OBJ_JPEGD = 13,
|
|
QUA_OBJ_VDSP = 14,
|
|
} qua_mpp_obj_t;
|
|
|
|
typedef struct qua_mpp_chn_t {
|
|
union {
|
|
qua_mpp_mod_t mod;
|
|
qua_mpp_obj_t obj;
|
|
};
|
|
QUA_S32 dev;
|
|
QUA_S32 chn;
|
|
} qua_mpp_chn_t;
|
|
|
|
typedef QUA_U32 QUA_VB_POOL;
|
|
typedef QUA_U32 QUA_VB_BLK;
|
|
|
|
typedef enum qua_vb_uid
|
|
{
|
|
QUA_VB_UID_VIU = 0,
|
|
QUA_VB_UID_VOU = 1,
|
|
QUA_VB_UID_VGS = 2,
|
|
QUA_VB_UID_VENC = 3,
|
|
QUA_VB_UID_VDEC = 4,
|
|
QUA_VB_UID_VDA = 5,
|
|
QUA_VB_UID_H264E = 6,
|
|
QUA_VB_UID_JPEGED = 7,
|
|
QUA_VB_UID_MPEG4E = 8,
|
|
QUA_VB_UID_H264D = 9,
|
|
QUA_VB_UID_JPEGD = 10,
|
|
QUA_VB_UID_MPEG4D = 11,
|
|
QUA_VB_UID_VPSS = 12,
|
|
QUA_VB_UID_GRP = 13,
|
|
QUA_VB_UID_MPI = 14,
|
|
QUA_VB_UID_PCIV = 15,
|
|
QUA_VB_UID_AI = 16,
|
|
QUA_VB_UID_AENC = 17,
|
|
QUA_VB_UID_RC = 18,
|
|
QUA_VB_UID_VFMW = 19,
|
|
QUA_VB_UID_USER = 20,
|
|
QUA_VB_UID_H265E = 21,
|
|
QUA_VB_UID_BGM = 22,
|
|
QUA_VB_UID_BGMX = 23,
|
|
QUA_VB_UID_BGMSW = 24,
|
|
QUA_VB_UID_VPPU = 25,
|
|
QUA_VB_UID_BUTT
|
|
} qua_vb_uid_t;
|
|
|
|
typedef struct qua_mm_system_ops_t {
|
|
struct qua_mm_system_t system;
|
|
|
|
QUA_S32 (*sys_init)(qua_vb_config_t *vb_config);
|
|
QUA_S32 (*sys_bind)(qua_mpp_chn_t *src_chn, qua_mpp_chn_t *dst_chn);
|
|
QUA_S32 (*sys_unbind)(qua_mpp_chn_t *src_chn, qua_mpp_chn_t *dst_chn);
|
|
QUA_S32 (*sys_unbind_by_src)(qua_mpp_chn_t *src_chn);
|
|
QUA_S32 (*sys_unbind_by_dst)(qua_mpp_chn_t *dst_chn);
|
|
QUA_S32 (*sys_get_bind_by_dst)(qua_mpp_chn_t *dst_chn, qua_mpp_chn_t *src_chn);
|
|
QUA_U32 (*sys_get_chipid)();
|
|
QUA_S32 (*sys_set_reg)(QUA_ULONG phy_addr, QUA_U32 value);
|
|
QUA_S32 (*sys_get_reg)(QUA_ULONG phy_addr, QUA_U32 *value);
|
|
QUA_VOID_PTR (*sys_mmap)(QUA_ULONG phy_addr, QUA_U32 size);
|
|
QUA_VOID_PTR (*sys_mmap_cache)(QUA_ULONG phy_addr, QUA_U32 size);
|
|
QUA_S32 (*sys_munmap)(QUA_VOID_PTR virt_addr, QUA_U32 size);
|
|
QUA_S32 (*sys_mflush_cache)(QUA_ULONG phy_addr, QUA_VOID_PTR virt_addr, QUA_U32 size);
|
|
QUA_S32 (*sys_mmz_alloc)(const QUA_CHAR *mmb_name, const QUA_CHAR *mmz_zone, QUA_U32 size,
|
|
QUA_ULONG *phy_addr, QUA_VOID_PTR *virt_addr);
|
|
QUA_S32 (*sys_mmz_alloc_cached)(const QUA_CHAR *mmb_name, const QUA_CHAR *mmz_zone, QUA_U32 size,
|
|
QUA_ULONG *phy_addr, QUA_VOID_PTR *virt_addr);
|
|
QUA_S32 (*sys_mmz_flush_cache)(QUA_ULONG phy_addr, QUA_VOID_PTR virt_addr, QUA_U32 size);
|
|
QUA_S32 (*sys_mmz_invalidate_cache)(QUA_ULONG phy_addr, QUA_VOID_PTR virt_addr, QUA_U32 size);
|
|
QUA_S32 (*sys_mmz_free)(QUA_ULONG phy_addr, QUA_VOID_PTR virt_addr);
|
|
QUA_VB_POOL (*vb_create_pool)(QUA_U32 blk_size, QUA_U32 blk_cnt,const QUA_CHAR *mmz_zone);
|
|
QUA_S32 (*vb_destroy_pool)(QUA_VB_POOL pool);
|
|
QUA_VB_BLK (*vb_get_block)(QUA_VB_POOL pool, QUA_U32 blk_size,const QUA_CHAR *mmz_zone);
|
|
QUA_S32 (*vb_release_block)(QUA_VB_BLK block);
|
|
QUA_U64 (*vb_handle_to_phyaddr)(QUA_VB_BLK block);
|
|
QUA_VB_POOL (*vb_handle_to_poolid)(QUA_VB_BLK block);
|
|
QUA_S32 (*vb_inquire_user_cnt)(QUA_VB_BLK block);
|
|
QUA_S32 (*vb_mmap_pool)(QUA_VB_POOL pool);
|
|
QUA_S32 (*vb_munmap_pool)(QUA_VB_POOL pool);
|
|
QUA_S32 (*vb_get_block_virtaddr)(QUA_VB_POOL pool, QUA_U64 phy_addr, QUA_VOID_PTR *virt_addr);
|
|
QUA_VB_POOL (*vb_create_virt_pool)(QUA_U32 blk_cnt, const QUA_CHAR *mmz_zone);
|
|
QUA_VB_BLK (*vb_add_block)(QUA_VB_POOL pool, QUA_U64 phy_addr, QUA_U32 size);
|
|
QUA_S32 (*clk_enable)(QUA_CHAR *clk_name);
|
|
QUA_S32 (*clk_disable)(QUA_CHAR *clk_name);
|
|
QUA_S32 (*clk_set_rate)(QUA_CHAR *clk_name, QUA_ULONG freq);
|
|
QUA_S32 (*clk_get_rate)(QUA_CHAR *clk_name, QUA_ULONG *freq);
|
|
} qua_mm_system_ops_t;
|
|
|
|
#endif
|