stfmod_isp_crop.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. /**
  2. ******************************************************************************
  3. * @file stfmod_isp_crop.h
  4. * @author StarFive Isp Team
  5. * @version V1.0
  6. * @date 03/23/2021
  7. * @brief
  8. ******************************************************************************
  9. * @copy
  10. *
  11. * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  12. * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  13. * TIME. AS A RESULT, STARFIVE SHALL NOT BE HELD LIABLE FOR ANY
  14. * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  15. * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  16. * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  17. *
  18. * Copyright (C) 2019 - 2022 StarFive Technology Co., Ltd.
  19. */
  20. #ifndef __STFMOD_ISP_CROP_H__
  21. #define __STFMOD_ISP_CROP_H__
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #include "stf_include.h"
  26. #include "ci/ci_api_structs.h"
  27. #include "registers/stf_isp_crop_rdma.h"
  28. #include "stflib_isp_pipeline.h"
  29. /* CSI cropping filter module parameters structure */
  30. //-----------------------------------------------------------------------------
  31. // Define initial values
  32. #define ISP_DEF_CROP_OUTPUT_SIZE_W (1920)
  33. #define ISP_DEF_CROP_OUTPUT_SIZE_H (1080)
  34. #pragma pack(push, 1)
  35. typedef enum _EN_CROP_UPDATE {
  36. EN_CROP_UPDATE_NONE = 0x00,
  37. EN_CROP_UPDATE_OUTPUT_SIZE = 0x01,
  38. EN_CROP_UPDATE_ALL = (EN_CROP_UPDATE_OUTPUT_SIZE),
  39. } EN_CROP_UPDATE, *PEN_CROP_UPDATE;
  40. typedef struct _ST_MOD_CROP_SETTING {
  41. //-------------------------------------------------------------------------
  42. // This section parameters value is assign from setting file.
  43. STF_BOOL8 bEnable; /** Enable/Disable CROP module. */
  44. ST_SIZE stOutputSize; /** Output image size after cropping. */
  45. } ST_MOD_CROP_SETTING, *PST_MOD_CROP_SETTING;
  46. typedef struct _ST_CROP_PARAM {
  47. ST_MOD_CROP_SETTING stSetting; /** Module CROP setting file parameters. */
  48. //-------------------------------------------------------------------------
  49. // This section parameters is internal using.
  50. STF_BOOL8 bSetup; /** Flag set if the module setup has been completed. */
  51. STF_BOOL8 bUpdate; /** Enable/Disable program CROP module register. */
  52. STF_U32 u32UpdateRequest; /** Flag to indicate that this module update has been requested. */
  53. ST_SIZE stInputSize; /** Input image size before cropping. */
  54. } ST_CROP_PARAM, *PST_CROP_PARAM;
  55. #define ST_MOD_CROP_SETTING_LEN (sizeof(ST_MOD_CROP_SETTING))
  56. #define ST_MOD_CROP_GET_PARAM_LEN (ST_MOD_CROP_SETTING_LEN)
  57. #define ST_MOD_CROP_SET_PARAM_LEN (ST_MOD_CROP_SETTING_LEN)
  58. #define ST_CROP_PARAM_SIZE (sizeof(ST_CROP_PARAM))
  59. #define ST_CROP_PARAM_LEN (ST_CROP_PARAM_SIZE)
  60. typedef struct _ST_ISP_MOD_CROP {
  61. #if defined(VIRTUAL_IO_MAPPING)
  62. STF_VOID *pPipeline; /** Pointer to Pipeline. */
  63. #endif //VIRTUAL_IO_MAPPING
  64. STF_VOID *pIspCtx; /** Pointer to ISP context. */
  65. STF_U32 u32Id; /** Module ID. */
  66. STF_CHAR szName[16]; /** Module Name. */
  67. CI_MEM_PARAM *pstCropRdmaBuf; /** CROP's DMA buffer pointer for RDMA. */
  68. #if defined(SUPPORT_MULTI_ISP)
  69. ST_ISP_CROP_RDMA *pstIspCropRdma; /** CROP's RDMA structure pointer that include ISP index.*/
  70. #endif //SUPPORT_MULTI_ISP
  71. ST_CROP_RDMA *pstCropRdma; /** CROP's RDMA structure pointer.*/
  72. ST_CROP_PARAM *pstCropParam; /** CROP's parameters structure pointer. */
  73. STF_BOOL8 bRegistered; /** Module register in pipeline. */
  74. STF_S32 (*Init)(STF_VOID *pIspCtx, STF_U32 *pNextRdma);
  75. STF_S32 (*LoadBinParam)(STF_VOID *pIspCtx, STF_U8 *pu8ParamBuf, STF_U16 u16ParamSize);
  76. STF_S32 (*LoadBinClbrt)(STF_VOID *pIspCtx);
  77. STF_S32 (*Enable)(STF_VOID *pIspCtx, STF_BOOL8 bEnable);
  78. STF_BOOL8 (*IsEnable)(STF_VOID *pIspCtx);
  79. STF_S32 (*Update)(STF_VOID *pIspCtx, STF_BOOL8 bUpdate);
  80. STF_BOOL8 (*IsUpdate)(STF_VOID *pIspCtx);
  81. STF_S32 (*Registered)(STF_VOID *pIspCtx, STF_BOOL8 bRegistered);
  82. STF_BOOL8 (*IsRegistered)(STF_VOID *pIspCtx);
  83. STF_S32 (*UpdateReg)(STF_VOID *pIspCtx);
  84. STF_S32 (*SetReg)(STF_VOID *pIspCtx);
  85. STF_S32 (*SetNext)(STF_VOID *pIspCtx, STF_U32 *pNextRdma);
  86. STF_S32 (*FreeResource)(STF_VOID *pIspCtx);
  87. STF_S32 (*GetIqParam)(STF_VOID *pIspCtx, STF_VOID *pParamBuf, STF_U16 *pu16ParamSize);
  88. STF_S32 (*SetIqParam)(STF_VOID *pIspCtx, STF_VOID *pParamBuf, STF_U16 u16ParamSize);
  89. } ST_ISP_MOD_CROP, *PST_ISP_MOD_CROP;
  90. #pragma pack(pop)
  91. /* CSI cropping filter module parameters interface */
  92. //-----------------------------------------------------------------------------
  93. extern
  94. STF_S32 STFMOD_ISP_CROP_InitRdma(
  95. ST_CROP_RDMA *pstCropRdma,
  96. ST_CROP_PARAM *pstCropParam,
  97. STF_U32 *pNextRdma
  98. );
  99. extern
  100. STF_S32 STFMOD_ISP_CROP_UpdateRdma(
  101. ST_CROP_RDMA *pstCropRdma,
  102. ST_CROP_PARAM *pstCropParam
  103. );
  104. extern
  105. STF_S32 STFMOD_ISP_CROP_UpdateOutputSize(
  106. ST_CROP_RDMA *pstCropRdma,
  107. ST_CROP_PARAM *pstCropParam
  108. );
  109. extern
  110. STF_S32 STFMOD_ISP_CROP_SetNextRdma(
  111. ST_CROP_RDMA *pstCropRdma,
  112. STF_U32 *pNextRdma
  113. );
  114. //-----------------------------------------------------------------------------
  115. extern
  116. STF_S32 STFMOD_ISP_CROP_SetEnable(
  117. ST_ISP_MOD_CROP *pstModCrop,
  118. STF_BOOL8 bEnable
  119. );
  120. extern
  121. STF_S32 STFMOD_ISP_CROP_SetUpdate(
  122. ST_ISP_MOD_CROP *pstModCrop,
  123. STF_BOOL8 bUpdate
  124. );
  125. extern
  126. STF_S32 STFMOD_ISP_CROP_SetInputSize(
  127. ST_ISP_MOD_CROP *pstModCrop,
  128. ST_SIZE stInputSize
  129. );
  130. extern
  131. STF_S32 STFMOD_ISP_CROP_SetOutputSize(
  132. ST_ISP_MOD_CROP *pstModCrop,
  133. ST_SIZE stOutputSize
  134. );
  135. //-----------------------------------------------------------------------------
  136. extern
  137. STF_S32 STFMOD_ISP_CROP_Init(
  138. STF_VOID *pIspCtx,
  139. STF_U32 *pNextRdma
  140. );
  141. extern
  142. STF_S32 STFMOD_ISP_CROP_LoadBinParam(
  143. STF_VOID *pIspCtx,
  144. STF_U8 *pu8ParamBuf,
  145. STF_U16 u16ParamSize
  146. );
  147. extern
  148. STF_S32 STFMOD_ISP_CROP_LoadBinClbrt(
  149. STF_VOID *pIspCtx
  150. );
  151. extern
  152. STF_S32 STFMOD_ISP_CROP_Enable(
  153. STF_VOID *pIspCtx,
  154. STF_BOOL8 bEnable
  155. );
  156. extern
  157. STF_BOOL8 STFMOD_ISP_CROP_IsEnable(
  158. STF_VOID *pIspCtx
  159. );
  160. extern
  161. STF_S32 STFMOD_ISP_CROP_Update(
  162. STF_VOID *pIspCtx,
  163. STF_BOOL8 bUpdate
  164. );
  165. extern
  166. STF_BOOL8 STFMOD_ISP_CROP_IsUpdate(
  167. STF_VOID *pIspCtx
  168. );
  169. extern
  170. STF_S32 STFMOD_ISP_CROP_Registered(
  171. STF_VOID *pIspCtx,
  172. STF_BOOL8 bRegistered
  173. );
  174. extern
  175. STF_BOOL8 STFMOD_ISP_CROP_IsRegistered(
  176. STF_VOID *pIspCtx
  177. );
  178. extern
  179. STF_S32 STFMOD_ISP_CROP_UpdateReg(
  180. STF_VOID *pIspCtx
  181. );
  182. extern
  183. STF_S32 STFMOD_ISP_CROP_SetReg(
  184. STF_VOID *pIspCtx
  185. );
  186. extern
  187. STF_S32 STFMOD_ISP_CROP_SetNext(
  188. STF_VOID *pIspCtx,
  189. STF_U32 *pNextRdma
  190. );
  191. extern
  192. STF_S32 STFMOD_ISP_CROP_FreeResource(
  193. STF_VOID *pIspCtx
  194. );
  195. extern
  196. STF_S32 STFMOD_ISP_CROP_GetIqParam(
  197. STF_VOID *pIspCtx,
  198. STF_VOID *pParamBuf,
  199. STF_U16 *pu16ParamSize
  200. );
  201. extern
  202. STF_S32 STFMOD_ISP_CROP_SetIqParam(
  203. STF_VOID *pIspCtx,
  204. STF_VOID *pParamBuf,
  205. STF_U16 u16ParamSize
  206. );
  207. //-----------------------------------------------------------------------------
  208. extern
  209. STF_S32 STFMOD_ISP_CROP_Create(
  210. STF_VOID *pPipeline
  211. );
  212. extern
  213. STF_S32 STFMOD_ISP_CROP_Destroy(
  214. STF_VOID *pPipeline
  215. );
  216. //-----------------------------------------------------------------------------
  217. #ifdef __cplusplus
  218. }
  219. #endif
  220. #endif //__STFMOD_ISP_CROP_H__