xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_mb.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */
2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun #ifndef INCLUDE_RT_MPI_RK_COMM_MB_H_
5*4882a593Smuzhiyun #define INCLUDE_RT_MPI_RK_COMM_MB_H_
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #include "rk_type.h"
8*4882a593Smuzhiyun #include "rk_errno.h"
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifdef __cplusplus
11*4882a593Smuzhiyun #if __cplusplus
12*4882a593Smuzhiyun extern "C" {
13*4882a593Smuzhiyun #endif
14*4882a593Smuzhiyun #endif
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun typedef enum rkMB_UID_E {
17*4882a593Smuzhiyun     MB_UID_VI = 0,
18*4882a593Smuzhiyun     MB_UID_VO = 1,
19*4882a593Smuzhiyun     MB_UID_VGS = 2,
20*4882a593Smuzhiyun     MB_UID_VENC = 3,
21*4882a593Smuzhiyun     MB_UID_VDEC = 4,
22*4882a593Smuzhiyun     MB_UID_VPSS = 5,
23*4882a593Smuzhiyun     MB_UID_AI = 6,
24*4882a593Smuzhiyun     MB_UID_AENC = 7,
25*4882a593Smuzhiyun     MB_UID_ADEC = 8,
26*4882a593Smuzhiyun     MB_UID_AVS = 9,
27*4882a593Smuzhiyun     MB_UID_BUTT = 10
28*4882a593Smuzhiyun } MB_UID_E;
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun #define MB_INVALID_POOLID              (-1U)
31*4882a593Smuzhiyun #define MB_INVALID_HANDLE              NULL
32*4882a593Smuzhiyun 
33*4882a593Smuzhiyun #define MB_MAX_COMM_POOLS              16
34*4882a593Smuzhiyun #define MB_MAX_MOD_COMM_POOLS          16
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun #define MB_MAX_COUNT                   10240
37*4882a593Smuzhiyun 
38*4882a593Smuzhiyun /* Generall common pool use this owner id, module common pool use VB_UID as owner id */
39*4882a593Smuzhiyun #define POOL_OWNER_COMMON              -1
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun /* Private pool use this owner id */
42*4882a593Smuzhiyun #define POOL_OWNER_PRIVATE             -2
43*4882a593Smuzhiyun 
44*4882a593Smuzhiyun typedef RK_U32 MB_POOL;
45*4882a593Smuzhiyun typedef void * MB_BLK;
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun typedef enum rkMB_BUF_SYNC_TYPE_E {
48*4882a593Smuzhiyun     MB_BUF_SYNC_TYPE_READ = 0,
49*4882a593Smuzhiyun     MB_BUF_SYNC_TYPE_WRITE,
50*4882a593Smuzhiyun     MB_BUF_SYNC_TYPE_RW,
51*4882a593Smuzhiyun } MB_BUF_SYNC_TYPE_E;
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun typedef enum rkMB_ALLOC_TYPE {
54*4882a593Smuzhiyun     MB_ALLOC_TYPE_UNUSED = -1,
55*4882a593Smuzhiyun     MB_ALLOC_TYPE_DMA = 0,
56*4882a593Smuzhiyun     MB_ALLOC_TYPE_MALLOC,
57*4882a593Smuzhiyun     MB_ALLOC_TYPE_MAX,
58*4882a593Smuzhiyun } MB_ALLOC_TYPE_E;
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun typedef enum rkMB_REMAP_MODE_E {
61*4882a593Smuzhiyun     MB_REMAP_MODE_NONE = 0, /* no remap */
62*4882a593Smuzhiyun     MB_REMAP_MODE_NOCACHE = 1 << 8, /* no cache remap */
63*4882a593Smuzhiyun     MB_REMAP_MODE_CACHED = 1 << 9,  /* cache remap, if you use this mode, you should flush cache by yourself */
64*4882a593Smuzhiyun     MB_REMAP_MODE_BUTT
65*4882a593Smuzhiyun } MB_REMAP_MODE_E;
66*4882a593Smuzhiyun 
67*4882a593Smuzhiyun typedef enum rkMB_DMA_TYPE_E {
68*4882a593Smuzhiyun     MB_DMA_TYPE_NONE = 0,       /* Physically Non-Continuous memory default */
69*4882a593Smuzhiyun     MB_DMA_TYPE_CMA = 1 << 12,  /* Physically Continuous memory */
70*4882a593Smuzhiyun     MB_DMA_TYPE_BUTT
71*4882a593Smuzhiyun } MB_DMA_TYPE_E;
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun typedef struct rkMB_POOL_CONFIG_S {
74*4882a593Smuzhiyun     RK_U64 u64MBSize;
75*4882a593Smuzhiyun     RK_U32 u32MBCnt;
76*4882a593Smuzhiyun     MB_REMAP_MODE_E enRemapMode;
77*4882a593Smuzhiyun     MB_ALLOC_TYPE_E enAllocType;
78*4882a593Smuzhiyun     MB_DMA_TYPE_E enDmaType;
79*4882a593Smuzhiyun     RK_BOOL bPreAlloc;
80*4882a593Smuzhiyun } MB_POOL_CONFIG_S;
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun typedef struct rkMB_CONFIG_S {
83*4882a593Smuzhiyun     RK_U32 u32MaxPoolCnt;
84*4882a593Smuzhiyun     MB_POOL_CONFIG_S astCommPool[MB_MAX_COMM_POOLS];
85*4882a593Smuzhiyun } MB_CONFIG_S;
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun typedef RK_S32 (*RK_MPI_MB_FREE_CB)(void *);
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun typedef struct _rkMB_EXT_CONFIG_S {
90*4882a593Smuzhiyun     RK_U8              *pu8VirAddr;
91*4882a593Smuzhiyun     RK_U64              u64PhyAddr;
92*4882a593Smuzhiyun     RK_S32              s32Fd;
93*4882a593Smuzhiyun     RK_U64              u64Size;
94*4882a593Smuzhiyun     RK_MPI_MB_FREE_CB   pFreeCB;
95*4882a593Smuzhiyun     RK_VOID            *pOpaque;
96*4882a593Smuzhiyun } MB_EXT_CONFIG_S;
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define RK_ERR_MB_NULL_PTR             RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR)
99*4882a593Smuzhiyun #define RK_ERR_MB_NOMEM                RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM)
100*4882a593Smuzhiyun #define RK_ERR_MB_NOBUF                RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_NOBUF)
101*4882a593Smuzhiyun #define RK_ERR_MB_UNEXIST              RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST)
102*4882a593Smuzhiyun #define RK_ERR_MB_ILLEGAL_PARAM        RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM)
103*4882a593Smuzhiyun #define RK_ERR_MB_NOTREADY             RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_NOTREADY)
104*4882a593Smuzhiyun #define RK_ERR_MB_BUSY                 RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY)
105*4882a593Smuzhiyun #define RK_ERR_MB_NOT_PERM             RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_PERM)
106*4882a593Smuzhiyun #define RK_ERR_MB_SIZE_NOT_ENOUGH      RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_SIZE_NOT_ENOUGH)
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #define RK_ERR_MB_2MPOOLS              RK_DEF_ERR(RK_ID_MB, RK_ERR_LEVEL_ERROR, RK_ERR_BUTT + 1)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #ifdef __cplusplus
111*4882a593Smuzhiyun #if __cplusplus
112*4882a593Smuzhiyun }
113*4882a593Smuzhiyun #endif
114*4882a593Smuzhiyun #endif /* __cplusplus */
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #endif /* INCLUDE_RT_MPI_RK_COMM_MB_H_ */
117*4882a593Smuzhiyun 
118