mirror of https://github.com/OpenIPC/firmware.git
136 lines
4.1 KiB
C
136 lines
4.1 KiB
C
/******************************************************************************
|
|
|
|
Copyright (C), 2016, Hisilicon Tech. Co., Ltd.
|
|
|
|
******************************************************************************
|
|
File Name : hi_sns_ctrl.h
|
|
Version : Initial Draft
|
|
Author : Hisilicon multimedia software group
|
|
Created : 2011/01/10
|
|
Description :
|
|
History :
|
|
1.Date : 2011/01/10
|
|
Author :
|
|
Modification: Created file
|
|
|
|
******************************************************************************/
|
|
|
|
#ifndef __HI_SNS_CTRL_H__
|
|
#define __HI_SNS_CTRL_H__
|
|
|
|
#include "hi_type.h"
|
|
#include "hi_comm_3a.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
|
|
typedef struct hiISP_SNS_STATE_S {
|
|
HI_BOOL bInit; /* HI_TRUE: Sensor init */
|
|
HI_BOOL bSyncInit; /* HI_TRUE: Sync Reg init */
|
|
HI_U8 u8ImgMode;
|
|
HI_U8 u8Hdr; /* HI_TRUE: HDR enbale */
|
|
WDR_MODE_E enWDRMode;
|
|
|
|
ISP_SNS_REGS_INFO_S astRegsInfo[2]; /* [0]: Sensor reg info of cur-frame; [1]: Sensor reg info of pre-frame ; */
|
|
|
|
HI_U32 au32FL[2]; /* [0]: FullLines of cur-frame; [1]: Pre FullLines of pre-frame */
|
|
HI_U32 u32FLStd; /* FullLines std */
|
|
HI_U32 au32WDRIntTime[4];
|
|
} ISP_SNS_STATE_S;
|
|
|
|
typedef enum hiISP_SNS_MIRRORFLIP_TYPE_E {
|
|
ISP_SNS_NORMAL = 0,
|
|
ISP_SNS_MIRROR = 1,
|
|
ISP_SNS_FLIP = 2,
|
|
ISP_SNS_MIRROR_FLIP = 3,
|
|
ISP_SNS_BUTT
|
|
} ISP_SNS_MIRRORFLIP_TYPE_E;
|
|
|
|
typedef struct hiISP_SNS_OBJ_S {
|
|
HI_S32 (*pfnRegisterCallback)(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, ALG_LIB_S *pstAwbLib);
|
|
HI_S32 (*pfnUnRegisterCallback)(VI_PIPE ViPipe, ALG_LIB_S *pstAeLib, ALG_LIB_S *pstAwbLib);
|
|
HI_S32 (*pfnSetBusInfo)(VI_PIPE ViPipe, ISP_SNS_COMMBUS_U unSNSBusInfo);
|
|
HI_VOID (*pfnStandby)(VI_PIPE ViPipe);
|
|
HI_VOID (*pfnRestart)(VI_PIPE ViPipe);
|
|
HI_VOID (*pfnMirrorFlip)(VI_PIPE ViPipe, ISP_SNS_MIRRORFLIP_TYPE_E eSnsMirrorFlip);
|
|
HI_S32 (*pfnWriteReg)(VI_PIPE ViPipe, HI_S32 s32Addr, HI_S32 s32Data);
|
|
HI_S32 (*pfnReadReg)(VI_PIPE ViPipe, HI_S32 s32Addr);
|
|
HI_S32 (*pfnSetInit)(VI_PIPE ViPipe, ISP_INIT_ATTR_S *pstInitAttr);
|
|
} ISP_SNS_OBJ_S;
|
|
|
|
extern ISP_SNS_OBJ_S stSnsMn34220Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx377Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx299Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx477Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx299SlvsObj;
|
|
extern ISP_SNS_OBJ_S stSnsImx290Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx327Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx327_2l_Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx334Obj;
|
|
extern ISP_SNS_OBJ_S stSnsOV2718Obj;
|
|
extern ISP_SNS_OBJ_S stSnsAr0237Obj;
|
|
|
|
extern ISP_SNS_OBJ_S stSnsCmv50000Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx277SlvsObj;
|
|
extern ISP_SNS_OBJ_S stSnsImx117Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx290SlaveObj;
|
|
extern ISP_SNS_OBJ_S stSnsImx334SlaveObj;
|
|
extern ISP_SNS_OBJ_S stSnsImx226Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx335Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx307Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx307_2l_Obj;
|
|
extern ISP_SNS_OBJ_S stSnsImx458Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSc4236Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSc4210Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSc2231Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSc2235Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSc3235Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSoiF37Obj;
|
|
extern ISP_SNS_OBJ_S stSnsOs05aObj;
|
|
extern ISP_SNS_OBJ_S stSnsOS08A10Obj;
|
|
extern ISP_SNS_OBJ_S stSnsOs05a_2lObj;
|
|
extern ISP_SNS_OBJ_S stSnsGc2053Obj;
|
|
extern ISP_SNS_OBJ_S stSnsSharp8kObj;
|
|
extern ISP_SNS_OBJ_S stSnsOv12870Obj;
|
|
extern ISP_SNS_OBJ_S stSnsGc2053ForCarObj;
|
|
|
|
#define CMOS_CHECK_POINTER(ptr)\
|
|
do {\
|
|
if (ptr == HI_NULL)\
|
|
{\
|
|
ISP_TRACE(HI_DBG_ERR, "Null Pointer!\n");\
|
|
return HI_ERR_ISP_NULL_PTR;\
|
|
}\
|
|
}while(0)
|
|
|
|
#define CMOS_CHECK_POINTER_VOID(ptr)\
|
|
do {\
|
|
if (ptr == HI_NULL)\
|
|
{\
|
|
ISP_TRACE(HI_DBG_ERR, "Null Pointer!\n");\
|
|
return;\
|
|
}\
|
|
}while(0)
|
|
|
|
#define SENSOR_FREE(ptr)\
|
|
do{\
|
|
if (ptr != HI_NULL)\
|
|
{\
|
|
free(ptr);\
|
|
ptr = HI_NULL;\
|
|
}\
|
|
} while (0)
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* End of #ifdef __cplusplus */
|
|
|
|
#endif /* __HI_SNS_CTRL_H__ */
|