diff --git a/include/uapi/linux/rk_vcm_head.h b/include/uapi/linux/rk_vcm_head.h index 97b9e48d9884..0fd2f42ad2b4 100644 --- a/include/uapi/linux/rk_vcm_head.h +++ b/include/uapi/linux/rk_vcm_head.h @@ -4,7 +4,7 @@ #ifndef RK_VCM_HEAD_H #define RK_VCM_HEAD_H -#define RK_VCM_HEAD_VERSION KERNEL_VERSION(0, 0x01, 0x0) +#define RK_VCM_HEAD_VERSION KERNEL_VERSION(0, 0x02, 0x0) /* * Focus position values: * 65 logical positions ( 0 - 64 ) @@ -19,6 +19,7 @@ #define OF_CAMERA_VCMDRV_DLC_ENABLE "rockchip,vcm-dlc-enable" #define OF_CAMERA_VCMDRV_MCLK "rockchip,vcm-mclk" #define OF_CAMERA_VCMDRV_T_SRC "rockchip,vcm-t-src" +#define VCMDRV_SETZOOM_MAXCNT 300U #define RK_VIDIOC_VCM_TIMEINFO \ _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_vcm_tim) @@ -39,6 +40,27 @@ #define RK_VIDIOC_ZOOM_CORRECTION \ _IOR('V', BASE_VIDIOC_PRIVATE + 7, unsigned int) +#define RK_VIDIOC_FOCUS_SET_BACKLASH \ + _IOR('V', BASE_VIDIOC_PRIVATE + 8, unsigned int) +#define RK_VIDIOC_IRIS_SET_BACKLASH \ + _IOR('V', BASE_VIDIOC_PRIVATE + 9, unsigned int) +#define RK_VIDIOC_ZOOM_SET_BACKLASH \ + _IOR('V', BASE_VIDIOC_PRIVATE + 10, unsigned int) + +#define RK_VIDIOC_ZOOM1_TIMEINFO \ + _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_vcm_tim) +#define RK_VIDIOC_ZOOM1_CORRECTION \ + _IOR('V', BASE_VIDIOC_PRIVATE + 12, unsigned int) +#define RK_VIDIOC_ZOOM1_SET_BACKLASH \ + _IOR('V', BASE_VIDIOC_PRIVATE + 13, unsigned int) + +#define RK_VIDIOC_ZOOM_SET_POSITION \ + _IOW('V', BASE_VIDIOC_PRIVATE + 14, struct rk_cam_set_zoom) +#define RK_VIDIOC_FOCUS_SET_POSITION \ + _IOW('V', BASE_VIDIOC_PRIVATE + 15, struct rk_cam_set_focus) +#define RK_VIDIOC_MODIFY_POSITION \ + _IOW('V', BASE_VIDIOC_PRIVATE + 16, struct rk_cam_modify_pos) + #ifdef CONFIG_COMPAT #define RK_VIDIOC_COMPAT_VCM_TIMEINFO \ _IOR('V', BASE_VIDIOC_PRIVATE + 0, struct rk_cam_compat_vcm_tim) @@ -46,8 +68,32 @@ _IOR('V', BASE_VIDIOC_PRIVATE + 1, struct rk_cam_compat_vcm_tim) #define RK_VIDIOC_COMPAT_ZOOM_TIMEINFO \ _IOR('V', BASE_VIDIOC_PRIVATE + 2, struct rk_cam_compat_vcm_tim) +#define RK_VIDIOC_COMPAT_ZOOM1_TIMEINFO \ + _IOR('V', BASE_VIDIOC_PRIVATE + 11, struct rk_cam_compat_vcm_tim) #endif +struct rk_cam_modify_pos { + s32 focus_pos; + s32 zoom_pos; + s32 zoom1_pos; +}; + +struct rk_cam_set_focus { + bool is_need_reback; + s32 focus_pos; +}; + +struct rk_cam_zoom_pos { + s32 zoom_pos; + s32 focus_pos; +}; + +struct rk_cam_set_zoom { + bool is_need_reback; + u32 setzoom_cnt; + struct rk_cam_zoom_pos zoom_pos[VCMDRV_SETZOOM_MAXCNT]; +}; + struct rk_cam_vcm_tim { struct timeval vcm_start_t; struct timeval vcm_end_t;