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

97 lines
2.4 KiB
C
Executable File

#ifndef _EIS_IOCTL_
#define _EIS_IOCTL_
#include "kwrap/ioctl.h"
//=============================================================================
// EIS IOCTL command definition
//=============================================================================
#define EIS_IOC_MAGIC 'E'
#define GYROSCOPE_XYZ 3
#define ACCELEROMETER_XYZ 3
#define MAX_LATENCY_NUM 5
/*
error code define
*/
#define EIS_E_OK (0) // normal completion
#define EIS_E_TIMEOUT (-1) // wait time out
#define EIS_E_ABORT (-2) // wait abort
#define EIS_E_FAIL (-3) // failed
#define EIS_E_STATE (-4) // state machine error
#define EIS_E_DEBUG (-5) // debug only
#define MAX_GYRO_DATA_NUM 32
#define EIS_DEBUG_INFO 0
#if EIS_DEBUG_INFO
#define EIS_DEBUG_SIZE (MAX_GYRO_DATA_NUM*6*sizeof(UINT32))//for gyro data
#else
#define EIS_DEBUG_SIZE 0
#endif
#define MAX_EIS_LUT2D_SIZE ((68*65)+(EIS_DEBUG_SIZE/sizeof(UINT32)))
typedef enum _EIS_STATE {
EIS_STATE_CLOSE = 0,
EIS_STATE_OPEN,
EIS_STATE_IDLE, //abort wait_proc
ENUM_DUMMY4WORD(EIS_STATE)
} EIS_STATE;
typedef struct _EIS_WAIT_PROC_INFO
{
UINT64 frame_count;
UINT64 t_diff_crop;
UINT64 t_diff_crp_end_to_vd;
//INT32 frame_exposure_time; //us
UINT32 angular_rate_x[MAX_GYRO_DATA_NUM];
UINT32 angular_rate_y[MAX_GYRO_DATA_NUM];
UINT32 angular_rate_z[MAX_GYRO_DATA_NUM];
UINT32 acceleration_rate_x[MAX_GYRO_DATA_NUM];
UINT32 acceleration_rate_y[MAX_GYRO_DATA_NUM];
UINT32 acceleration_rate_z[MAX_GYRO_DATA_NUM];
INT32 wait_ms;
INT32 result;
//INT32 *acceleration_rate[ACCELEROMETER_XYZ]; //3-axes acceleration
} EIS_WAIT_PROC_INFO;
typedef struct _EIS_PUSH_DATA
{
UINT32 path_id;
UINT64 frame_count;
UINT32 *lut2d_buf;
UINT32 buf_size;
} EIS_PUSH_DATA;
typedef struct _EIS_PATH_INFO {
UINT32 path_id;
UINT32 lut2d_buf_size;
UINT32 lut2d_size_sel;
UINT32 frame_latency;
} EIS_PATH_INFO;
#define EIS_IOC_SET_STATE _VOS_IOWR(EIS_IOC_MAGIC, 0, UINT32)
#define EIS_IOC_WAIT_PROC _VOS_IOWR(EIS_IOC_MAGIC, 1, EIS_WAIT_PROC_INFO)
#define EIS_IOC_PUSH_DATA _VOS_IOWR(EIS_IOC_MAGIC, 2, EIS_PUSH_DATA)
#define EIS_IOC_PATH_INFO _VOS_IOWR(EIS_IOC_MAGIC, 3, EIS_PATH_INFO)
#if defined(__FREERTOS)
extern int eis_open(char* file, int flag);
extern int eis_ioctl(int fd, unsigned int cmd, void *arg);
extern int eis_close(int fd);
#endif
extern ER eis_init_module(void);
extern ER eis_uninit_module(void);
#endif