• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef __MPI_SYS_H__
17 #define __MPI_SYS_H__
18 
19 #include "hi_type.h"
20 #include "hi_common.h"
21 #include "hi_comm_sys.h"
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif /* End of #ifdef __cplusplus */
26 
27 HI_S32 HI_MPI_SYS_Init(HI_VOID);
28 HI_S32 HI_MPI_SYS_Exit(HI_VOID);
29 
30 HI_S32 HI_MPI_SYS_SetConfig(const MPP_SYS_CONFIG_S *pstSysConfig);
31 HI_S32 HI_MPI_SYS_GetConfig(MPP_SYS_CONFIG_S *pstSysConfig);
32 
33 HI_S32 HI_MPI_SYS_Bind(const MPP_CHN_S *pstSrcChn, const MPP_CHN_S *pstDestChn);
34 HI_S32 HI_MPI_SYS_UnBind(const MPP_CHN_S *pstSrcChn, const MPP_CHN_S *pstDestChn);
35 HI_S32 HI_MPI_SYS_GetBindbyDest(const MPP_CHN_S *pstDestChn, MPP_CHN_S *pstSrcChn);
36 HI_S32 HI_MPI_SYS_GetBindbySrc(const MPP_CHN_S *pstSrcChn, MPP_BIND_DEST_S *pstBindDest);
37 
38 HI_S32 HI_MPI_SYS_GetVersion(MPP_VERSION_S *pstVersion);
39 
40 HI_S32 HI_MPI_SYS_GetChipId(HI_U32 *pu32ChipId);
41 HI_S32 HI_MPI_SYS_GetUniqueId(HI_UNIQUE_ID_S *pstUniqueId);
42 
43 HI_S32 HI_MPI_SYS_GetCustomCode(HI_U32 *pu32CustomCode);
44 
45 /*
46  * u64Base is the global PTS of the system.
47  * ADVICE:
48  * 1. Better to call HI_MPI_SYS_GetCurPTS on the host board to get u64Base.
49  * 2. When os start up, call HI_MPI_SYS_InitPTSBase to set the init PTS.
50  * 3. When media bussines is running, synchronize the PTS one time per minute
51  *     by calling HI_MPI_SYS_SyncPTS.
52  */
53 HI_S32 HI_MPI_SYS_GetCurPTS(HI_U64 *pu64CurPTS);
54 HI_S32 HI_MPI_SYS_InitPTSBase(HI_U64 u64PTSBase);
55 HI_S32 HI_MPI_SYS_SyncPTS(HI_U64 u64PTSBase);
56 
57 /* alloc mmz memory in user context */
58 HI_S32 HI_MPI_SYS_MmzAlloc(HI_U64 *pu64PhyAddr, HI_VOID **ppVirAddr,
59                            const HI_CHAR *strMmb, const HI_CHAR *strZone, HI_U32 u32Len);
60 
61 /* alloc mmz memory with cache */
62 HI_S32 HI_MPI_SYS_MmzAlloc_Cached(HI_U64 *pu64PhyAddr, HI_VOID **ppVirAddr,
63                                   const HI_CHAR *pstrMmb, const HI_CHAR *pstrZone, HI_U32 u32Len);
64 
65 /* free mmz memory in user context */
66 HI_S32 HI_MPI_SYS_MmzFree(HI_U64 u64PhyAddr, HI_VOID *pVirAddr);
67 
68 /* fulsh cache */
69 HI_S32 HI_MPI_SYS_MmzFlushCache(HI_U64 u64PhyAddr, HI_VOID *pVirAddr, HI_U32 u32Size);
70 
71 /*
72  * Call the mmap function to map physical address to virtual address
73  * The system function mmap is too complicated, so we packge it.
74  */
75 HI_VOID *HI_MPI_SYS_Mmap(HI_U64 u64PhyAddr, HI_U32 u32Size);
76 HI_VOID *HI_MPI_SYS_MmapCache(HI_U64 u64PhyAddr, HI_U32 u32Size);
77 HI_S32 HI_MPI_SYS_Munmap(HI_VOID *pVirAddr, HI_U32 u32Size);
78 HI_S32 HI_MPI_SYS_MflushCache(HI_U64 u64PhyAddr, HI_VOID *pVirAddr, HI_U32 u32Size);
79 
80 HI_S32 HI_MPI_SYS_SetMemConfig(const MPP_CHN_S *pstMppChn, const HI_CHAR *pcMmzName);
81 HI_S32 HI_MPI_SYS_GetMemConfig(const MPP_CHN_S *pstMppChn, HI_CHAR *pcMmzName);
82 
83 /* Close all the FD which is used by sys module */
84 HI_S32 HI_MPI_SYS_CloseFd(HI_VOID);
85 
86 /* Get virtual meminfo according to virtual addr, should be in one process */
87 HI_S32 HI_MPI_SYS_GetVirMemInfo(const void *pVirAddr, SYS_VIRMEM_INFO_S *pstMemInfo);
88 
89 /* Set/get Scale coefficient level for VPSS/VGS */
90 HI_S32 HI_MPI_SYS_SetScaleCoefLevel(const SCALE_RANGE_S *pstScaleRange,
91                                     const SCALE_COEFF_LEVEL_S *pstScaleCoeffLevel);
92 HI_S32 HI_MPI_SYS_GetScaleCoefLevel(const SCALE_RANGE_S *pstScaleRange, SCALE_COEFF_LEVEL_S *pstScaleCoeffLevel);
93 
94 /* Set/Get local timezone, range: [-86400, 86400] seconds (that is: [-24, 24] hours) */
95 HI_S32 HI_MPI_SYS_SetTimeZone(HI_S32 s32TimeZone);
96 HI_S32 HI_MPI_SYS_GetTimeZone(HI_S32 *ps32TimeZone);
97 
98 HI_S32 HI_MPI_SYS_SetGPSInfo(const GPS_INFO_S *pstGPSInfo);
99 HI_S32 HI_MPI_SYS_GetGPSInfo(GPS_INFO_S *pstGPSInfo);
100 
101 HI_S32 HI_MPI_SYS_SetTuningConnect(HI_S32 s32Connect);
102 HI_S32 HI_MPI_SYS_GetTuningConnect(HI_S32 *ps32Connect);
103 
104 HI_S32 HI_MPI_SYS_SetVIVPSSMode(const VI_VPSS_MODE_S *pstVIVPSSMode);
105 HI_S32 HI_MPI_SYS_GetVIVPSSMode(VI_VPSS_MODE_S *pstVIVPSSMode);
106 
107 HI_S32 HI_MPI_SYS_GetVPSSVENCWrapBufferLine(VPSS_VENC_WRAP_PARAM_S *pWrapParam, HI_U32 *pu32BufLine);
108 
109 HI_S32 HI_MPI_LOG_SetLevelConf(LOG_LEVEL_CONF_S *pstConf);
110 HI_S32 HI_MPI_LOG_GetLevelConf(LOG_LEVEL_CONF_S *pstConf);
111 
112 HI_S32 HI_MPI_SYS_SetRawFrameCompressParam(const RAW_FRAME_COMPRESS_PARAM_S *pstCompressParam);
113 HI_S32 HI_MPI_SYS_GetRawFrameCompressParam(RAW_FRAME_COMPRESS_PARAM_S *pstCompressParam);
114 
115 HI_S32 HI_MPI_LOG_SetWaitFlag(HI_BOOL bWait);
116 
117 HI_S32 HI_MPI_LOG_Read(HI_CHAR *pBuf, HI_U32 u32Size);
118 
119 HI_VOID HI_MPI_LOG_Close(HI_VOID);
120 
121 #ifdef __cplusplus
122 }
123 #endif /* End of #ifdef __cplusplus */
124 
125 #endif /* __MPI_SYS_H__ */
126