nt9856x/code/hdal/vendor/isp/drivers/include/isp_dev.h
2023-03-28 15:07:53 +08:00

85 lines
3.6 KiB
C
Executable File

#ifndef _ISP_DEV_H_
#define _ISP_DEV_H_
#include "kwrap/type.h"
#include "isp_api.h"
#include "isp_mtr.h"
//=============================================================================
// struct & definition
//=============================================================================
#define ISP_MAX_NAME_SIZE 16
typedef enum _ISP_SYNC_SEL {
ISP_SYNC_SEL_SIE, ///< Sync Info from SIE EVENT
ISP_SYNC_SEL_IPP, ///< Sync Info from IPP EVENT
ISP_SYNC_SEL_ENC, ///< Sync Info from ENC EVENT
ISP_SYNC_SEL_CURRENT, ///< Sync Info from CURRENT
ISP_SYNC_SEL_MAX,
ENUM_DUMMY4WORD(ISP_SYNC_SEL_MAX)
} ISP_SYNC_SEL;
typedef enum _ISP_SYNC_ITEM {
// NOTE: Start of frame cnt SyncInfo
ISP_SYNC_AE_STATUS = 0,///< Sync from AE
ISP_SYNC_AE_TOTAL_GAIN, ///< Sync from AE
ISP_SYNC_AE_DGAIN, ///< Sync from AE
ISP_SYNC_AE_LV, ///< Sync from AE
ISP_SYNC_AE_LV_BASE, ///< Sync from AE
ISP_SYNC_AE_LA_ENABLE = 5,///< Sync from AE
ISP_SYNC_AWB_CGAIN, ///< Sync from AWB
ISP_SYNC_AWB_CT, ///< Sync from AWB
ISP_SYNC_AWB_CA_ENABLE, ///< Sync from AWB
ISP_SYNC_IQ_FINAL_CGAIN, ///< Sync from IQ
ISP_SYNC_FRAME_CNT_MAX = 10,
// NOTE: end of frame cnt SyncInfo
ISP_SYNC_CAPTURE_TOTAL_GAIN, ///< Sync from AE
ISP_SYNC_CAPTURE_DGAIN, ///< Sync from AE
ISP_SYNC_SHDR_FRAME_NUM, ///< Sync from AE
ISP_SYNC_SHDR_EV_RATIO, ///< Sync from AE
ISP_SYNC_AE_INIT = 15,///< Sync from AE or buildin AE
ISP_SYNC_AWB_INIT, ///< Sync from AWB or buildin AWB
ISP_SYNC_IQ_INIT, ///< Sync from buildin ISP or buildin IQ
ISP_SYNC_CA_TH, ///< Sync from AWB
ISP_SYNC_CAPTURE_CGAIN, ///< Sync from AWB
ISP_SYNC_SIE_LA_ROI, ///< Sync from AE
ISP_SYNC_SIE_CA_ROI, ///< Sync from AWB
ISP_SYNC_ITEM_MAX,
ENUM_DUMMY4WORD(ISP_SYNC_ITEM_MAX)
} ISP_SYNC_ITEM;
typedef struct _ISP_MODULE {
CHAR name[ISP_MAX_NAME_SIZE]; // module name
void *private; // private date
INT32 (*fn_init) (UINT32 id);
INT32 (*fn_uninit) (UINT32 id);
void (*fn_trig) (UINT32 id, void *arg);
INT32 (*fn_pause) (UINT32 id);
INT32 (*fn_resume) (UINT32 id);
INT32 (*fn_ioctl) (INT32 cmd, UINT32 arg, UINT32 *buf_addr);
} ISP_MODULE;
//=============================================================================
// extern functions
//=============================================================================
extern ER isp_dev_get_sync_item(ISP_ID id, ISP_SYNC_SEL sel, ISP_SYNC_ITEM item, void *data);
extern void isp_dev_set_sync_item(ISP_ID id, ISP_SYNC_SEL sel, ISP_SYNC_ITEM item, void *data);
extern ISP_CA_RSLT *isp_dev_get_ca(ISP_ID id);
extern ISP_LA_RSLT *isp_dev_get_la(ISP_ID id);
extern ISP_VA_RSLT *isp_dev_get_va(ISP_ID id);
extern ISP_VA_INDEP_RSLT *isp_dev_get_va_indep(ISP_ID id);
extern ISP_MD_RSLT *isp_dev_get_md(ISP_ID id);
extern ISP_HISTO_RSLT *isp_dev_get_histo(ISP_ID id);
extern ISP_EDGE_STCS *isp_dev_get_edge_stcs(ISP_ID id);
extern ISP_IPE_SUBOUT_BUF *isp_dev_get_ipe_subout_buf(ISP_ID id);
extern CTL_MTR_DRV_TAB *isp_dev_get_mtr_drv_tab(void);
extern void isp_dev_reg_ae_module(ISP_MODULE *ae_module);
extern void isp_dev_reg_af_module(ISP_MODULE *af_module);
extern void isp_dev_reg_awb_module(ISP_MODULE *awb_module);
extern void isp_dev_reg_dr_module(ISP_MODULE *dr_module);
extern void isp_dev_reg_iq_module(ISP_MODULE *iq_module);
extern void isp_dev_reg_motor_driver(CTL_MTR_DRV_TAB *mrt_drv_tab);
extern void isp_dev_wait_vd(ISP_ID id, UINT32 timeout);
#endif