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

277 lines
7.0 KiB
C
Executable File

#ifndef _ISP_MTR_H_
#define _ISP_MTR_H_
//=============================================================================
// constant define
//=============================================================================
#define MOVE_DIR_INIT 0
#define MOVE_DIR_FWD 1
#define MOVE_DIR_BWD (-1)
#define MOTOR_STATUS_FREE 0
#define MOTOR_STATUS_BUSY 1
#define ZOOM_SECTION_WIDE 0
#define ZOOM_SECTION_TELE 10
#define ZOOM_SECTION_NUM (ZOOM_SECTION_TELE + 1)
#define FOCUS_DISTANCE_TABLE_NUM 13
//=============================================================================
// struct & definition
//=============================================================================
typedef enum _MOTOR_ID {
MTR_ID_0,
///MTR_ID_1,
MTR_ID_MAX,
ENUM_DUMMY4WORD(MOTOR_ID)
} MOTOR_ID;
typedef enum _MTR_SPEED {
MTR_SPEED_OFF = 0,
MTR_SPEED_FULL = 100,
MTR_SPEED_MAX = 100,
ENUM_DUMMY4WORD(MTR_SPEED)
} MTR_SPEED;
typedef enum _MTR_GET_FOCUS_CMD {
MTR_GET_FOCUS_SPEED = 1,
MTR_GET_FOCUS_FOCAL_LENGTH,
MTR_GET_FOCUS_RANGE,
MTR_GET_FOCUS_POSITION,
MTR_GET_FOCUS_BUSY_STATUS,
MTR_GET_MOTION_QUEUE_CMD_STATUS,
ENUM_DUMMY4WORD(MTR_GET_FOCUS_CMD)
} MTR_GET_FOCUS_CMD;
typedef enum _MTR_SET_FOCUS_CMD {
MTR_SET_FOCUS_INIT = 1,
MTR_SET_FOCUS_SPEED,
MTR_SET_FOCUS_ASSIGN_POSITION,
MTR_SET_FOCUS_FOCAL_LENGTH,
MTR_SET_FOCUS_POSITION,
MTR_SET_FOCUS_POSITION_IN_QUEUE,
MTR_SET_FOCUS_PRESS,
MTR_SET_FOCUS_RELEASE,
ENUM_DUMMY4WORD(MTR_SET_FOCUS_CMD)
} MTR_SET_FOCUS_CMD;
typedef enum _MTR_GET_ZOOM_CMD {
MTR_GET_ZOOM_SPEED = 1,
MTR_GET_ZOOM_SECTION_POS,
MTR_GET_ZOOM_MAX_SECTION_POS,
MTR_GET_ZOOM_POSITION,
MTR_GET_ZOOM_BUSY_STATUS,
ENUM_DUMMY4WORD(MTR_GET_ZOOM_CMD)
} MTR_GET_ZOOM_CMD;
typedef enum _MTR_SET_ZOOM_CMD {
MTR_SET_ZOOM_INIT = 1,
MTR_SET_ZOOM_SPEED,
MTR_SET_ZOOM_ASSIGN_POSITION,
MTR_SET_ZOOM_SECTION_POS,
MTR_SET_ZOOM_POSITION,
MTR_SET_ZOOM_PRESS,
MTR_SET_ZOOM_RELEASE,
MTR_SET_ZOOM_POSITION_CALI,
ENUM_DUMMY4WORD(MTR_SET_ZOOM_CMD)
} MTR_SET_ZOOM_CMD;
typedef enum _MTR_GET_IRCUT_CMD {
MTR_GET_IRCUT_POSITION = 1,
ENUM_DUMMY4WORD(MTR_GET_IRCUT_CMD)
} MTR_GET_IRCUT_CMD;
typedef enum _MTR_SET_IRCUT_CMD {
MTR_SET_IRCUT_INIT = 1,
MTR_SET_IRCUT_POSITION,
ENUM_DUMMY4WORD(MTR_SET_IRCUT_CMD)
} MTR_SET_IRCUT_CMD;
typedef enum _MTR_GET_APERTURE_CMD {
MTR_GET_APERTURE_INFO = 1,
MTR_GET_APERTURE_FNO,
MTR_GET_APERTURE_SECTION_POS,
MTR_GET_APERTURE_POSITION,
MTR_GET_APERTURE_FLUX_RATIO,
MTR_GET_APERTURE_BUSY_STATUS,
ENUM_DUMMY4WORD(MTR_GET_APERTURE_CMD)
} MTR_GET_APERTURE_CMD;
typedef enum _MTR_SET_APERTURE_CMD {
MTR_SET_APERTURE_INIT = 1,
MTR_SET_APERTURE_ASSIGN_POSITION,
MTR_SET_APERTURE_SECTION_POS,
MTR_SET_APERTURE_POSITION,
MTR_SET_APERTURE_FLUX_RATIO,
ENUM_DUMMY4WORD(MTR_SET_APERTURE_CMD)
} MTR_SET_APERTURE_CMD;
typedef enum _MTR_GET_SHUTTER_CMD {
MTR_GET_SHUTTER_STATE = 1,
ENUM_DUMMY4WORD(MTR_GET_SHUTTER_CMD)
} MTR_GET_SHUTTER_CMD;
typedef enum _MTR_SET_SHUTTER_CMD {
MTR_SET_SHUTTER_INIT = 1,
MTR_SET_SHUTTER_STATE,
ENUM_DUMMY4WORD(MTR_SET_SHUTTER_CMD)
} MTR_SET_SHUTTER_CMD;
typedef enum {
MTR_GET_MISC_NAME_STR = 1,
MTR_GET_MISC_CAPABILITY,
MTR_GET_MISC_ZF_RANGE_TABLE,
MTR_GET_MISC_ZF_CURVE_TABLE,
MTR_GET_MISC_LED_STATE,
MTR_GET_MISC_FZ_BACKLASH,
ENUM_DUMMY4WORD(MTR_GET_MISC_CMD)
} MTR_GET_MISC_CMD;
typedef enum _MTR_SET_MISC_CMD {
MTR_SET_MISC_ZF_RANGE_TABLE = 1,
MTR_SET_MISC_ZF_CURVE_TABLE,
MTR_SET_MISC_LED_STATE,
MTR_SET_MISC_FZ_BACKLASH,
ENUM_DUMMY4WORD(MTR_SET_MISC_CMD)
} MTR_SET_MISC_CMD;
typedef enum _MOTOR_SPEED_CATEGORY {
MOTOR_SPEED_VERY_LOW = 20,
MOTOR_SPEED_LOW = 40,
MOTOR_SPEED_MEDIUM = 60,
MOTOR_SPEED_HIGH = 80,
MOTOR_SPEED_VERY_HIGH = 100,
ENUM_DUMMY4WORD(MOTOR_SPEED_CATEGORY)
} MOTOR_SPEED_CATEGORY;
typedef enum _MOTOR_ROTATE_DIR {
MOTOR_ROTATE_FWD,
MOTOR_ROTATE_BWD,
ENUM_DUMMY4WORD(MOTOR_ROTATE_DIR)
} MOTOR_ROTATE_DIR;
typedef enum _IRCUT_ACT {
IRCUT_OPEN,
IRCUT_CLOSE,
ENUM_DUMMY4WORD(IRCUT_ACT)
} IRCUT_ACT;
typedef enum _APERTURE_ACT_MODE {
APERTURE_ACT_SECTION,
APERTURE_ACT_STEPLESS,
ENUM_DUMMY4WORD(APERTURE_ACT_MODE)
} APERTURE_ACT_MODE;
typedef enum _APERTURE_SEC_POS {
APERTURE_POS_BIG = 0,
APERTURE_POS_F1_6 = 0,
APERTURE_POS_F2_0,
APERTURE_POS_F2_4,
APERTURE_POS_F2_8,
APERTURE_POS_F3_4,
APERTURE_POS_F4_0,
APERTURE_POS_F4_8,
APERTURE_POS_F5_6,
APERTURE_POS_F6_8,
APERTURE_POS_F9_6,
APERTURE_POS_F11_0,
APERTURE_POS_F14_0,
APERTURE_POS_F16_0,
APERTURE_POS_F19_0,
APERTURE_POS_F22_0,
APERTURE_POS_SMALL = APERTURE_POS_F22_0,
APERTURE_POS_CLOSE,
APERTURE_POS_MAX,
ENUM_DUMMY4WORD(APERTURE_SEC_POS)
} APERTURE_SEC_POS;
typedef enum _SHUTTER_ACT {
SHUTTER_OPEN,
SHUTTER_CLOSE,
ENUM_DUMMY4WORD(SHUTTER_ACT)
} SHUTTER_ACT;
typedef enum _MOTOR_SIGNAL {
MOTOR_SIGNAL_FPI,
MOTOR_SIGNAL_ZPI,
MOTOR_SIGNAL_LED,
ENUM_DUMMY4WORD(MOTOR_SIGNAL)
} MOTOR_SIGNAL;
typedef enum _HW_GPIO_PIN_DEF {
HW_GPIO_RESET = 0,
HW_GPIO_POWER_DN,
HW_GPIO_FZ,
HW_GPIO_IS,
HW_GPIO_IRCUT0,
HW_GPIO_IRCUT1,
HW_GPIO_LED0,
HW_GPIO_LED1,
HW_GPIO_FSTS,
HW_GPIO_ZSTS,
HW_GPIO_EXT0,
HW_GPIO_EXT1,
HW_GPIO_EXT2,
HW_GPIO_EXT3,
HW_GPIO_MAX,
ENUM_DUMMY4WORD(HW_GPIO_PIN_DEF)
} HW_GPIO_PIN_DEF;
typedef enum _LENS_SUPPORT_PROPERTY {
LENS_SUPPORT_NONE = 0x00000000,
LENS_SUPPORT_FOCUS = 0x00000001,
LENS_SUPPORT_ZOOM = 0x00000002,
LENS_SUPPORT_IRCUT = 0x00000004,
LENS_SUPPORT_APERTURE = 0x00000008,
LENS_SUPPORT_SHUTTER = 0x00000010,
ENUM_DUMMY4WORD(LENS_SUPPORT_PROPERTY)
} LENS_SUPPORT_PROPERTY;
typedef struct _MTR_CTL_CMD {
UINT32 argu[2];
UINT32 data[2];
} MTR_CTL_CMD;
typedef struct _MTR_CTL_LCMD {
UINT32 argu[16];
UINT32 data[16];
} MTR_CTL_LCMD;
typedef struct _LENS_ZOOM_FOCUS_TAB {
INT32 zoom_position;
INT32 focus_min;
INT32 focus_max;
} LENS_ZOOM_FOCUS_TAB;
typedef struct _LENS_ZOOM_FOCUS_ITEM {
UINT32 tab_idx;
LENS_ZOOM_FOCUS_TAB zoom_focus_tab;
} LENS_ZOOM_FOCUS_ITEM;
typedef struct _LENS_FOCUS_DISTANCE_TAB {
INT32 lens_position[FOCUS_DISTANCE_TABLE_NUM];
} LENS_FOCUS_DISTANCE_TAB;
#if defined(__KERNEL__) || defined(__FREERTOS)
typedef struct _CTL_MTR_DRV_TAB {
ER (*open) (UINT32 id);
ER (*close) (UINT32 id);
ER (*get_focus) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*set_focus) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*get_zoom) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*set_zoom) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*get_ircut) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*set_ircut) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*get_aperture) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*set_aperture) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*get_shutter) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*set_shutter) (UINT32 id, UINT32 cmd_type, MTR_CTL_CMD *pcmd);
ER (*get_misc) (UINT32 id, UINT32 cmd_type, MTR_CTL_LCMD *pcmd);
ER (*set_misc) (UINT32 id, UINT32 cmd_type, MTR_CTL_LCMD *pcmd);
} CTL_MTR_DRV_TAB;
#endif
#endif